diff --git a/controller/migrator.go b/controller/migrator.go index 4b99b9c..1a70e62 100644 --- a/controller/migrator.go +++ b/controller/migrator.go @@ -1,14 +1,15 @@ package controller import ( - "fmt" - "os" - "time" + "embed" + "fmt" + "os" + "time" - "github.com/jmoiron/sqlx" + "github.com/jmoiron/sqlx" ) -const DB_VERSION int = 4 +const DB_VERSION int = 5 func CheckDBVersionAndMigrate(db *sqlx.DB) { db.MustExec("CREATE SCHEMA IF NOT EXISTS arimelody") @@ -49,16 +50,23 @@ func CheckDBVersionAndMigrate(db *sqlx.DB) { ApplyMigration(db, "003-fail-lock") oldDBVersion = 4 + case 4: + ApplyMigration(db, "004-test") + oldDBVersion = 5 + } } fmt.Printf("Database schema up to date.\n") } +//go:embed "schema-migration" +var schemaFS embed.FS + func ApplyMigration(db *sqlx.DB, scriptFile string) { fmt.Printf("Applying schema migration %s...\n", scriptFile) - bytes, err := os.ReadFile("schema-migration/" + scriptFile + ".sql") + bytes, err := schemaFS.ReadFile("schema-migration/" + scriptFile + ".sql") if err != nil { fmt.Fprintf(os.Stderr, "FATAL: Failed to open schema file \"%s\": %v\n", scriptFile, err) os.Exit(1) diff --git a/schema-migration/000-init.sql b/controller/schema-migration/000-init.sql similarity index 100% rename from schema-migration/000-init.sql rename to controller/schema-migration/000-init.sql diff --git a/schema-migration/001-pre-versioning.sql b/controller/schema-migration/001-pre-versioning.sql similarity index 100% rename from schema-migration/001-pre-versioning.sql rename to controller/schema-migration/001-pre-versioning.sql diff --git a/schema-migration/002-audit-logs.sql b/controller/schema-migration/002-audit-logs.sql similarity index 100% rename from schema-migration/002-audit-logs.sql rename to controller/schema-migration/002-audit-logs.sql diff --git a/schema-migration/003-fail-lock.sql b/controller/schema-migration/003-fail-lock.sql similarity index 100% rename from schema-migration/003-fail-lock.sql rename to controller/schema-migration/003-fail-lock.sql diff --git a/controller/schema-migration/004-test.sql b/controller/schema-migration/004-test.sql new file mode 100644 index 0000000..3733de2 --- /dev/null +++ b/controller/schema-migration/004-test.sql @@ -0,0 +1 @@ +INSERT INTO arimelody.auditlog (level, type, content) VALUES (0, "test", "this is a db schema migration test!");