from sqlalchemy import Index, Column, JSON from sqlmodel import Field, SQLModel, Relationship class ConfluenceSpace(SQLModel, table=True): __tablename__ = "confluence_spaces" __table_args__ = ( Index("uni_cs_on_site_id_space_id", "site_id", "id", unique=True), Index("uni_cs_on_site_id_space_key", "site_id", "key", unique=True), ) guid: str = Field(primary_key=True, description="SITE-{site_id}-SPACE-{space_id}") id: str = Field(nullable=False, max_length=32) key: str = Field(nullable=False, max_length=32) name: str = Field(nullable=False, max_length=32) config: dict = Field(default={}, sa_column=Column(JSON)) site_id: int = Field(nullable=False, foreign_key="confluence_sites.id") site: "ConfluenceSite" = Relationship( sa_relationship_kwargs={ "lazy": "joined", "primaryjoin": "ConfluenceSpace.site_id == ConfluenceSite.id", }, )