Add select-guix-revision-for-branch-and-datetime

To get the guix revision that was on a branch at a given date and time.
This commit is contained in:
Christopher Baines 2019-10-13 19:46:04 +01:00
parent 9fa2e9e5ac
commit fc6aeab4ed

View file

@ -1,5 +1,6 @@
(define-module (guix-data-service model guix-revision) (define-module (guix-data-service model guix-revision)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-19)
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module (squee) #:use-module (squee)
#:export (count-guix-revisions #:export (count-guix-revisions
@ -8,6 +9,7 @@
insert-guix-revision insert-guix-revision
guix-commit-exists? guix-commit-exists?
guix-revision-exists? guix-revision-exists?
select-guix-revision-for-branch-and-datetime
guix-revisions-cgit-url-bases)) guix-revisions-cgit-url-bases))
(define (count-guix-revisions conn) (define (count-guix-revisions conn)
@ -59,6 +61,25 @@
(exec-query conn query)))) (exec-query conn query))))
(string=? result "t"))) (string=? result "t")))
(define (select-guix-revision-for-branch-and-datetime conn branch datetime)
(define query
"
SELECT guix_revisions.id,
guix_revisions.commit,
guix_revisions.store_path,
guix_revisions.git_repository_id
FROM guix_revisions
INNER JOIN git_branches
ON git_branches.commit = guix_revisions.commit
AND git_branches.git_repository_id = guix_revisions.git_repository_id
WHERE git_branches.name = $1 AND git_branches.datetime >= $2
ORDER BY git_branches.datetime ASC
LIMIT 1")
(car
(exec-query conn query (list branch
(date->string datetime "~1 ~3")))))
(define (guix-revisions-cgit-url-bases conn guix-revision-ids) (define (guix-revisions-cgit-url-bases conn guix-revision-ids)
(map (map
car car