From: Michael Tremer Date: Mon, 17 Oct 2022 17:22:15 +0000 (+0000) Subject: search: Make search for filenames more sane X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=13e6bc47231de14fa2d21788906bf8120a56df08;p=pbs.git search: Make search for filenames more sane Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/packages.py b/src/buildservice/packages.py index 3c9f2e7d..7761ab3b 100644 --- a/src/buildservice/packages.py +++ b/src/buildservice/packages.py @@ -187,21 +187,25 @@ class Packages(base.Object): self.db.execute("REFRESH MATERIALIZED VIEW package_search_index") def search_by_filename(self, filename, limit=None): - query = "SELECT filelists.* FROM filelists \ - JOIN packages ON filelists.pkg_id = packages.id \ - WHERE filelists.name = %s ORDER BY packages.build_time DESC" - args = [filename,] - - if limit: - query += " LIMIT %s" - args.append(limit) - - files = [] - for result in self.db.query(query, *args): - pkg = Package(self.backend, result.pkg_id) - files.append((pkg, result)) + packages = self._get_packages(""" + SELECT + DISTINCT ON (packages.name) + packages.* + FROM + filelists + LEFT JOIN + packages ON filelists.pkg_id = packages.id + WHERE + filelists.path = %s + ORDER BY + packages.name, + packages.build_time DESC + LIMIT + %s + """, filename, limit, + ) - return files + return list(packages) class Package(base.DataObject): diff --git a/src/templates/search.html b/src/templates/search.html index c86d498f..2ee5845f 100644 --- a/src/templates/search.html +++ b/src/templates/search.html @@ -74,10 +74,10 @@ {% for file in files %} - {{ file.name }} + {{ file.name }} - {{ file.pkg }} + {{ file }} {% end %}