aboutsummaryrefslogtreecommitdiff
path: root/guix-data-service/model
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2024-11-13 09:55:03 +0000
committerChristopher Baines <mail@cbaines.net>2024-11-13 09:55:03 +0000
commit84e78ef3ede745269a027db981a306a5517cf1b3 (patch)
treed156f7d118c64fd6cfca35e35a6454a005a4b45b /guix-data-service/model
parente7ada1bada71d4abd9701e74b1455b8948ad68cf (diff)
downloaddata-service-master.tar
data-service-master.tar.gz
Stop queries being able to insert systemsHEADmaster
Diffstat (limited to 'guix-data-service/model')
-rw-r--r--guix-data-service/model/blocked-builds.scm4
-rw-r--r--guix-data-service/model/system.scm17
2 files changed, 19 insertions, 2 deletions
diff --git a/guix-data-service/model/blocked-builds.scm b/guix-data-service/model/blocked-builds.scm
index 888e842..2dcbee1 100644
--- a/guix-data-service/model/blocked-builds.scm
+++ b/guix-data-service/model/blocked-builds.scm
@@ -353,7 +353,7 @@ WHERE status IN ('failed', 'failed-dependency', 'failed-other', 'canceled')
(get-sql-to-select-package-and-related-derivations-for-revision
conn
(commit->revision-id conn revision-commit)
- #:system-id (system->system-id conn system)
+ #:system-id (lookup-system-id conn system)
#:target target)
(string-append
"
@@ -369,7 +369,7 @@ WITH RECURSIVE all_derivations AS (
(simple-format
#f "
AND system_id = ~A\n"
- (system->system-id conn system))
+ (lookup-system-id conn system))
"")
(if target
(simple-format
diff --git a/guix-data-service/model/system.scm b/guix-data-service/model/system.scm
index e64e7f5..9939a73 100644
--- a/guix-data-service/model/system.scm
+++ b/guix-data-service/model/system.scm
@@ -22,6 +22,7 @@
#:use-module (squee)
#:use-module (guix-data-service model utils)
#:export (system->system-id
+ lookup-system-id
list-systems))
(define system->system-id-cache
@@ -45,6 +46,22 @@
(set! systems-cache #f)
id)))))
+(define (lookup-system-id conn system)
+ (let ((cached-value (hash-ref system->system-id-cache
+ system)))
+ (or cached-value
+ (match (exec-query
+ conn
+ "SELECT id FROM systems WHERE system = $1"
+ (list system))
+ (((id-string))
+ (let ((id (string->number id-string)))
+ (hash-set! system->system-id-cache
+ system
+ id)
+ id))
+ (() #f)))))
+
(define (list-systems conn)
(if systems-cache
systems-cache