Skip to content

Commit 82e86a3

Browse files
authored
Merge pull request #69 from teknologi-umum/fix/migrations-multiple-time
fix(backend): should be able to execute migrations multiple times
2 parents 6183ccf + 85cac35 commit 82e86a3

File tree

2 files changed

+49
-30
lines changed

2 files changed

+49
-30
lines changed

backend/migration_test.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package main_test
2+
3+
import (
4+
"testing"
5+
6+
"semyi"
7+
)
8+
9+
func TestMigrate(t *testing.T) {
10+
for attempt := 1; attempt <= 3; attempt++ {
11+
err := main.Migrate(database, t.Context(), true)
12+
if err != nil {
13+
t.Errorf("failed to migrate database on attempt #%d: %v", attempt, err)
14+
} else {
15+
t.Log("database migrated successfully")
16+
break
17+
}
18+
}
19+
}
Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,41 @@
11
-- +goose Up
22
-- +goose StatementBegin
3-
ALTER TABLE monitor_historical ADD COLUMN additional_message TEXT;
4-
ALTER TABLE monitor_historical ADD COLUMN http_protocol VARCHAR(255);
5-
ALTER TABLE monitor_historical ADD COLUMN tls_version VARCHAR(255);
6-
ALTER TABLE monitor_historical ADD COLUMN tls_cipher VARCHAR(255);
7-
ALTER TABLE monitor_historical ADD COLUMN tls_expiry TIMESTAMP;
3+
ALTER TABLE monitor_historical ADD COLUMN IF NOT EXISTS additional_message TEXT;
4+
ALTER TABLE monitor_historical ADD COLUMN IF NOT EXISTS http_protocol VARCHAR(255);
5+
ALTER TABLE monitor_historical ADD COLUMN IF NOT EXISTS tls_version VARCHAR(255);
6+
ALTER TABLE monitor_historical ADD COLUMN IF NOT EXISTS tls_cipher VARCHAR(255);
7+
ALTER TABLE monitor_historical ADD COLUMN IF NOT EXISTS tls_expiry TIMESTAMP;
88

9-
ALTER TABLE monitor_historical_daily_aggregate ADD COLUMN additional_message TEXT;
10-
ALTER TABLE monitor_historical_daily_aggregate ADD COLUMN http_protocol VARCHAR(255);
11-
ALTER TABLE monitor_historical_daily_aggregate ADD COLUMN tls_version VARCHAR(255);
12-
ALTER TABLE monitor_historical_daily_aggregate ADD COLUMN tls_cipher VARCHAR(255);
13-
ALTER TABLE monitor_historical_daily_aggregate ADD COLUMN tls_expiry TIMESTAMP;
9+
ALTER TABLE monitor_historical_daily_aggregate ADD COLUMN IF NOT EXISTS additional_message TEXT;
10+
ALTER TABLE monitor_historical_daily_aggregate ADD COLUMN IF NOT EXISTS http_protocol VARCHAR(255);
11+
ALTER TABLE monitor_historical_daily_aggregate ADD COLUMN IF NOT EXISTS tls_version VARCHAR(255);
12+
ALTER TABLE monitor_historical_daily_aggregate ADD COLUMN IF NOT EXISTS tls_cipher VARCHAR(255);
13+
ALTER TABLE monitor_historical_daily_aggregate ADD COLUMN IF NOT EXISTS tls_expiry TIMESTAMP;
1414

15-
ALTER TABLE monitor_historical_hourly_aggregate ADD COLUMN additional_message TEXT;
16-
ALTER TABLE monitor_historical_hourly_aggregate ADD COLUMN http_protocol VARCHAR(255);
17-
ALTER TABLE monitor_historical_hourly_aggregate ADD COLUMN tls_version VARCHAR(255);
18-
ALTER TABLE monitor_historical_hourly_aggregate ADD COLUMN tls_cipher VARCHAR(255);
19-
ALTER TABLE monitor_historical_hourly_aggregate ADD COLUMN tls_expiry TIMESTAMP;
15+
ALTER TABLE monitor_historical_hourly_aggregate ADD COLUMN IF NOT EXISTS additional_message TEXT;
16+
ALTER TABLE monitor_historical_hourly_aggregate ADD COLUMN IF NOT EXISTS http_protocol VARCHAR(255);
17+
ALTER TABLE monitor_historical_hourly_aggregate ADD COLUMN IF NOT EXISTS tls_version VARCHAR(255);
18+
ALTER TABLE monitor_historical_hourly_aggregate ADD COLUMN IF NOT EXISTS tls_cipher VARCHAR(255);
19+
ALTER TABLE monitor_historical_hourly_aggregate ADD COLUMN IF NOT EXISTS tls_expiry TIMESTAMP;
2020
-- +goose StatementEnd
2121

2222
-- +goose Down
2323
-- +goose StatementBegin
24-
ALTER TABLE monitor_historical DROP COLUMN additional_message;
25-
ALTER TABLE monitor_historical DROP COLUMN http_protocol;
26-
ALTER TABLE monitor_historical DROP COLUMN tls_version;
27-
ALTER TABLE monitor_historical DROP COLUMN tls_cipher;
28-
ALTER TABLE monitor_historical DROP COLUMN tls_expiry;
24+
ALTER TABLE monitor_historical DROP COLUMN IF EXISTS additional_message;
25+
ALTER TABLE monitor_historical DROP COLUMN IF EXISTS http_protocol;
26+
ALTER TABLE monitor_historical DROP COLUMN IF EXISTS tls_version;
27+
ALTER TABLE monitor_historical DROP COLUMN IF EXISTS tls_cipher;
28+
ALTER TABLE monitor_historical DROP COLUMN IF EXISTS tls_expiry;
2929

30-
ALTER TABLE monitor_historical_daily_aggregate DROP COLUMN additional_message;
31-
ALTER TABLE monitor_historical_daily_aggregate DROP COLUMN http_protocol;
32-
ALTER TABLE monitor_historical_daily_aggregate DROP COLUMN tls_version;
33-
ALTER TABLE monitor_historical_daily_aggregate DROP COLUMN tls_cipher;
34-
ALTER TABLE monitor_historical_daily_aggregate DROP COLUMN tls_expiry;
30+
ALTER TABLE monitor_historical_daily_aggregate DROP COLUMN IF EXISTS additional_message;
31+
ALTER TABLE monitor_historical_daily_aggregate DROP COLUMN IF EXISTS http_protocol;
32+
ALTER TABLE monitor_historical_daily_aggregate DROP COLUMN IF EXISTS tls_version;
33+
ALTER TABLE monitor_historical_daily_aggregate DROP COLUMN IF EXISTS tls_cipher;
34+
ALTER TABLE monitor_historical_daily_aggregate DROP COLUMN IF EXISTS tls_expiry;
3535

36-
ALTER TABLE monitor_historical_hourly_aggregate DROP COLUMN additional_message;
37-
ALTER TABLE monitor_historical_hourly_aggregate DROP COLUMN http_protocol;
38-
ALTER TABLE monitor_historical_hourly_aggregate DROP COLUMN tls_version;
39-
ALTER TABLE monitor_historical_hourly_aggregate DROP COLUMN tls_cipher;
40-
ALTER TABLE monitor_historical_hourly_aggregate DROP COLUMN tls_expiry;
36+
ALTER TABLE monitor_historical_hourly_aggregate DROP COLUMN IF EXISTS additional_message;
37+
ALTER TABLE monitor_historical_hourly_aggregate DROP COLUMN IF EXISTS http_protocol;
38+
ALTER TABLE monitor_historical_hourly_aggregate DROP COLUMN IF EXISTS tls_version;
39+
ALTER TABLE monitor_historical_hourly_aggregate DROP COLUMN IF EXISTS tls_cipher;
40+
ALTER TABLE monitor_historical_hourly_aggregate DROP COLUMN IF EXISTS tls_expiry;
4141
-- +goose StatementEnd

0 commit comments

Comments
 (0)