###############################################################################
import logging
-
import sqlalchemy
+import sqlmodel
+import typing
+
from sqlalchemy import Column, Computed, ForeignKey
from sqlalchemy import ARRAY, DateTime, Integer, Text
)
-class Distro(database.Base, database.BackendMixin, database.SoftDeleteMixin):
+class Distro(sqlmodel.SQLModel, database.BackendMixin, database.SoftDeleteMixin, table=True):
__tablename__ = "distributions"
def __lt__(self, other):
# 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
# Version ID
- version_id = Column(Integer, nullable=False)
+ version_id: int
# Slug
# 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
# 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