refactor: replace golang-migrate with goose for database migrations

This commit is contained in:
garionion 2025-02-26 00:11:04 +01:00 committed by garionion (aider)
parent aabf45915a
commit 10b2056954

30
main.go
View file

@ -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