Files
spend-sparrow/db/default.go
Tim Wundenberg d8f6984a2d
Some checks failed
Build Docker Image / Build-Docker-Image (push) Failing after 3m23s
wip: implement account service and db
2025-04-21 20:58:08 +02:00

46 lines
976 B
Go

package db
import (
"spend-sparrow/log"
"spend-sparrow/types"
"database/sql"
"errors"
"github.com/golang-migrate/migrate/v4"
"github.com/golang-migrate/migrate/v4/database/sqlite3"
_ "github.com/golang-migrate/migrate/v4/source/file"
)
var (
ErrNotFound = errors.New("The value does not exist.")
ErrAlreadyExists = errors.New("row already exists")
)
func RunMigrations(db *sql.DB, pathPrefix string) error {
driver, err := sqlite3.WithInstance(db, &sqlite3.Config{})
if err != nil {
log.Error("Could not create Migration instance: %v", err)
return types.ErrInternal
}
m, err := migrate.NewWithDatabaseInstance(
"file://"+pathPrefix+"migration/",
"",
driver)
if err != nil {
log.Error("Could not create migrations instance: %v", err)
return types.ErrInternal
}
err = m.Up()
if err != nil {
if !errors.Is(err, migrate.ErrNoChange) {
log.Error("Could not run migrations: %v", err)
return types.ErrInternal
}
}
return nil
}