]> git.ipfire.org Git - pbs.git/commitdiff
keys: Migrate to SQLModel
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 30 Jun 2025 10:36:34 +0000 (10:36 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 30 Jun 2025 10:36:34 +0000 (10:36 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/keys.py

index 7d689694ac79ee34023b749fa635fa575c1fee93..e831ca7df817201d09987e139f4b929744fea7bf 100644 (file)
@@ -6,6 +6,7 @@ import io
 import logging
 import pakfire
 import sqlalchemy
+import sqlmodel
 
 from sqlalchemy import Column, ForeignKey
 from sqlalchemy import DateTime, Integer, Numeric, Text
@@ -46,53 +47,50 @@ class Keys(base.Object):
 
                        return key
 
-class Key(database.Base, database.BackendMixin, database.SoftDeleteMixin):
+class Key(sqlmodel.SQLModel, database.BackendMixin, database.SoftDeleteMixin, table=True):
        __tablename__ = "keys"
 
        # ID
 
-       id = Column(Integer, primary_key=True)
+       id : int = sqlmodel.Field(primary_key=True, exclude=True)
 
        # Created At
 
-       created_at = Column(DateTime(timezone=False), nullable=False,
-               server_default=sqlalchemy.func.current_timestamp())
+       created_at : datetime.datetime = sqlmodel.Field(
+               sa_column_kwargs = {"server_default" : sqlalchemy.text("CURRENT_TIMESTAMP")}
+       )
 
        # Created By ID
 
-       created_by_id = Column(Integer, ForeignKey("users.id"))
+       created_by_id: int = sqlmodel.Field(foreign_key="users.id", exclude=True)
 
        # Created By
 
-       created_by = sqlalchemy.orm.relationship(
-               "User", foreign_keys=[created_by_id], lazy="selectin",
-       )
+       created_by: "User" = sqlmodel.Relationship()
 
        # Deleted By ID
 
-       deleted_by_id = Column(Integer, ForeignKey("users.id"))
+       #deleted_by_id: int = sqlmodel.Field(foreign_key="users.id", exclude=True)
 
        # Deleted By
 
-       deleted_by = sqlalchemy.orm.relationship(
-               "User", foreign_keys=[deleted_by_id], lazy="selectin",
-       )
+       #deleted_by: "User" = sqlmodel.Relationship()
 
        # Public Key
 
-       public_key = Column(Text, nullable=False)
+       public_key: str
 
        # Secret Key
 
-       secret_key = Column(Text, nullable=False)
+       secret_key: str = sqlmodel.Field(exclude=True)
 
        # Key ID
 
-       key_id = Column(Numeric, nullable=False)
+       key_id: int = sqlmodel.Field(sa_column=sqlalchemy.Column(sqlalchemy.Numeric, nullable=False))
 
        # Comment
 
-       comment = Column(Text)
+       comment: str
 
        def _make_key(self, pakfire):
                """