From: Michael Tremer Date: Mon, 18 Sep 2023 10:04:35 +0000 (+0000) Subject: packages: Allow searching for files with wildcards X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a7d42b0bf65ae7d508180a53295f3c2aa1a4e711;p=pbs.git packages: Allow searching for files with wildcards Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/packages.py b/src/buildservice/packages.py index cf26255b..4c2d10c8 100644 --- a/src/buildservice/packages.py +++ b/src/buildservice/packages.py @@ -258,23 +258,45 @@ class Packages(base.Object): return list(packages) def search_by_filename(self, filename, limit=None): - packages = self._get_packages(""" - SELECT - DISTINCT ON (packages.name) - packages.* - FROM - package_files - LEFT JOIN - packages ON package_files.pkg_id = packages.id - WHERE - package_files.path = %s - ORDER BY - packages.name, - packages.build_time DESC - LIMIT - %s - """, filename, limit, - ) + if "*" in filename: + filename = filename.replace("*", "%") + + packages = self._get_packages(""" + SELECT + DISTINCT ON (packages.name) + packages.* + FROM + package_files + LEFT JOIN + packages ON package_files.pkg_id = packages.id + WHERE + package_files.path LIKE %s + ORDER BY + packages.name, + packages.build_time DESC + LIMIT + %s + """, filename, limit, + ) + + else: + packages = self._get_packages(""" + SELECT + DISTINCT ON (packages.name) + packages.* + FROM + package_files + LEFT JOIN + packages ON package_files.pkg_id = packages.id + WHERE + package_files.path = %s + ORDER BY + packages.name, + packages.build_time DESC + LIMIT + %s + """, filename, limit, + ) return list(packages)