refactor: replace golang-migrate with goose for database migrations
This commit is contained in:
parent
aabf45915a
commit
10b2056954
1 changed files with 9 additions and 21 deletions
30
main.go
30
main.go
|
@ -7,14 +7,12 @@ import (
|
|||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/num30/config"
|
||||
"github.com/pressly/goose/v3"
|
||||
"go.uber.org/zap"
|
||||
"io"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"github.com/golang-migrate/migrate/v4"
|
||||
"github.com/golang-migrate/migrate/v4/database/sqlite3"
|
||||
"github.com/golang-migrate/migrate/v4/source/iofs"
|
||||
"github.com/labstack/echo/v4"
|
||||
"github.com/labstack/echo/v4/middleware"
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
|
@ -24,7 +22,7 @@ import (
|
|||
//go:embed static/*
|
||||
var staticFiles embed.FS
|
||||
|
||||
//go:embed database/sqlite/migration/*
|
||||
//go:embed database/sqlite/migration/*.sql
|
||||
var sqliteMigrations embed.FS
|
||||
|
||||
type OAuthConfig struct {
|
||||
|
@ -105,8 +103,7 @@ func main() {
|
|||
dsn = fmt.Sprintf("%s:%s@tcp(%s:%d)/%s",
|
||||
cfg.DB.User, cfg.DB.Password, cfg.DB.Host, cfg.DB.Port, cfg.DB.DBName)
|
||||
}
|
||||
|
||||
var err error
|
||||
|
||||
db, err = sql.Open(cfg.DB.Driver, dsn)
|
||||
if err != nil {
|
||||
logger.Fatal("Failed to connect to database", zap.Error(err))
|
||||
|
@ -158,23 +155,14 @@ func main() {
|
|||
}
|
||||
|
||||
func migrateSqlite(db *sql.DB) error {
|
||||
driver, err := sqlite3.WithInstance(db, &sqlite3.Config{})
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to create migration driver: %w", err)
|
||||
goose.SetBaseFS(sqliteMigrations)
|
||||
|
||||
if err := goose.SetDialect("sqlite3"); err != nil {
|
||||
return fmt.Errorf("failed to set db type for migration: %w", err)
|
||||
}
|
||||
|
||||
sourceInstance, err := iofs.New(sqliteMigrations, "database/sqlite/migration")
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to create migration source: %w", err)
|
||||
}
|
||||
|
||||
m, err := migrate.NewWithInstance("iofs", sourceInstance, "sqlite3", driver)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to initialize migrations: %w", err)
|
||||
}
|
||||
|
||||
if err := m.Up(); err != nil && err != migrate.ErrNoChange {
|
||||
return fmt.Errorf("failed to run migrations: %w", err)
|
||||
if err := goose.Up(db, "database/sqlite/migration"); err != nil {
|
||||
return fmt.Errorf("failed to apply db migrations: %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
Loading…
Add table
Reference in a new issue