diff options
| author | mo khan <mo@mokhan.ca> | 2022-05-15 14:48:52 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2022-05-15 14:48:52 -0600 |
| commit | 12129cb4f0143c58a5d6c12ce905b950a0d996b5 (patch) | |
| tree | 6fa60abdd8518c39aa2fd5e28f2e3729479a948f | |
| parent | d1d6297ea475a8f010cc92844674591b9bfa0288 (diff) | |
refactor: tidy up migrate up/down
| -rw-r--r-- | Makefile | 6 | ||||
| -rw-r--r-- | cmd/migrate/main.go | 37 |
2 files changed, 25 insertions, 18 deletions
@@ -25,9 +25,13 @@ test: ## Run tests go test -v -race $(PACKAGES) .PHONY: migrate -migrate: ## Run db migrations +migrate: ## Run db migrate:up go run ./cmd/migrate/main.go +.PHONY: migrate/down +migrate_down: ## Run db migrate:down + go run ./cmd/migrate/main.go down + .PHONY: help help: @echo "Valid targets:" 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()) } } |
