]> git.ipfire.org Git - pbs.git/commitdiff
packages: Allow searching for files with wildcards
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 18 Sep 2023 10:04:35 +0000 (10:04 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 18 Sep 2023 10:04:35 +0000 (10:04 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/packages.py

index cf26255b22162d50e5e0c4ec2ce11da720707a46..4c2d10c821d318c7618aa9276fbc7249fb9fba2c 100644 (file)
@@ -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)