From 2f36d47b1b5540ab157d561cea4eb1afc1aec7e7 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Sat, 11 Jan 2020 17:25:08 +0000 Subject: Don't hardcode the expected x-git-repo header value Rather than expecting it always to be "guix", store the expected value in the database, and use the value of the header to find the relevant repository. --- guix-data-service/branch-updated-emails.scm | 40 ++++++++++------------ guix-data-service/model/git-repository.scm | 12 +++++++ .../deploy/git-repositories-x-git-repo-header.sql | 7 ++++ .../revert/git-repositories-x-git-repo-header.sql | 7 ++++ sqitch/sqitch.plan | 1 + .../verify/git-repositories-x-git-repo-header.sql | 7 ++++ 6 files changed, 52 insertions(+), 22 deletions(-) create mode 100644 sqitch/deploy/git-repositories-x-git-repo-header.sql create mode 100644 sqitch/revert/git-repositories-x-git-repo-header.sql create mode 100644 sqitch/verify/git-repositories-x-git-repo-header.sql diff --git a/guix-data-service/branch-updated-emails.scm b/guix-data-service/branch-updated-emails.scm index df5771e..e367d94 100644 --- a/guix-data-service/branch-updated-emails.scm +++ b/guix-data-service/branch-updated-emails.scm @@ -23,9 +23,6 @@ #:use-module (guix-data-service jobs load-new-guix-revision) #:export (enqueue-job-for-email)) -(define %repository-url-for-repo - '(("guix" . "https://git.savannah.gnu.org/git/guix.git"))) - (define (enqueue-job-for-email conn email) (let* ((headers (email-headers email)) (date (assq-ref headers 'date)) @@ -35,30 +32,29 @@ (x-git-newrev (assq-ref headers 'x-git-newrev))) (when (and (and (string? x-git-reftype) (string=? x-git-reftype "branch")) - (and (string? x-git-repo) - (string=? x-git-repo "guix")) (string? x-git-newrev)) (let ((branch-name (string-drop x-git-refname 11)) (git-repository-id - (git-repository-url->git-repository-id + (git-repository-x-git-repo-header->git-repository-id conn - (assoc-ref %repository-url-for-repo x-git-repo)))) + x-git-repo))) - (insert-git-branch-entry conn - branch-name - (if (string=? "0000000000000000000000000000000000000000" - x-git-newrev) - "" - x-git-newrev) - git-repository-id - date) + (when git-repository-id + (insert-git-branch-entry conn + branch-name + (if (string=? "0000000000000000000000000000000000000000" + x-git-newrev) + "" + x-git-newrev) + git-repository-id + date) - (unless (string=? "0000000000000000000000000000000000000000" - x-git-newrev) - (enqueue-load-new-guix-revision-job - conn - git-repository-id - x-git-newrev - (string-append x-git-repo " " x-git-refname " updated"))))))) + (unless (string=? "0000000000000000000000000000000000000000" + x-git-newrev) + (enqueue-load-new-guix-revision-job + conn + git-repository-id + x-git-newrev + (string-append x-git-repo " " x-git-refname " updated")))))))) diff --git a/guix-data-service/model/git-repository.scm b/guix-data-service/model/git-repository.scm index 2ed3f01..5b6997c 100644 --- a/guix-data-service/model/git-repository.scm +++ b/guix-data-service/model/git-repository.scm @@ -22,6 +22,7 @@ #:export (all-git-repositories select-git-repository git-repository-id->url + git-repository-x-git-repo-header->git-repository-id git-repository-url->git-repository-id git-repositories-containing-commit @@ -59,6 +60,17 @@ (list id)) (((url)) url))) +(define (git-repository-x-git-repo-header->git-repository-id conn header) + (match + (exec-query + conn + (string-append + "SELECT id FROM git_repositories WHERE x_git_repo_header = $1;") + (list header)) + (() #f) + (((id)) + (string->number id)))) + (define (git-repository-url->git-repository-id conn url) (let ((existing-id (exec-query diff --git a/sqitch/deploy/git-repositories-x-git-repo-header.sql b/sqitch/deploy/git-repositories-x-git-repo-header.sql new file mode 100644 index 0000000..9a77928 --- /dev/null +++ b/sqitch/deploy/git-repositories-x-git-repo-header.sql @@ -0,0 +1,7 @@ +-- Deploy guix-data-service:git-repositories-x-git-repo-header to pg + +BEGIN; + +ALTER TABLE git_repositories ADD COLUMN x_git_repo_header varchar; + +COMMIT; diff --git a/sqitch/revert/git-repositories-x-git-repo-header.sql b/sqitch/revert/git-repositories-x-git-repo-header.sql new file mode 100644 index 0000000..606ca61 --- /dev/null +++ b/sqitch/revert/git-repositories-x-git-repo-header.sql @@ -0,0 +1,7 @@ +-- Revert guix-data-service:git-repositories-x-git-repo-header from pg + +BEGIN; + +ALTER TABLE git_repositories DROP COLUMN x_git_repo_header; + +COMMIT; diff --git a/sqitch/sqitch.plan b/sqitch/sqitch.plan index b981cc0..8f960e6 100644 --- a/sqitch/sqitch.plan +++ b/sqitch/sqitch.plan @@ -42,3 +42,4 @@ derivations_hash_index 2019-12-24T22:54:19Z Christopher Baines # Add table for derivation source file nars derivation_source_files_store_path_hash_index 2019-12-29T17:53:08Z Christopher Baines # Add index on the hash part of the derivation source files store path build_servers_build_config 2020-01-05T12:06:13Z Christopher Baines # Add build_servers_build_config table +git-repositories-x-git-repo-header 2020-01-11T16:39:32Z Christopher Baines # Add x_git_repo_header to git_repositories diff --git a/sqitch/verify/git-repositories-x-git-repo-header.sql b/sqitch/verify/git-repositories-x-git-repo-header.sql new file mode 100644 index 0000000..2f448e3 --- /dev/null +++ b/sqitch/verify/git-repositories-x-git-repo-header.sql @@ -0,0 +1,7 @@ +-- Verify guix-data-service:git-repositories-x-git-repo-header on pg + +BEGIN; + +-- XXX Add verifications here. + +ROLLBACK; -- cgit v1.2.3