diff options
Diffstat (limited to 'guix-data-service/model/guix-revision.scm')
-rw-r--r-- | guix-data-service/model/guix-revision.scm | 39 |
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"))) |