guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

branch master updated: Actually add the system module


From: Christopher Baines
Subject: branch master updated: Actually add the system module
Date: Fri, 23 Apr 2021 13:42:50 -0400

This is an automated email from the git hooks/post-receive script.

cbaines pushed a commit to branch master
in repository data-service.

The following commit(s) were added to refs/heads/master by this push:
     new c252d1c  Actually add the system module
c252d1c is described below

commit c252d1cb30682c73993da5933c7705b8f0200184
Author: Christopher Baines <mail@cbaines.net>
AuthorDate: Fri Apr 23 18:42:40 2021 +0100

    Actually add the system module
---
 guix-data-service/model/system.scm | 57 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 57 insertions(+)

diff --git a/guix-data-service/model/system.scm 
b/guix-data-service/model/system.scm
new file mode 100644
index 0000000..e64e7f5
--- /dev/null
+++ b/guix-data-service/model/system.scm
@@ -0,0 +1,57 @@
+;;; Guix Data Service -- Information about Guix over time
+;;; Copyright © 2019, 2020, 2021 Christopher Baines <mail@cbaines.net>
+;;;
+;;; This program is free software: you can redistribute it and/or
+;;; modify it under the terms of the GNU Affero General Public License
+;;; as published by the Free Software Foundation, either version 3 of
+;;; the License, or (at your option) any later version.
+;;;
+;;; This program is distributed in the hope that it will be useful,
+;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;;; Affero General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU Affero General Public
+;;; License along with this program.  If not, see
+;;; <http://www.gnu.org/licenses/>.
+
+(define-module (guix-data-service model system)
+  #:use-module (srfi srfi-1)
+  #:use-module (ice-9 vlist)
+  #:use-module (ice-9 match)
+  #:use-module (squee)
+  #:use-module (guix-data-service model utils)
+  #:export (system->system-id
+            list-systems))
+
+(define system->system-id-cache
+  (make-hash-table))
+
+(define systems-cache #f)
+
+(define (system->system-id conn system)
+  (let ((cached-value (hash-ref system->system-id-cache
+                                system)))
+    (or cached-value
+        (match (insert-missing-data-and-return-all-ids
+                conn
+                "systems"
+                '(system)
+                `((,system)))
+          ((id)
+           (hash-set! system->system-id-cache
+                      system
+                      id)
+           (set! systems-cache #f)
+           id)))))
+
+(define (list-systems conn)
+  (if systems-cache
+      systems-cache
+      (let ((systems
+             (map car
+                  (exec-query
+                   conn
+                   "SELECT system FROM systems ORDER BY system"))))
+        (set! systems-cache systems)
+        systems)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]