diff options
author | Christopher Baines <mail@cbaines.net> | 2019-11-09 08:30:02 +0000 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2019-11-09 08:30:02 +0000 |
commit | 5bb4dfdabea34af0bfa03d6430935124f7b60a90 (patch) | |
tree | 721c0f53ab02ee73365ae9185ed96da0693ae8a1 /guix-data-service/model | |
parent | fea4dc9385f6f42e7b89f1fafe1a8189f62af9eb (diff) | |
download | data-service-wip-derivation-history.tar data-service-wip-derivation-history.tar.gz |
Diffstat (limited to 'guix-data-service/model')
-rw-r--r-- | guix-data-service/model/package.scm | 44 | ||||
-rw-r--r-- | guix-data-service/model/utils.scm | 10 |
2 files changed, 53 insertions, 1 deletions
diff --git a/guix-data-service/model/package.scm b/guix-data-service/model/package.scm index c1cd2ae..0253a5a 100644 --- a/guix-data-service/model/package.scm +++ b/guix-data-service/model/package.scm @@ -12,7 +12,8 @@ inferior-packages->package-ids select-package-versions-for-revision - package-versions-for-branch)) + package-versions-for-branch + package-derivations-for-branch)) (define (select-existing-package-entries package-entries) (string-append "SELECT id, packages.name, packages.version, " @@ -236,3 +237,44 @@ ORDER BY first_datetime DESC, package_version DESC" (number->string git-repository-id) branch-name))) +(define (package-derivations-for-branch conn + git-repository-id + branch-name + system + target + package-name) + (exec-query + conn + " +SELECT package_version, + derivations.file_name, + first_guix_revisions.commit AS first_guix_revision_commit, + first_git_branches.datetime AS first_datetime, + last_guix_revisions.commit AS last_guix_revision_commit, + last_git_branches.datetime AS last_datetime +FROM package_derivations_by_guix_revision_range +INNER JOIN derivations + ON package_derivations_by_guix_revision_range.derivation_id = derivations.id +INNER JOIN guix_revisions AS first_guix_revisions + ON first_guix_revision_id = first_guix_revisions.id +INNER JOIN git_branches AS first_git_branches + ON first_guix_revisions.git_repository_id = first_git_branches.git_repository_id + AND first_guix_revisions.commit = first_git_branches.commit +INNER JOIN guix_revisions AS last_guix_revisions + ON last_guix_revision_id = last_guix_revisions.id +INNER JOIN git_branches AS last_git_branches + ON last_guix_revisions.git_repository_id = last_git_branches.git_repository_id + AND last_guix_revisions.commit = last_git_branches.commit +WHERE package_name = $1 +AND package_derivations_by_guix_revision_range.git_repository_id = $2 +AND package_derivations_by_guix_revision_range.branch_name = $3 +AND first_git_branches.name = $3 +AND last_git_branches.name = $3 +AND package_derivations_by_guix_revision_range.system = $4 +AND package_derivations_by_guix_revision_range.target = $5 +ORDER BY first_datetime DESC, package_version DESC" + (list package-name + (number->string git-repository-id) + branch-name + system + target))) diff --git a/guix-data-service/model/utils.scm b/guix-data-service/model/utils.scm index 7798e74..a1cd432 100644 --- a/guix-data-service/model/utils.scm +++ b/guix-data-service/model/utils.scm @@ -11,6 +11,7 @@ non-empty-string-or-false exec-query->vhash two-lists->vhash + parse-postgresql-array-string deduplicate-strings group-list-by-first-n-fields insert-missing-data-and-return-all-ids)) @@ -47,6 +48,15 @@ l1 l2)) +(define (parse-postgresql-array-string s) + (if (string=? s "{}") + '() + (string-split + (string-drop-right + (string-drop s 1) + 1) + #\,))) + (define (deduplicate-strings strings) (pair-fold (lambda (pair result) |