aboutsummaryrefslogtreecommitdiff
path: root/sqitch/deploy/git_branch_id.sql
diff options
context:
space:
mode:
Diffstat (limited to 'sqitch/deploy/git_branch_id.sql')
-rw-r--r--sqitch/deploy/git_branch_id.sql32
1 files changed, 32 insertions, 0 deletions
diff --git a/sqitch/deploy/git_branch_id.sql b/sqitch/deploy/git_branch_id.sql
new file mode 100644
index 0000000..9da071c
--- /dev/null
+++ b/sqitch/deploy/git_branch_id.sql
@@ -0,0 +1,32 @@
+-- Deploy guix-data-service:git_branch_id to pg
+
+BEGIN;
+
+ALTER TABLE git_branches RENAME TO git_branches_old;
+
+CREATE TABLE git_branches (
+ id integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
+ name character varying NOT NULL,
+ git_repository_id integer NOT NULL REFERENCES git_repositories (id),
+ CONSTRAINT git_repository_id_name_unique UNIQUE (git_repository_id, name)
+);
+
+CREATE TABLE git_commits (
+ id integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
+ commit character varying NOT NULL,
+ git_branch_id integer NOT NULL REFERENCES git_branches (id),
+ datetime timestamp without time zone NOT NULL
+);
+
+INSERT INTO git_branches (name, git_repository_id)
+ SELECT DISTINCT name, git_repository_id
+ FROM git_branches_old;
+
+INSERT INTO git_commits (commit, git_branch_id, datetime)
+ SELECT commit, git_branches.id, datetime
+ FROM git_branches_old
+ INNER JOIN git_branches
+ ON git_branches_old.name = git_branches.name
+ AND git_branches_old.git_repository_id = git_branches.git_repository_id;
+
+COMMIT;