mirror of
https://github.com/SecurityBrewery/catalyst.git
synced 2025-12-06 15:22:47 +01:00
73 lines
1.4 KiB
Go
73 lines
1.4 KiB
Go
package app
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/pocketbase/dbx"
|
|
"github.com/pocketbase/pocketbase/core"
|
|
"github.com/pocketbase/pocketbase/migrations"
|
|
"github.com/pocketbase/pocketbase/migrations/logs"
|
|
"github.com/pocketbase/pocketbase/tools/migrate"
|
|
)
|
|
|
|
type migration struct {
|
|
db *dbx.DB
|
|
migrations migrate.MigrationsList
|
|
}
|
|
|
|
func MigrateDBs(app core.App) error {
|
|
for _, m := range []migration{
|
|
{db: app.DB(), migrations: migrations.AppMigrations},
|
|
{db: app.LogsDB(), migrations: logs.LogsMigrations},
|
|
} {
|
|
runner, err := migrate.NewRunner(m.db, m.migrations)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if _, err := runner.Up(); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func isIgnored(err error) bool {
|
|
// this fix ignores some errors that come from upstream migrations.
|
|
ignoreErrors := []string{
|
|
"1673167670_multi_match_migrate",
|
|
"1660821103_add_user_ip_column",
|
|
}
|
|
|
|
for _, ignore := range ignoreErrors {
|
|
if strings.Contains(err.Error(), ignore) {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
func MigrateDBsDown(app core.App) error {
|
|
for _, m := range []migration{
|
|
{db: app.DB(), migrations: migrations.AppMigrations},
|
|
{db: app.LogsDB(), migrations: logs.LogsMigrations},
|
|
} {
|
|
runner, err := migrate.NewRunner(m.db, m.migrations)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if _, err := runner.Down(len(m.migrations.Items())); err != nil {
|
|
if isIgnored(err) {
|
|
continue
|
|
}
|
|
|
|
return err
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|