]> git.ipfire.org Git - pbs.git/commitdiff
packages: Refactor package listing
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 28 Jun 2022 09:51:44 +0000 (09:51 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 28 Jun 2022 09:52:25 +0000 (09:52 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/packages.py

index 1ea841cbe4c62ee97d963d62e946498e65268738..c374126ad51cf651397cdccd31c680b037ac2982 100644 (file)
@@ -30,18 +30,31 @@ class Packages(base.Object):
                for row in res:
                        yield Package(self.backend, row.id, data=row)
 
-       def get_by_id(self, pkg_id):
-               return self._get_package("SELECT * FROM packages \
-                       WHERE id = %s", pkg_id)
-
        def get_list(self):
                """
                        Returns a list with all package names and the summary line
                        that have at one time been part of the distribution
                """
-               return self.db.query("SELECT DISTINCT packages.name AS name, packages.summary AS summary FROM builds \
-                       LEFT JOIN packages ON builds.pkg_id = packages.id \
-                       WHERE builds.type = %s AND builds.state != %s", "release", "obsolete")
+               return self.db.query("""
+                       SELECT
+                               DISTINCT ON (packages.name)
+                               packages.name AS name,
+                               packages.summary AS summary,
+                               packages.created_at
+                       FROM
+                               packages
+                       WHERE
+                               deleted IS FALSE
+                       AND
+                               arch = %s
+                       ORDER BY
+                               name, created_at DESC""",
+                       "src",
+               )
+
+       def get_by_id(self, pkg_id):
+               return self._get_package("SELECT * FROM packages \
+                       WHERE id = %s", pkg_id)
 
        def get_by_uuid(self, uuid):
                return self._get_package("""