]> git.ipfire.org Git - pbs.git/commitdiff
jobs: Turn JobPackage into a model
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 6 Feb 2025 17:50:57 +0000 (17:50 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 6 Feb 2025 17:50:57 +0000 (17:50 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/jobs.py
src/buildservice/repos.py

index 934b8d861393e626745ca332665ba090bcf7f0a6..008d2bf1af5106a7c690dadb3b9e76fbdb650e23 100644 (file)
@@ -28,15 +28,27 @@ from .errors import *
 # Setup logging
 log = logging.getLogger("pbs.jobs")
 
-JobPackage = sqlalchemy.Table(
-       "job_packages", database.Base.metadata,
+class JobPackage(database.Base):
+       __tablename__ = "job_packages"
+
+       # Job ID
+
+       job_id = Column(Integer, ForeignKey("jobs.id"), primary_key=True, nullable=False)
 
        # Job
-       Column("job_id", ForeignKey("jobs.id"), nullable=False),
+
+       job = sqlalchemy.orm.relationship("Job", foreign_keys=[job_id],
+               viewonly=True, lazy="joined", innerjoin=True)
+
+       # Package ID
+
+       pkg_id = Column(Integer, ForeignKey("packages.id"), primary_key=True, nullable=False)
 
        # Package
-       Column("pkg_id", ForeignKey("packages.id"), nullable=False),
-)
+
+       pkg = sqlalchemy.orm.relationship("Package", foreign_keys=[pkg_id],
+               viewonly=True, lazy="joined", innerjoin=True)
+
 
 class Jobs(base.Object):
        def init(self):
@@ -468,7 +480,7 @@ class Job(database.Base, database.BackendMixin, database.SoftDeleteMixin):
 
        # Binary Packages
 
-       packages = sqlalchemy.orm.relationship("Package", secondary=JobPackage, lazy="selectin")
+       packages = sqlalchemy.orm.relationship("Package", secondary="job_packages", lazy="selectin")
 
        async def _import_packages(self, uploads):
                """
index 7a58537c38d64997a69135f9b9879fa7aabff28a..aba08ebbe4f433117446f5edc692f52bdd5198cd 100644 (file)
@@ -609,11 +609,11 @@ class Repo(database.Base, database.BackendMixin, database.SoftDeleteMixin):
                        )
                        .join(
                                jobs.JobPackage,
-                               jobs.JobPackage.c.job_id == jobs.Job.id,
+                               jobs.JobPackage.job_id == jobs.Job.id,
                        )
                        .join(
                                packages.Package,
-                               packages.Package.id == jobs.JobPackage.c.pkg_id,
+                               packages.Package.id == jobs.JobPackage.pkg_id,
                        )
                        .where(
                                packages.Package.deleted_at == None,