[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)))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- branch master updated: Actually add the system module,
Christopher Baines <=