aurjson: cache extended fields

Message ID 20191006175142.9921-1-lfleischer@archlinux.org
State New
Headers show
Series
  • aurjson: cache extended fields
Related show

Commit Message

Lukas Fleischer Oct. 6, 2019, 5:51 p.m. UTC
Cache the results of the extended fields computation if the global
caching mechanism is enabled.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
---
 web/lib/aurjson.class.php | 17 ++++-------------
 1 file changed, 4 insertions(+), 13 deletions(-)

Patch

diff --git a/web/lib/aurjson.class.php b/web/lib/aurjson.class.php
index c275d21..bfb8cd1 100644
--- a/web/lib/aurjson.class.php
+++ b/web/lib/aurjson.class.php
@@ -292,11 +292,7 @@  class AurJSON {
 			"FROM Licenses INNER JOIN PackageLicenses " .
 			"ON PackageLicenses.PackageID = " . $pkgid . " " .
 			"AND PackageLicenses.LicenseID = Licenses.ID";
-		$result = $this->dbh->query($query);
-
-		if (!$result) {
-			return null;
-		}
+		$rows = db_cache_result($query, 'extended-fields:' . $pkgid, PDO::FETCH_ASSOC);
 
 		$type_map = array(
 			'depends' => 'Depends',
@@ -310,7 +306,7 @@  class AurJSON {
 			'license' => 'License',
 		);
 		$data = array();
-		while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
+		foreach ($rows as $row) {
 			$type = $type_map[$row['Type']];
 			$data[$type][] = $row['Name'] . $row['Cond'];
 		}
@@ -319,13 +315,8 @@  class AurJSON {
 			$query = "SELECT Keyword FROM PackageKeywords " .
 				"WHERE PackageBaseID = " . intval($base_id) . " " .
 				"ORDER BY Keyword ASC";
-			$result = $this->dbh->query($query);
-
-			if (!$result) {
-				return null;
-			}
-
-			$data['Keywords'] = $result->fetchAll(PDO::FETCH_COLUMN, 0);
+			$rows = db_cache_result($query, 'keywords:' . intval($base_id));
+			$data['Keywords'] = array_map(function ($x) { return $x[0]; }, $rows);
 		}
 
 		return $data;