aboutsummaryrefslogtreecommitdiff
path: root/guix-data-service/model/guix-revision.scm
diff options
context:
space:
mode:
Diffstat (limited to 'guix-data-service/model/guix-revision.scm')
-rw-r--r--guix-data-service/model/guix-revision.scm39
1 files changed, 39 insertions, 0 deletions
diff --git a/guix-data-service/model/guix-revision.scm b/guix-data-service/model/guix-revision.scm
new file mode 100644
index 0000000..d9a8976
--- /dev/null
+++ b/guix-data-service/model/guix-revision.scm
@@ -0,0 +1,39 @@
+(define-module (guix-data-service model guix-revision)
+ #:use-module (ice-9 match)
+ #:use-module (squee)
+ #:export (most-recent-n-guix-revisions
+ commit->revision-id
+ insert-guix-revision
+ guix-revision-exists?))
+
+(define (most-recent-n-guix-revisions conn n)
+ (exec-query conn "SELECT * FROM guix_revisions ORDER BY id DESC LIMIT 10"))
+
+(define (commit->revision-id conn commit)
+ (match (exec-query
+ conn "SELECT id FROM guix_revisions WHERE commit = $1 LIMIT 1"
+ (list commit))
+ (((id))
+ id)))
+
+(define (insert-guix-revision conn url commit store_path)
+ (define insert
+ (string-append "INSERT INTO guix_revisions "
+ "(url, commit, store_path) VALUES "
+ "('" url "', '"
+ commit "', '"
+ store_path "') "
+ "RETURNING id;"))
+
+ (map car (exec-query conn insert)))
+
+(define (guix-revision-exists? conn url commit)
+ (define query
+ (string-append "SELECT EXISTS("
+ "SELECT 1 FROM guix_revisions WHERE url = '" url "' "
+ "AND commit = '" commit "')"
+ ";"))
+
+ (let ((result (caar
+ (exec-query conn query))))
+ (string=? result "t")))