From: Michael Tremer Date: Wed, 7 Jun 2023 10:26:21 +0000 (+0000) Subject: packages: Fix search for filenames X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f80f3bcd601c0e48e64ce45e4a78e81357ff0374;p=pbs.git packages: Fix search for filenames Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/packages.py b/src/buildservice/packages.py index 61ec38ff..390030b9 100644 --- a/src/buildservice/packages.py +++ b/src/buildservice/packages.py @@ -189,45 +189,44 @@ class Packages(base.Object): This function does not work for UUIDs or filenames. """ packages = self._get_packages(""" + WITH search AS ( + SELECT + packages.id AS package_id + FROM + package_search_index search_index + JOIN + packages ON search_index.package_id = packages.id + AND + search_index.document @@ websearch_to_tsquery('english', %s) + ORDER BY + ts_rank(search_index.document, websearch_to_tsquery('english', %s)) DESC + LIMIT + %s + ) + SELECT + DISTINCT ON (packages.name) packages.* FROM - package_search_index search_index - LEFT JOIN - packages ON search_index.package_id = packages.id + search LEFT JOIN - builds ON packages.id = builds.pkg_id - WHERE - packages.deleted_at IS NULL - AND - builds.deleted_at IS NULL - AND - search_index.document @@ websearch_to_tsquery('english', %s) - ORDER BY - ts_rank(search_index.document, websearch_to_tsquery('english', %s)) DESC - LIMIT %s""", - q, q, limit, + packages ON search.package_id = packages.id + """, q, q, limit, ) return list(packages) - def refresh_search_index(self): - """ - Updates the search index for packages - """ - self.db.execute("REFRESH MATERIALIZED VIEW package_search_index") - def search_by_filename(self, filename, limit=None): packages = self._get_packages(""" SELECT DISTINCT ON (packages.name) packages.* FROM - filelists + package_files LEFT JOIN - packages ON filelists.pkg_id = packages.id + packages ON package_files.pkg_id = packages.id WHERE - filelists.path = %s + package_files.path = %s ORDER BY packages.name, packages.build_time DESC