-
Notifications
You must be signed in to change notification settings - Fork 4.8k
/
017_300_to_310.lua
84 lines (75 loc) · 2.86 KB
/
017_300_to_310.lua
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
return {
postgres = {
up = [[
DO $$
BEGIN
ALTER TABLE IF EXISTS ONLY "upstreams" ADD "use_srv_name" BOOLEAN DEFAULT false;
EXCEPTION WHEN DUPLICATE_COLUMN THEN
-- Do nothing, accept existing state
END;
$$;
CREATE TABLE IF NOT EXISTS "key_sets" (
"id" UUID PRIMARY KEY,
"name" TEXT UNIQUE,
"tags" TEXT[],
"ws_id" UUID REFERENCES "workspaces" ("id"),
"created_at" TIMESTAMP WITH TIME ZONE,
"updated_at" TIMESTAMP WITH TIME ZONE
);
DO $$
BEGIN
CREATE INDEX IF NOT EXISTS "key_sets_tags_idx" ON "key_sets" USING GIN ("tags");
EXCEPTION WHEN UNDEFINED_COLUMN then
-- do nothing, accept existing state
END$$;
DROP TRIGGER IF EXISTS "key_sets_sync_tags_trigger" ON "key_sets";
DO $$
BEGIN
CREATE TRIGGER "key_sets_sync_tags_trigger"
AFTER INSERT OR UPDATE OF "tags"
OR DELETE ON "key_sets"
FOR EACH ROW
EXECUTE PROCEDURE "sync_tags" ();
EXCEPTION WHEN undefined_column OR undefined_table THEN
-- do nothing, accept existing state
END$$;
CREATE TABLE IF NOT EXISTS "keys" (
"id" UUID PRIMARY KEY,
"set_id" UUID REFERENCES "key_sets" ("id") on delete cascade,
"name" TEXT UNIQUE,
"cache_key" TEXT UNIQUE,
"ws_id" UUID REFERENCES "workspaces" ("id"),
"kid" TEXT,
"jwk" TEXT,
"pem" JSONB,
"tags" TEXT[],
"created_at" TIMESTAMP WITH TIME ZONE,
"updated_at" TIMESTAMP WITH TIME ZONE,
UNIQUE ("kid", "set_id")
);
DO $$
BEGIN
CREATE INDEX IF NOT EXISTS "keys_fkey_key_sets" ON "keys" ("set_id");
EXCEPTION WHEN undefined_column THEN
-- do nothing, accept existing state
END$$;
DO $$
BEGIN
CREATE INDEX IF NOT EXISTS "keys_tags_idx" ON "keys" USING GIN ("tags");
EXCEPTION WHEN undefined_column THEN
-- do nothing, accept existing state
END$$;
DROP TRIGGER IF EXISTS "keys_sync_tags_trigger" ON "keys";
DO $$
BEGIN
CREATE TRIGGER "keys_sync_tags_trigger"
AFTER INSERT OR UPDATE OF "tags"
OR DELETE ON "keys"
FOR EACH ROW
EXECUTE PROCEDURE "sync_tags" ();
EXCEPTION WHEN undefined_column or UNDEFINED_TABLE then
-- do nothing, accept existing state
END$$;
]]
},
}