Files
Christoph K. dfd66e43c6 Initial commit
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 15:03:55 +01:00

37 lines
927 B
Go
Executable File

package migrate
import (
"database/sql"
"errors"
"fmt"
"io/fs"
"github.com/golang-migrate/migrate/v4"
"github.com/golang-migrate/migrate/v4/database/sqlite3"
"github.com/golang-migrate/migrate/v4/source/iofs"
)
// Run führt alle ausstehenden Migrationen aus.
// migrationsFS muss die Migrations-Dateien enthalten.
func Run(db *sql.DB, migrationsFS fs.FS) error {
driver, err := sqlite3.WithInstance(db, &sqlite3.Config{})
if err != nil {
return fmt.Errorf("Migrations-Treiber erstellen: %w", err)
}
source, err := iofs.New(migrationsFS, ".")
if err != nil {
return fmt.Errorf("Migrations-Quelle erstellen: %w", err)
}
m, err := migrate.NewWithInstance("iofs", source, "sqlite3", driver)
if err != nil {
return fmt.Errorf("Migrator erstellen: %w", err)
}
if err := m.Up(); err != nil && !errors.Is(err, migrate.ErrNoChange) {
return fmt.Errorf("Migrationen ausführen: %w", err)
}
return nil
}