import sqlalchemy
import sqlmodel
-from sqlalchemy import Column, ForeignKey
-from sqlalchemy import Boolean, DateTime, Integer, Text
-
from . import base
from . import builds
from . import database
# Setup logging
log = logging.getLogger("pbs.repositories")
-class RepoBuild(database.Base):
+class RepoBuild(sqlmodel.SQLModel, table=True):
__tablename__ = "repository_builds"
# ID
- id = Column(Integer, primary_key=True)
+ id: int = sqlmodel.Field(primary_key=True, exclude=True)
# Repo ID
- repo_id = Column(Integer, ForeignKey("repositories.id"), nullable=False)
+ repo_id: int = sqlmodel.Field(foreign_key="repositories.id", exclude=True)
# Repo
- repo = sqlalchemy.orm.relationship("Repo", foreign_keys=[repo_id],
- lazy="joined", innerjoin=True)
+ repo: "Repo" = sqlmodel.Relationship(
+ sa_relationship_kwargs={ "lazy" : "selectin" },
+ )
# Build ID
- build_id = Column(Integer, ForeignKey("builds.id"), nullable=False)
+ build_id: int = sqlmodel.Field(foreign_key="builds.id", exclude=True)
# Build
- build = sqlalchemy.orm.relationship("Build", foreign_keys=[build_id],
- lazy="joined", innerjoin=True)
+ build: "Build" = sqlmodel.Relationship(
+ sa_relationship_kwargs={ "lazy" : "joined", "innerjoin" : True },
+ )
# Added At
- added_at = Column(DateTime(timezone=False), nullable=False,
- default=sqlalchemy.func.current_timestamp())
+ added_at: datetime.datetime = sqlmodel.Field(
+ sa_column_kwargs = {"server_default" : sqlalchemy.text("CURRENT_TIMESTAMP")}
+ )
# Added By ID
- added_by_id = Column(Integer, ForeignKey("users.id"), nullable=False)
+ added_by_id: int = sqlmodel.Field(foreign_key="users.id", exclude=True)
# Added By
- added_by = sqlalchemy.orm.relationship(
- "User", foreign_keys=[added_by_id], lazy="selectin",
+ added_by: "User" = sqlmodel.Relationship(
+ sa_relationship_kwargs={
+ "foreign_keys" : "[RepoBuild.added_by_id]",
+ "lazy" : "selectin",
+ },
)
# Removed At
- removed_at = Column(DateTime(timezone=False))
+ removed_at: datetime.datetime | None = None
# Removed By ID
- removed_by_id = Column(Integer, ForeignKey("users.id"))
+ removed_by_id: int = sqlmodel.Field(foreign_key="users.id", exclude=True)
# Removed By
- removed_by = sqlalchemy.orm.relationship(
- "User", foreign_keys=[removed_by_id], lazy="selectin",
+ removed_by: "User" = sqlmodel.Relationship(
+ sa_relationship_kwargs={
+ "foreign_keys" : "[RepoBuild.removed_by_id]",
+ "lazy" : "selectin",
+ },
)
# Remove!