From: Michael Tremer Date: Mon, 30 Jun 2025 10:36:15 +0000 (+0000) Subject: distros: Migrate over to SQLModel X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bdae748fb0efd4291f617235126b71c5b3f864b8;p=pbs.git distros: Migrate over to SQLModel Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/distros.py b/src/buildservice/distros.py index b5df34d4..34c22d96 100644 --- a/src/buildservice/distros.py +++ b/src/buildservice/distros.py @@ -19,8 +19,10 @@ ############################################################################### 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