Dernière activité 1719816616

migrate.go Brut
1func ApplyMigrations() {
2 /*
3 webhooks.created_by TEXT NOT NULL [set unfilled to '']
4 webhooks.last_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
5 webhooks.last_updated_by TEXT NOT NULL [set unfilled to '']
6
7 repos.created_by TEXT NOT NULL [set unfilled to '']
8 repos.last_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
9 repos.last_updated_by TEXT NOT NULL [set unfilled to '']
10
11 event_modifiers.created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
12 event_modifiers.created_by TEXT NOT NULL [set unfilled to '']
13 event_modifiers.last_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
14 event_modifiers.last_updated_by TEXT NOT NULL [set unfilled to '']
15
16 webhook_logs.webhook_id text not null references webhooks (id) ON UPDATE CASCADE ON DELETE CASCADE [drop all if webhook_id unset]
17 webhook_logs.created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
18 webhook_logs.created_by TEXT NOT NULL [set unfilled to '']
19 webhook_logs.last_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
20 webhook_logs.last_updated_by TEXT NOT NULL [set unfilled to '']
21 */
22
23 tx, err := Pool.Begin(Context)
24
25 if err != nil {
26 Logger.Fatal("Could not start migration transaction", zap.Error(err))
27 }
28
29 defer tx.Rollback(Context)
30
31 var countOfWebhookId int64
32 err = tx.QueryRow(Context, "SELECT COUNT(*) FROM information_schema.columns WHERE table_name = 'webhook_logs' AND column_name = 'webhook_id'").Scan(&countOfWebhookId)
33
34 if err != nil {
35 Logger.Fatal("Could not check for webhook_id column", zap.Error(err))
36 }
37
38 if countOfWebhookId == 0 {
39 _, err = tx.Exec(Context, `
40 DELETE FROM webhook_logs
41 `)
42
43 if err != nil {
44 Logger.Fatal("Could not delete webhook_logs", zap.Error(err))
45 }
46 }
47
48 _, err = tx.Exec(Context, `
49 ALTER TABLE webhooks ADD COLUMN IF NOT EXISTS created_by TEXT NOT NULL DEFAULT '';
50 ALTER TABLE webhooks ALTER COLUMN created_by DROP DEFAULT;
51 ALTER TABLE webhooks ADD COLUMN IF NOT EXISTS last_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
52 ALTER TABLE webhooks ADD COLUMN IF NOT EXISTS last_updated_by TEXT NOT NULL DEFAULT '';
53 ALTER TABLE webhooks ALTER COLUMN last_updated_by DROP DEFAULT;
54
55 ALTER TABLE repos ADD COLUMN IF NOT EXISTS created_by TEXT NOT NULL DEFAULT '';
56 ALTER TABLE repos ALTER COLUMN created_by DROP DEFAULT;
57 ALTER TABLE repos ADD COLUMN IF NOT EXISTS last_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
58 ALTER TABLE repos ADD COLUMN IF NOT EXISTS last_updated_by TEXT NOT NULL DEFAULT '';
59 ALTER TABLE repos ALTER COLUMN last_updated_by DROP DEFAULT;
60
61 ALTER TABLE event_modifiers ADD COLUMN IF NOT EXISTS created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
62 ALTER TABLE event_modifiers ADD COLUMN IF NOT EXISTS created_by TEXT NOT NULL DEFAULT '';
63 ALTER TABLE event_modifiers ALTER COLUMN created_by DROP DEFAULT;
64 ALTER TABLE event_modifiers ADD COLUMN IF NOT EXISTS last_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
65 ALTER TABLE event_modifiers ADD COLUMN IF NOT EXISTS last_updated_by TEXT NOT NULL DEFAULT '';
66 ALTER TABLE event_modifiers ALTER COLUMN last_updated_by DROP DEFAULT;
67
68 ALTER TABLE webhook_logs ADD COLUMN IF NOT EXISTS webhook_id TEXT NOT NULL REFERENCES webhooks (id) ON UPDATE CASCADE ON DELETE CASCADE;
69 ALTER TABLE webhook_logs ADD COLUMN IF NOT EXISTS created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
70 ALTER TABLE webhook_logs ADD COLUMN IF NOT EXISTS created_by TEXT NOT NULL DEFAULT '';
71 ALTER TABLE webhook_logs ALTER COLUMN created_by DROP DEFAULT;
72 ALTER TABLE webhook_logs ADD COLUMN IF NOT EXISTS last_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
73 ALTER TABLE webhook_logs ADD COLUMN IF NOT EXISTS last_updated_by TEXT NOT NULL DEFAULT '';
74 ALTER TABLE webhook_logs ALTER COLUMN last_updated_by DROP DEFAULT;
75 `)
76}
77