Example #1
0
class DataUpload(SQLModel, table=True):

    __tablename__ = "data_upload"
    __table_args__ = {"schema": "customer"}

    id: Optional[int] = Field(sa_column=Column(Integer, primary_key=True, autoincrement=True))
    data_type: str = Field(sa_column=Column(Text, nullable=False))
    upload_type: str = Field(sa_column=Column(Text, nullable=False))
    upload_grid_ids: Optional[List[str]] = Field(
        sa_column=Column(ARRAY(Text()), nullable=False, server_default=text("'{}'::text[]"))
    )
    upload_size: int = Field(nullable=False)
    creation_date: Optional[datetime] = Field(
        sa_column=Column(DateTime, server_default=text("CURRENT_TIMESTAMP"))
    )
    user_id: int = Field(
        sa_column=Column(
            Integer, ForeignKey("customer.user.id", ondelete="CASCADE"), nullable=False
        )
    )
    study_area_id: int = Field(
        sa_column=Column(
            Integer, ForeignKey("basic.study_area.id"), nullable=False
        )
    )
    reached_poi_heatmap_computed: Optional[bool]

    user: "******" = Relationship(back_populates="data_uploads")
    study_area: "StudyArea" = Relationship(back_populates="data_uploads")
    pois_user: List["PoiUser"] = Relationship(back_populates="data_upload")
    aois_user: List["AoiUser"] = Relationship(back_populates="data_upload")
Example #2
0
class Scenario(SQLModel, table=True):
    __tablename__ = "scenario"
    __table_args__ = {"schema": "customer"}

    id: Optional[int] = Field(sa_column=Column(Integer, primary_key=True, autoincrement=True))
    scenario_name: str = Field(sa_column=Column(Text, nullable=False))
    routing_heatmap_computed: Optional[bool]
    creation_date: Optional[datetime] = Field(
        sa_column=Column(DateTime, server_default=text("CURRENT_TIMESTAMP"))
    )
    user_id: int = Field(
        sa_column=Column(
            Integer, ForeignKey("customer.user.id", ondelete="CASCADE"), nullable=False
        ),
    )
    data_upload_ids: Optional[List[int]] = Field(
        sa_column=Column(ARRAY(Integer()), server_default=text("'{}'::int[]"))
    ) 
    study_area_id: int = Field(
        sa_column=Column(Integer, ForeignKey("basic.study_area.id"), nullable=False)
    )

    user: "******" = Relationship(back_populates="scenarios")
    isochrone_calculations: List["IsochroneCalculation"] = Relationship(back_populates="scenario")
    pois_modified: List["PoiModified"] = Relationship(back_populates="scenario")
    aois_modified: List["AoiModified"] = Relationship(back_populates="scenario")
    populations_modified: List["PopulationModified"] = Relationship(back_populates="scenario")
    buildings_modified: List["BuildingModified"] = Relationship(back_populates="scenario")
    edges: List["Edge"] = Relationship(back_populates="scenario")
    ways_modified: List["WayModified"] = Relationship(back_populates="scenario")
    nodes: List["Node"] = Relationship(back_populates="scenario")
Example #3
0
class BuildingModified(BuildingBase, table=True):
    __tablename__ = "building_modified"
    __table_args__ = {"schema": "customer"}

    creation_date: Optional[datetime] = Field(
        sa_column=Column(DateTime, server_default=text("CURRENT_TIMESTAMP"))
    )
    building_id: Optional[int] = Field(
        sa_column=Column(
            Integer, ForeignKey("basic.building.id", ondelete="CASCADE"), default=None
        ),
    )
    scenario_id: int = Field(
        sa_column=Column(
            Integer,
            ForeignKey("customer.scenario.id", ondelete="CASCADE"),
            index=True,
            nullable=False,
        ),
    )
    population: Optional[float] = Field(sa_column=Column(Float(53)))
    building: Optional["Building"] = Relationship(back_populates="buildings_modified")
    scenario: "Scenario" = Relationship(back_populates="buildings_modified")
    populations_modified: Optional[List["PopulationModified"]] = Relationship(
        back_populates="building_modified"
    )
    edit_type: str = Field(sa_column=Column(Text, nullable=False, index=True))
    outdated: Optional[bool] = Field(sa_column=Column(Boolean, default=False))
Example #4
0
class IsochroneCalculation(SQLModel, table=True):
    __tablename__ = "isochrone_calculation"
    __table_args__ = {"schema": "customer"}

    id: Optional[int] = Field(
        sa_column=Column(Integer, primary_key=True, autoincrement=True))
    calculation_type: str = Field(sa_column=Column(Text, nullable=False))
    starting_point: str = Field(sa_column=Column(Text, nullable=False))
    routing_profile: str = Field(sa_column=Column(Text, nullable=False))
    speed: float = Field(sa_column=Column(Float(53), nullable=False))
    modus: str = Field(sa_column=Column(Text, nullable=False))
    creation_date: Optional[datetime] = Field(
        sa_column=Column(DateTime, server_default=text("CURRENT_TIMESTAMP")))
    parent_id: Optional[int] = Field(sa_column=Column(
        Integer,
        ForeignKey("customer.isochrone_calculation.id", ondelete="CASCADE")))
    scenario_id: Optional[int] = Field(sa_column=Column(
        Integer, ForeignKey("customer.scenario.id", ondelete="CASCADE")))
    user_id: int = Field(
        sa_column=Column(Integer,
                         ForeignKey("customer.user.id", ondelete="CASCADE"),
                         nullable=False))

    scenario: Optional["Scenario"] = Relationship(
        back_populates="isochrone_calculations")
    user: "******" = Relationship(back_populates="isochrone_calculations")
    isochrone_features: "IsochroneFeature" = Relationship(
        back_populates="isochrone_calculation")
Example #5
0
class User(UserBase, table=True):
    __tablename__ = "user"
    __table_args__ = {"schema": "customer"}

    id: Optional[int] = Field(
        sa_column=Column(Integer, primary_key=True, autoincrement=True))
    hashed_password: Optional[str] = Field(
        sa_column=Column(Text, nullable=False))
    is_active: Optional[bool] = Field(default=False)
    newsletter: Optional[bool] = Field(default=False)
    occupation: Optional[str] = Field(sa_column=Column(Text, nullable=True))
    domain: Optional[str] = Field(sa_column=Column(Text, nullable=True))
    creation_date: Optional[datetime] = Field(
        sa_column=Column(DateTime, server_default=text("CURRENT_TIMESTAMP")))
    organization_id: int = Field(sa_column=Column(
        Integer,
        ForeignKey("customer.organization.id", ondelete="CASCADE"),
        nullable=False))
    active_study_area_id: int = Field(sa_column=Column(
        Integer, ForeignKey("basic.study_area.id"), nullable=False))
    language_preference: str = Field(sa_column=Column(Text, nullable=False))

    organization: "Organization" = Relationship(back_populates="users")
    roles: List["Role"] = Relationship(back_populates="users",
                                       link_model=UserRole)
    scenarios: List["Scenario"] = Relationship(back_populates="user")
    study_areas: List["StudyArea"] = Relationship(back_populates="users",
                                                  link_model=UserStudyArea)
    data_uploads: List["DataUpload"] = Relationship(back_populates="user")
    isochrone_calculations: List["IsochroneCalculation"] = Relationship(
        back_populates="user")
    user_customizations: List["UserCustomization"] = Relationship(
        back_populates="users")
    opportunity_user_configs: List["OpportunityUserConfig"] = Relationship(
        back_populates="user")
Example #6
0
class UserCustomization(SQLModel, table=True):
    __tablename__ = "user_customization"
    __table_args__ = {"schema": "customer"}

    id: Optional[int] = Field(sa_column=Column(Integer, primary_key=True, autoincrement=True))
    setting: dict = Field(sa_column=Column(JSONB, nullable=False))
    creation_date: Optional[datetime] = Field(
        sa_column=Column(DateTime, server_default=text("CURRENT_TIMESTAMP"))
    )
    user_id: int = Field(
        sa_column=Column(
            Integer, ForeignKey("customer.user.id", ondelete="CASCADE"), nullable=False
        )
    )
    customization_id: int = Field(
        sa_column=Column(
            Integer, ForeignKey("customer.customization.id", ondelete="CASCADE"), nullable=False
        )
    )
    study_area_id: int = Field(
        sa_column=Column(
            Integer, ForeignKey("basic.study_area.id"), nullable=False
        )
    )
    customizations: "Customization" = Relationship(back_populates="user_customizations")
    users: "User" = Relationship(back_populates="user_customizations")
    study_areas: "StudyArea" = Relationship(back_populates="user_customizations")
Example #7
0
class Organization(SQLModel, table=True):
    __tablename__ = "organization"
    __table_args__ = {"schema": "customer"}

    id: Optional[int] = Field(sa_column=Column(Integer, primary_key=True, autoincrement=True))
    name: Optional[str] = Field(sa_column=Column(Text, nullable=False))
    creation_date: Optional[datetime] = Field(
        sa_column=Column(DateTime, server_default=text("CURRENT_TIMESTAMP"))
    )

    users: List["User"] = Relationship(back_populates="organization")
Example #8
0
class AoiModified(AoiBase, table=True):
    __tablename__ = "aoi_modified"
    __table_args__ = {"schema": "customer"}

    creation_date: Optional[datetime] = Field(
        sa_column=Column(DateTime, server_default=text("CURRENT_TIMESTAMP")))
    scenario_id: Optional[int] = Field(sa_column=Column(
        Integer,
        ForeignKey("customer.scenario.id", ondelete="CASCADE"),
        index=True))

    scenario: Optional["Scenario"] = Relationship(
        back_populates="aois_modified")
Example #9
0
class AoiUser(AoiBase, table=True):
    __tablename__ = "aoi_user"
    __table_args__ = {"schema": "customer"}

    creation_date: Optional[datetime] = Field(
        sa_column=Column(DateTime, server_default=text("CURRENT_TIMESTAMP")))
    data_upload_id: int = Field(sa_column=Column(
        Integer,
        ForeignKey("customer.data_upload.id", ondelete="CASCADE"),
        index=True,
        nullable=False,
    ))

    data_upload: Optional["DataUpload"] = Relationship(
        back_populates="aois_user")
Example #10
0
class UserBase(SQLModel):
    name: str = Field(sa_column=Column(Text, nullable=False))
    surname: str = Field(sa_column=Column(Text, nullable=False))
    email: EmailStr = Field(sa_column=Column(Text, nullable=False))

    organization_id: int = Field(sa_column=Column(
        Integer,
        ForeignKey("customer.organization.id", ondelete="CASCADE"),
        nullable=False))
    active_study_area_id: int = Field(sa_column=Column(
        Integer, ForeignKey("basic.study_area.id"), nullable=False))
    active_data_upload_ids: List[int] = Field(
        sa_column=Column(ARRAY(Integer()), server_default=text("'{}'::int[]")))
    storage: int = Field(sa_column=Column(Integer), nullable=False)
    limit_scenarios: int = Field(sa_column=Column(Integer), nullable=False)
Example #11
0
class UserStudyArea(SQLModel, table=True):
    __tablename__ = "user_study_area"
    __table_args__ = {"schema": "customer"}

    id: Optional[int] = Field(
        sa_column=Column(Integer, primary_key=True, autoincrement=True))
    creation_date: Optional[datetime] = Field(
        sa_column=Column(DateTime, server_default=text("CURRENT_TIMESTAMP")))
    user_id: int = Field(sa_column=Column(Integer,
                                          ForeignKey("customer.user.id",
                                                     ondelete="CASCADE"),
                                          nullable=False), )
    study_area_id: int = Field(
        sa_column=Column(Integer,
                         ForeignKey("basic.study_area.id", ondelete="CASCADE"),
                         nullable=False))
Example #12
0
class WayModified(EdgeBase, table=True):
    __tablename__ = "way_modified"
    __table_args__ = {"schema": "customer"}
    id: Optional[int] = Field(sa_column=Column(Integer, primary_key=True, autoincrement=True))
    way_type: Optional[str] = Field(sa_column=Column(Text))
    edit_type: Optional[str] = Field(sa_column=Column(Text))
    creation_date: Optional[datetime] = Field(
        sa_column=Column(DateTime, server_default=text("CURRENT_TIMESTAMP"))
    )
    way_id: Optional[int] = Field(index=True, default=None, foreign_key="basic.edge.id")
    scenario_id: Optional[int] = Field(
        sa_column=Column(
            Integer, ForeignKey("customer.scenario.id", ondelete="CASCADE"), index=True
        )
    )
    outdated: Optional[bool] = Field(sa_column=Column(Boolean, default=False))

    scenario: Optional["Scenario"] = Relationship(back_populates="ways_modified")
Example #13
0
class PoiModified(PoiBase, table=True):
    __tablename__ = "poi_modified"
    __table_args__ = {"schema": "customer"}
    uid: str = Field(sa_column=Column(Text, nullable=False, index=True))
    edit_type: str = Field(sa_column=Column(Text, nullable=False, index=True))
    creation_date: Optional[datetime] = Field(
        sa_column=Column(DateTime, server_default=text("CURRENT_TIMESTAMP")))
    scenario_id: Optional[int] = Field(sa_column=Column(
        Integer,
        ForeignKey("customer.scenario.id", ondelete="CASCADE"),
        nullable=False,
        index=True), )
    data_upload_id: Optional[int] = Field(sa_column=Column(
        Integer,
        ForeignKey("customer.data_upload.id", ondelete="CASCADE"),
        index=True), )
    outdated: Optional[bool] = Field(sa_column=Column(Boolean, default=False))
    scenario: Optional["Scenario"] = Relationship(
        back_populates="pois_modified")
Example #14
0
class IsochroneFeature(SQLModel, table=True):
    __tablename__ = "isochrone_feature"
    __table_args__ = {"schema": "customer"}

    id: Optional[int] = Field(
        sa_column=Column(Integer, primary_key=True, autoincrement=True))
    step: int = Field(nullable=False)
    reached_opportunities: Optional[dict] = Field(
        sa_column=Column(JSONB, server_default=text("1::jsonb")))
    geom: str = Field(sa_column=Column(
        Geometry(
            geometry_type="MultiPolygon", srid="4326", spatial_index=False),
        nullable=False,
    ))
    isochrone_calculation_id: int = Field(sa_column=Column(
        Integer,
        ForeignKey("customer.isochrone_calculation.id", ondelete="CASCADE"),
        index=True,
        nullable=False,
    ))

    isochrone_calculation: "IsochroneCalculation" = Relationship(
        back_populates="isochrone_features")
Example #15
0
class PopulationModified(PopulationBase, table=True):
    __tablename__ = "population_modified"
    __table_args__ = {"schema": "customer"}

    creation_date: Optional[datetime] = Field(
        sa_column=Column(DateTime, server_default=text("CURRENT_TIMESTAMP")))
    building_modified_id: int = Field(sa_column=Column(
        Integer,
        ForeignKey("customer.building_modified.id", ondelete="CASCADE"),
        index=True,
        nullable=False,
    ), )

    scenario_id: Optional[int] = Field(sa_column=Column(
        Integer,
        ForeignKey("customer.scenario.id", ondelete="CASCADE"),
        index=True,
        nullable=False,
    ), )
    building_modified: "BuildingModified" = Relationship(
        back_populates="populations_modified")
    scenario: Optional["Scenario"] = Relationship(
        back_populates="populations_modified")