-
Notifications
You must be signed in to change notification settings - Fork 5
/
migrations.go
136 lines (127 loc) · 2.69 KB
/
migrations.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
package migrations
import "github.com/contextwtf/migrate"
var Migrations = []migrate.Migration{
{
Name: "2022-08-04.0.init.sql",
SQL: `
CREATE TABLE merkle_trees (
root bytea,
addresses bytea[] NOT NULL,
PRIMARY KEY (root)
);
CREATE TABLE merkle_proofs (
root bytea NOT NULL,
address bytea NOT NULL,
proof bytea[] NOT NULL
);
CREATE UNIQUE INDEX ON merkle_proofs(root, address);
`,
},
{
Name: "2022-08-05.0.rename.sql",
SQL: `
ALTER TABLE merkle_trees
RENAME COLUMN addresses TO unhashed_leaves;
ALTER TABLE merkle_trees
ADD COLUMN ltd text[];
ALTER TABLE merkle_trees
ADD COLUMN packed boolean;
ALTER TABLE merkle_proofs
ADD COLUMN unhashed_leaf bytea NOT NULL;
ALTER TABLE merkle_proofs
ALTER COLUMN address
DROP NOT NULL;
DROP INDEX merkle_proofs_root_address_idx;
CREATE UNIQUE INDEX on merkle_proofs(root, unhashed_leaf);
`,
},
{
Name: "2022-08-17.0.proofs.sql",
SQL: `
ALTER TABLE merkle_trees
ADD COLUMN proofs jsonb;
`,
},
{
Name: "2022-08-18.0.drop-proofs.sql",
SQL: `
DROP TABLE merkle_proofs;
`,
},
{
Name: "2022-08-18.1.rename-trees.sql",
SQL: `
ALTER TABLE merkle_trees RENAME TO trees;
`,
},
{
Name: "2022-08-22.0.add-proof-idx.sql",
SQL: `
CREATE INDEX on trees USING gin(proofs jsonb_path_ops);
`,
},
{
Name: "2022-08-22.1.add-inserted-at.sql",
SQL: `
ALTER TABLE trees
ADD COLUMN "inserted_at" timestamptz NOT NULL DEFAULT now();
`,
},
{
Name: "2022-08-30.0.packed-bool.sql",
SQL: `
UPDATE trees SET packed = true
WHERE packed IS NULL;
ALTER TABLE trees
ALTER COLUMN packed
SET NOT NULL;
`,
},
{
Name: "2022-08-31.0.root-func-index.sql",
SQL: `
CREATE OR REPLACE FUNCTION proofs_array (data jsonb)
RETURNS text[]
AS $CODE$
BEGIN
RETURN ARRAY (
SELECT
jsonb_array_elements(data) ->> 'proof');
END
$CODE$
LANGUAGE plpgsql
IMMUTABLE;
CREATE INDEX proofs_arr_idx ON trees USING GIN ((proofs_array(proofs)));
DROP INDEX "trees_proofs_idx";
`,
},
{
Name: "2022-10-07.0.trees-proofs.sql",
SQL: `
DROP INDEX proofs_arr_idx;
CREATE TABLE trees_proofs (
root bytea PRIMARY KEY,
proofs jsonb,
inserted_at timestamp with time zone NOT NULL DEFAULT now()
);
CREATE INDEX proofs_arr_idx ON trees_proofs USING GIN ((proofs_array(proofs)));
`,
},
{
Name: "2023-06-26.0.proofs_hashes.sql",
SQL: `
CREATE TABLE IF NOT EXISTS proofs_hashes (
hash bytea,
root bytea
);
CREATE INDEX IF NOT EXISTS proofs_hashes_hash_idx ON proofs_hashes (hash);
`,
},
{
Name: "2023-06-26.1.drop_data.sql",
SQL: `
ALTER TABLE "trees" DROP COLUMN "proofs";
DROP TABLE "trees_proofs";
`,
},
}