]> git.ipfire.org Git - pbs.git/commitdiff
database: Fix loads of incorrect joins
authorMichael Tremer <michael.tremer@ipfire.org>
Sun, 26 Jan 2025 13:31:15 +0000 (13:31 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sun, 26 Jan 2025 13:31:52 +0000 (13:31 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/builders.py
src/buildservice/jobs.py
src/buildservice/users.py

index dbbbfcad77a3786696d382865a8ffb3785cc5be9..7d58792138c1af471ee3509ec98f7d5df2265453 100644 (file)
@@ -540,9 +540,6 @@ class Builder(database.Base, database.BackendMixin, database.SoftDeleteMixin):
                return (
                        sqlalchemy
                        .select(
-                               jobs.Job,
-                       )
-                       .select_from(
                                self.backend.jobs.running_jobs,
                        )
                        .where(
@@ -558,9 +555,6 @@ class Builder(database.Base, database.BackendMixin, database.SoftDeleteMixin):
                stmt = (
                        sqlalchemy
                        .select(
-                               jobs.Job,
-                       )
-                       .select_from(
                                self.running_jobs,
                        )
                )
@@ -574,10 +568,9 @@ class Builder(database.Base, database.BackendMixin, database.SoftDeleteMixin):
                stmt = (
                        sqlalchemy
                        .select(
-                               sqlalchemy.func.count().label("running_jobs"),
-                       )
-                       .select_from(
-                               self.running_jobs,
+                               sqlalchemy.func.count(
+                                       self.running_jobs,
+                               ).label("running_jobs"),
                        )
                )
 
index be6476432fd016cd6b2601ade137c7e09e05a58f..85fc875f4c93661ba8be44017b5ce5e9ebaf253e 100644 (file)
@@ -105,9 +105,6 @@ class Jobs(base.Object):
                stmt = (
                        sqlalchemy
                        .select(
-                               Job,
-                       )
-                       .select_from(
                                self.running_jobs,
                        )
                )
@@ -222,6 +219,12 @@ class Queue(base.Object):
                        )
                        .select_from(Job)
 
+                       # Join builds
+                       .join(
+                               builds.Build,
+                               builds.Build.id == Job.build_id,
+                       )
+
                        # Filter out any deleted objects
                        .where(
                                builds.Build.deleted_at == None,
@@ -274,21 +277,16 @@ class Queue(base.Object):
                """
                stmt = (
                        sqlalchemy
-
-                       # Select jobs
                        .select(
                                Job,
                        )
-                       .select_from(Job)
-                       .join(
+                       .select_from(
                                self.queue,
-                               self.queue.c.job_id == Job.id,
                        )
-
-                       # Order them by their rank
-                       .order_by(self.queue.c.rank)
-
-                       # Optionally limit
+                       .join(
+                               Job,
+                               Job.id == self.queue.c.job_id,
+                       )
                        .limit(limit)
                )
 
@@ -300,17 +298,19 @@ class Queue(base.Object):
                """
                stmt = (
                        sqlalchemy
-
-                       # Select jobs
-                       .select(Job)
-
-                       # Filter by matching architectures
+                       .select(
+                               Job,
+                       )
+                       .select_from(
+                               self.queue,
+                       )
+                       .join(
+                               Job,
+                               Job.id == self.queue.c.job_id,
+                       )
                        .where(
-                               Job.arch in builder.supported_atches,
+                               Job.arch.in_(builder.supported_arches),
                        )
-
-                       # Order them by their rank
-                       .order_by(self.queue.c.rank)
                )
 
                return self.db.fetch(stmt)
index ad751a6f28d7ee5acede21d7c9ed9f62a6d6121a..5abc1b67594eaf0851b3447dea9591f4317f47c9 100644 (file)
@@ -397,6 +397,16 @@ class Users(base.Object):
                                ).label("used_build_time"),
                        )
 
+                       # Join builds & jobs
+                       .join(
+                               builds.Build,
+                               builds.Build.owner_id == User.id,
+                       )
+                       .join(
+                               jobs.Job,
+                               jobs.Job.build_id == builds.Build.id,
+                       )
+
                        # Filter out some things
                        .where(
                                User.deleted_at == None,