]> git.ipfire.org Git - pbs.git/commitdiff
repositories: Refactor SQL statements to collect packages
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 9 Mar 2023 15:35:31 +0000 (15:35 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 9 Mar 2023 15:35:31 +0000 (15:35 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/repository.py

index 6ea60abe5e014817ad0bf8dcc0133e946ea40cdd..a60f1ee28d76a3ede0e70e94dad73c51fc25041c 100644 (file)
@@ -542,20 +542,53 @@ class Repository(base.DataObject):
 
        def get_packages(self, arch):
                if arch == "src":
-                       return self.backend.packages._get_packages("SELECT packages.* FROM repositories_builds \
-                               LEFT JOIN builds ON repositories_builds.build_id = builds.id \
-                               LEFT JOIN packages ON builds.pkg_id = packages.id \
-                               WHERE repositories_builds.repo_id = %s", self.id)
-
-               return self.backend.packages._get_packages("SELECT packages.* FROM repositories_builds \
-                               LEFT JOIN builds ON repositories_builds.build_id = builds.id \
-                               LEFT JOIN jobs ON builds.id = jobs.build_id \
-                               LEFT JOIN jobs_packages ON jobs.id = jobs_packages.job_id \
-                               LEFT JOIN packages ON jobs_packages.pkg_id = packages.id \
-                               WHERE repositories_builds.repo_id = %s \
-                                       AND (jobs.arch = %s OR jobs.arch = %s) \
-                                       AND (packages.arch = %s OR packages.arch = %s)",
-                               self.id, arch, "noarch", arch, "noarch")
+                       packages = self.backend.packages._get_packages("""
+                               SELECT
+                                       packages.*
+                               FROM
+                                       repositories_builds
+                               LEFT JOIN
+                                       builds ON repositories_builds.build_id = builds.id
+                               LEFT JOIN
+                                       packages ON builds.pkg_id = packages.id
+                               WHERE
+                                       builds.deleted_at IS NULL
+                               AND
+                                       packages.deleted_at IS NULL
+                               AND
+                                       repositories_builds.repo_id = %s
+                               """, self.id,
+                       )
+
+               else:
+                       packages = self.backend.packages._get_packages("""
+                               SELECT
+                                       packages.*
+                               FROM
+                                       repositories_builds
+                               LEFT JOIN
+                                       builds ON repositories_builds.build_id = builds.id
+                               LEFT JOIN
+                                       jobs ON builds.id = jobs.build_id
+                               LEFT JOIN
+                                       jobs_packages ON jobs.id = jobs_packages.job_id
+                               LEFT JOIN
+                                       packages ON jobs_packages.pkg_id = packages.id
+                               WHERE
+                                       builds.deleted_at IS NULL
+                               AND
+                                       jobs.deleted_at IS NULL
+                               AND
+                                       packages.deleted_at IS NULL
+                               AND
+                                       repositories_builds.repo_id = %s
+                               AND
+                                       packages.arch = ANY(%s)
+                               """,
+                               self.id, [arch, "noarch"],
+                       )
+
+               return list(packages)
 
        # Stats