From 31fc5ebd393f2fc0a8b9e8b20879060d2fb1081c Mon Sep 17 00:00:00 2001 From: Amirhossein Khalili Date: Fri, 21 Aug 2026 18:56:55 +0800 Subject: [PATCH] fix: skip already applied migrations --- cmd/migrate/main.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/cmd/migrate/main.go b/cmd/migrate/main.go index 28855e1..dc50340 100644 --- a/cmd/migrate/main.go +++ b/cmd/migrate/main.go @@ -25,7 +25,20 @@ func main() { os.Exit(1) } defer pool.Close() - for _, path := range []string{"migrations/000001_mvp.sql", "migrations/000002_growth_analyst.sql", "migrations/000003_ai_summary_refresh.sql", "migrations/000004_ai_page_insights.sql"} { + migrations := []struct { + version int64 + path string + }{{1, "migrations/000001_mvp.sql"}, {2, "migrations/000002_growth_analyst.sql"}, {3, "migrations/000003_ai_summary_refresh.sql"}, {4, "migrations/000004_ai_page_insights.sql"}} + for _, item := range migrations { + var applied bool + if err := pool.QueryRow(ctx, `SELECT EXISTS(SELECT 1 FROM schema_migrations WHERE version=$1)`, item.version).Scan(&applied); err != nil { + logger.Error("checking migration version failed", "version", item.version, "error", err) + os.Exit(1) + } + if applied { + continue + } + path := item.path migration, err := os.ReadFile(path) if err != nil { logger.Error("reading migration failed", "path", path, "error", err)