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

index b5df34d4c9b29f6f5e24e2e619f0dd980993c88b..34c22d9636442594f9525d217760781f10f154f7 100644 (file)
 ###############################################################################
 
 import logging
-
 import sqlalchemy
+import sqlmodel
+import typing
+
 from sqlalchemy import Column, Computed, ForeignKey
 from sqlalchemy import ARRAY, DateTime, Integer, Text
 
@@ -89,7 +91,7 @@ class Distros(base.Object):
                )
 
 
-class Distro(database.Base, database.BackendMixin, database.SoftDeleteMixin):
+class Distro(sqlmodel.SQLModel, database.BackendMixin, database.SoftDeleteMixin, table=True):
        __tablename__ = "distributions"
 
        def __lt__(self, other):
@@ -119,15 +121,15 @@ class Distro(database.Base, database.BackendMixin, database.SoftDeleteMixin):
 
        # ID
 
-       id = Column(Integer, primary_key=True)
+       id : int = sqlmodel.Field(primary_key=True, exclude=True)
 
        # Name
 
-       name = Column(Text, nullable=False)
+       name: str
 
        # Distro ID
 
-       distro_id = Column(Text, nullable=False)
+       distro_id: str
 
        # Version
 
@@ -137,7 +139,7 @@ class Distro(database.Base, database.BackendMixin, database.SoftDeleteMixin):
 
        # Version ID
 
-       version_id = Column(Integer, nullable=False)
+       version_id: int
 
        # Slug
 
@@ -147,31 +149,32 @@ class Distro(database.Base, database.BackendMixin, database.SoftDeleteMixin):
 
        # Slogan
 
-       slogan = Column(Text, nullable=False)
+       slogan: str
 
        # Codename
 
-       codename = Column(Text, nullable=False)
+       codename: str
 
        # Description
 
-       description = Column(Text, nullable=False)
+       description: str
 
        # Arches
 
-       arches = Column(ARRAY(Text), nullable=False)
+       arches: typing.List[str] = sqlmodel.Field(sa_column=Column(ARRAY(Text)))
 
        # Vendor
 
-       vendor = Column(Text, nullable=False)
+       vendor: str
 
        # Contact
 
-       contact = Column(Text, nullable=False)
+       contact: str
 
        # Tag
 
-       tag = Column(Text, Computed(distro_id + version_id), unique=True)
+       # XXX TODO
+       #tag = Column(Text, Computed(distro_id + version_id), unique=True)
 
        # Pakfire
 
@@ -184,15 +187,15 @@ class Distro(database.Base, database.BackendMixin, database.SoftDeleteMixin):
 
        # Custom Configuration
 
-       custom_config = Column(Text, nullable=False)
+       custom_config: str
 
        # Bugzilla Product
 
-       bugzilla_product = Column(Text, nullable=False)
+       bugzilla_product: str
 
        # Bugzilla Version
 
-       bugzilla_version = Column(Text, nullable=False)
+       bugzilla_version: str
 
        # Bugzilla Fields