diff options
Diffstat (limited to 'cmd/migrate/main.go')
| -rw-r--r-- | cmd/migrate/main.go | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/cmd/migrate/main.go b/cmd/migrate/main.go index 6c77eda..44e0c00 100644 --- a/cmd/migrate/main.go +++ b/cmd/migrate/main.go @@ -2,6 +2,8 @@ package main import ( "log" + "os" + "strings" "github.com/golang-migrate/migrate/v4" "github.com/golang-migrate/migrate/v4/database/sqlite3" @@ -9,29 +11,30 @@ import ( "mokhan.ca/xlgmokha/idp/pkg/db" ) -func main() { - db, err := db.New("file:db/development.db") +func Check(err error) { if err != nil { log.Fatal(err) } - defer db.Close() +} - instance, err := sqlite3.WithInstance(db, &sqlite3.Config{}) - if err != nil { - log.Fatal(err) - } +func Must[T any](item T, err error) T { + Check(err) + return item +} - files, err := (&file.File{}).Open("./db/migrate") - if err != nil { - log.Fatal(err) - } +func main() { + db := Must(db.New("file:db/development.db")) + defer db.Close() - m, err := migrate.NewWithInstance("file", files, "sqlite3", instance) - if err != nil { - log.Fatal(err) - } + instance := Must(sqlite3.WithInstance(db, &sqlite3.Config{})) + files := Must((&file.File{}).Open("./db/migrate")) + defer files.Close() - if err := m.Up(); err != nil { - log.Fatal(err) + migrations := Must(migrate.NewWithInstance("file", files, "sqlite3", instance)) + + if len(os.Args) == 2 && strings.ToLower(os.Args[1]) == "down" { + Check(migrations.Down()) + } else { + Check(migrations.Up()) } } |
