Spaces:
Sleeping
Sleeping
File size: 4,153 Bytes
09ecaf7 1686de5 09ecaf7 1686de5 09ecaf7 d25db6b 09ecaf7 d25db6b 09ecaf7 1686de5 d25db6b 1686de5 09ecaf7 d25db6b 09ecaf7 d25db6b 09ecaf7 d25db6b 1686de5 d25db6b 1686de5 d25db6b 09ecaf7 d7291ef 1686de5 d7291ef 1686de5 09ecaf7 d25db6b 1686de5 65933cd 1686de5 65933cd 1686de5 09ecaf7 d25db6b 09ecaf7 65933cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
from sqlalchemy import (
Column, String, DateTime, SmallInteger, Table, ForeignKey, Boolean,
CheckConstraint, UniqueConstraint, Text
)
from sqlalchemy.dialects.postgresql import UUID, TIMESTAMP, CHAR, JSONB
from sqlalchemy.orm import relationship
import datetime, uuid
from .database import Base
image_countries = Table(
"image_countries", Base.metadata,
Column(
"image_id",
UUID(as_uuid=True),
ForeignKey("images.image_id", ondelete="CASCADE"),
primary_key=True,
),
Column(
"c_code",
CHAR(2),
ForeignKey("countries.c_code"),
primary_key=True,
),
)
class Source(Base):
__tablename__ = "sources"
s_code = Column(String, primary_key=True)
label = Column(String, nullable=False)
class Region(Base):
__tablename__ = "regions"
r_code = Column(String, primary_key=True)
label = Column(String, nullable=False)
class EventType(Base):
__tablename__ = "event_types"
t_code = Column(String, primary_key=True)
label = Column(String, nullable=False)
class Country(Base):
__tablename__ = "countries"
c_code = Column(CHAR(2), primary_key=True)
label = Column(String, nullable=False)
r_code = Column(String, ForeignKey("regions.r_code"), nullable=False)
class SpatialReference(Base):
__tablename__ = "spatial_references"
epsg = Column(String, primary_key=True)
srid = Column(String, nullable=False)
proj4 = Column(String, nullable=False)
wkt = Column(String, nullable=False)
class ImageTypes(Base):
__tablename__ = "image_types"
image_type = Column(String, primary_key=True)
label = Column(String, nullable=False)
class Models(Base):
__tablename__ = "models"
m_code = Column(String, primary_key=True)
label = Column(String, nullable=False)
model_type = Column(String, nullable=False)
is_available = Column(Boolean, default=True)
config = Column(JSONB, nullable=True)
class JSONSchema(Base):
__tablename__ = "json_schemas"
schema_id = Column(String, primary_key=True)
title = Column(String, nullable=False)
schema = Column(JSONB, nullable=False)
version = Column(String, nullable=False)
created_at = Column(TIMESTAMP(timezone=True), default=datetime.datetime.utcnow)
class Images(Base):
__tablename__ = "images"
__table_args__ = (
CheckConstraint('accuracy IS NULL OR (accuracy BETWEEN 0 AND 100)', name='chk_images_accuracy'),
CheckConstraint('context IS NULL OR (context BETWEEN 0 AND 100)', name='chk_images_context'),
CheckConstraint('usability IS NULL OR (usability BETWEEN 0 AND 100)', name='chk_images_usability'),
)
image_id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
file_key = Column(String, nullable=False)
sha256 = Column(String, nullable=False)
source = Column(String, ForeignKey("sources.s_code"), nullable=False)
event_type = Column(String, ForeignKey("event_types.t_code"), nullable=False)
epsg = Column(String, ForeignKey("spatial_references.epsg"), nullable=False)
image_type = Column(String, ForeignKey("image_types.image_type"), nullable=False)
created_at = Column(TIMESTAMP(timezone=True), default=datetime.datetime.utcnow)
captured_at = Column(TIMESTAMP(timezone=True))
title = Column(String, nullable=True)
prompt = Column(String, nullable=True)
model = Column(String, ForeignKey("models.m_code"), nullable=True)
schema_id = Column(String, ForeignKey("json_schemas.schema_id"), nullable=True)
raw_json = Column(JSONB, nullable=True)
generated = Column(Text, nullable=True)
edited = Column(Text)
accuracy = Column(SmallInteger)
context = Column(SmallInteger)
usability = Column(SmallInteger)
starred = Column(Boolean, default=False)
updated_at = Column(TIMESTAMP(timezone=True), onupdate=datetime.datetime.utcnow)
countries = relationship("Country", secondary=image_countries, backref="images")
schema = relationship("JSONSchema")
model_r = relationship("Models", foreign_keys=[model])
|