diff options
Diffstat (limited to 'src/dbx/db.go')
-rw-r--r-- | src/dbx/db.go | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/dbx/db.go b/src/dbx/db.go index e0c8e30..3a6f24a 100644 --- a/src/dbx/db.go +++ b/src/dbx/db.go @@ -95,9 +95,17 @@ func applyMigrations(dir string) error { return err } - scripts := []string{} + var ( + last string + scripts []string + ) + for _, f := range files { - scripts = append(scripts, f.Name()) + if n := f.Name(); n == "last.sql" { + last = n + } else { + scripts = append(scripts, f.Name()) + } } sort.Strings(scripts) @@ -132,6 +140,17 @@ func applyMigrations(dir string) error { log.Printf("Applied database migration ‘%s’", f) } + if last != "" { + qry, err := migrations.ReadFile(filepath.Join(dir, last)) + if err != nil { + return err + } + if _, err := db.Exec(string(qry)); err != nil { + return fmt.Errorf("error in ‘%s’: %w", last, err) + } + log.Printf("Ran ‘%s’\n", last) + } + return nil } |