From 97cc6196ebc38318b29c90eadc3f0d1c8945289a Mon Sep 17 00:00:00 2001
From: Muflone <muflone@archlinux.org>
Date: Wed, 21 Aug 2024 01:36:15 +0200
Subject: [PATCH] fix: reduce the number of subqueries against Packages by
 preloading the existing dependencies names from AUR

---
 aurweb/routers/packages.py                        | 11 +++++++++++
 templates/partials/packages/package_metadata.html |  2 +-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/aurweb/routers/packages.py b/aurweb/routers/packages.py
index 30d0d896c..13f304943 100644
--- a/aurweb/routers/packages.py
+++ b/aurweb/routers/packages.py
@@ -190,6 +190,17 @@ async def package(
     if not all_deps:
         deps = deps.limit(max_listing)
     context["dependencies"] = deps.all()
+    # Existing dependencies to avoid multiple lookups
+    context["dependencies_names_from_aur"] = [
+        item.Name
+        for item in db.query(models.Package)
+        .filter(
+            models.Package.Name.in_(
+                pkg.package_dependencies.with_entities(models.PackageDependency.DepName)
+            )
+        )
+        .all()
+    ]
 
     # Package requirements (other packages depend on this one).
     reqs = pkgutil.pkg_required(pkg.Name, [p.RelName for p in rels_data.get("p", [])])
diff --git a/templates/partials/packages/package_metadata.html b/templates/partials/packages/package_metadata.html
index c5af3ce96..2dd39c201 100644
--- a/templates/partials/packages/package_metadata.html
+++ b/templates/partials/packages/package_metadata.html
@@ -20,7 +20,7 @@
                     {% endif %}
                 {% else -%}
                     </a>
-                    {%- if dep.is_aur_package() -%}
+                    {%- if dep.DepName in dependencies_names_from_aur -%}
                         <sup><small>AUR</small></sup>
                     {% endif %}
                 {% endif %}
-- 
GitLab