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"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/num30/config"
|
"github.com/num30/config"
|
||||||
|
"github.com/pressly/goose/v3"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"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"
|
||||||
"github.com/labstack/echo/v4/middleware"
|
"github.com/labstack/echo/v4/middleware"
|
||||||
_ "github.com/mattn/go-sqlite3"
|
_ "github.com/mattn/go-sqlite3"
|
||||||
|
@ -24,7 +22,7 @@ import (
|
||||||
//go:embed static/*
|
//go:embed static/*
|
||||||
var staticFiles embed.FS
|
var staticFiles embed.FS
|
||||||
|
|
||||||
//go:embed database/sqlite/migration/*
|
//go:embed database/sqlite/migration/*.sql
|
||||||
var sqliteMigrations embed.FS
|
var sqliteMigrations embed.FS
|
||||||
|
|
||||||
type OAuthConfig struct {
|
type OAuthConfig struct {
|
||||||
|
@ -105,8 +103,7 @@ func main() {
|
||||||
dsn = fmt.Sprintf("%s:%s@tcp(%s:%d)/%s",
|
dsn = fmt.Sprintf("%s:%s@tcp(%s:%d)/%s",
|
||||||
cfg.DB.User, cfg.DB.Password, cfg.DB.Host, cfg.DB.Port, cfg.DB.DBName)
|
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)
|
db, err = sql.Open(cfg.DB.Driver, dsn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Fatal("Failed to connect to database", zap.Error(err))
|
logger.Fatal("Failed to connect to database", zap.Error(err))
|
||||||
|
@ -158,23 +155,14 @@ func main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func migrateSqlite(db *sql.DB) error {
|
func migrateSqlite(db *sql.DB) error {
|
||||||
driver, err := sqlite3.WithInstance(db, &sqlite3.Config{})
|
goose.SetBaseFS(sqliteMigrations)
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("failed to create migration driver: %w", err)
|
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 := goose.Up(db, "database/sqlite/migration"); err != nil {
|
||||||
if err != nil {
|
return fmt.Errorf("failed to apply db migrations: %w", err)
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
Loading…
Add table
Reference in a new issue