fix: postgres migration
Using postgres results in panic during migration due to "sqlite3" being hard-coded as the db dialect for performing `ScriptMigration`. This commit fixes this behavior by selecting the proper dialect from config.
This commit is contained in:
parent
1573dfcf8e
commit
235cd0ad93
3 changed files with 25 additions and 8 deletions
|
@ -8,6 +8,12 @@ pushover:
|
||||||
database:
|
database:
|
||||||
type: "sqlite"
|
type: "sqlite"
|
||||||
migration: true
|
migration: true
|
||||||
|
# these are only required for postgres
|
||||||
|
host: "secret"
|
||||||
|
port: "secret"
|
||||||
|
user: "secret"
|
||||||
|
password: "secret"
|
||||||
|
name: "secret"
|
||||||
jwt:
|
jwt:
|
||||||
secret: "secret"
|
secret: "secret"
|
||||||
session_time: 168h
|
session_time: 168h
|
||||||
|
|
|
@ -8,6 +8,12 @@ pushover:
|
||||||
database:
|
database:
|
||||||
type: "sqlite"
|
type: "sqlite"
|
||||||
migration: true
|
migration: true
|
||||||
|
# these are only required for postgres
|
||||||
|
host: "secret"
|
||||||
|
port: "secret"
|
||||||
|
user: "secret"
|
||||||
|
password: "secret"
|
||||||
|
name: "secret"
|
||||||
jwt:
|
jwt:
|
||||||
secret: "secret"
|
secret: "secret"
|
||||||
session_time: 168h
|
session_time: 168h
|
||||||
|
|
|
@ -3,7 +3,9 @@ package database
|
||||||
import (
|
import (
|
||||||
"embed"
|
"embed"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
|
||||||
|
migrate "github.com/rubenv/sql-migrate"
|
||||||
|
"gorm.io/gorm"
|
||||||
|
|
||||||
"donetick.com/core/config"
|
"donetick.com/core/config"
|
||||||
chModel "donetick.com/core/internal/chore/model"
|
chModel "donetick.com/core/internal/chore/model"
|
||||||
|
@ -12,9 +14,7 @@ import (
|
||||||
pModel "donetick.com/core/internal/points"
|
pModel "donetick.com/core/internal/points"
|
||||||
tModel "donetick.com/core/internal/thing/model"
|
tModel "donetick.com/core/internal/thing/model"
|
||||||
uModel "donetick.com/core/internal/user/model" // Pure go SQLite driver, checkout https://github.com/glebarez/sqlite for details
|
uModel "donetick.com/core/internal/user/model" // Pure go SQLite driver, checkout https://github.com/glebarez/sqlite for details
|
||||||
migrations "donetick.com/core/migrations"
|
"donetick.com/core/migrations"
|
||||||
migrate "github.com/rubenv/sql-migrate"
|
|
||||||
"gorm.io/gorm"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:embed migrations/*.sql
|
//go:embed migrations/*.sql
|
||||||
|
@ -50,9 +50,14 @@ func MigrationScripts(gormDB *gorm.DB, cfg *config.Config) error {
|
||||||
Root: "migrations",
|
Root: "migrations",
|
||||||
}
|
}
|
||||||
|
|
||||||
path := os.Getenv("DT_SQLITE_PATH")
|
var dialect string
|
||||||
if path == "" {
|
switch cfg.Database.Type {
|
||||||
path = "donetick.db"
|
case "postgres":
|
||||||
|
dialect = "postgres"
|
||||||
|
case "sqlite":
|
||||||
|
dialect = "sqlite3"
|
||||||
|
default:
|
||||||
|
return fmt.Errorf("unsupported database type: %s", cfg.Database.Type)
|
||||||
}
|
}
|
||||||
|
|
||||||
db, err := gormDB.DB()
|
db, err := gormDB.DB()
|
||||||
|
@ -60,7 +65,7 @@ func MigrationScripts(gormDB *gorm.DB, cfg *config.Config) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
n, err := migrate.Exec(db, "sqlite3", migrations, migrate.Up)
|
n, err := migrate.Exec(db, dialect, migrations, migrate.Up)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue