fix: schema migrate (#1846)

* fix: schema migrate

* chore: update
This commit is contained in:
boojack 2023-06-20 12:18:04 +08:00 committed by GitHub
parent b34aded376
commit 07e82c3f4a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 57 additions and 51 deletions

View File

@ -50,13 +50,18 @@ func (db *DB) Open(ctx context.Context) (err error) {
db.DBInstance = sqliteDB
if db.profile.Mode == "prod" {
// If db file not exists, we should migrate the database.
if _, err := os.Stat(db.profile.DSN); errors.Is(err, os.ErrNotExist) {
_, err := os.Stat(db.profile.DSN)
if err != nil {
// If db file not exists, we should create a new one with latest schema.
if errors.Is(err, os.ErrNotExist) {
if err := db.applyLatestSchema(ctx); err != nil {
return fmt.Errorf("failed to apply latest schema: %w", err)
return fmt.Errorf("failed to apply latest schema, err: %w", err)
}
} else {
return fmt.Errorf("failed to get db file stat, err: %w", err)
}
} else {
// If db file exists, we should check if we need to migrate the database.
currentVersion := version.GetCurrentVersion(db.profile.Mode)
migrationHistoryList, err := db.FindMigrationHistoryList(ctx, &MigrationHistoryFind{})
if err != nil {
@ -110,6 +115,7 @@ func (db *DB) Open(ctx context.Context) (err error) {
println(fmt.Sprintf("Failed to remove temp database file, err %v", err))
}
}
}
} else {
// In non-prod mode, we should always migrate the database.
if _, err := os.Stat(db.profile.DSN); errors.Is(err, os.ErrNotExist) {

View File

@ -67,7 +67,7 @@ func findMigrationHistoryList(ctx context.Context, tx *sql.Tx, find *MigrationHi
FROM
migration_history
WHERE ` + strings.Join(where, " AND ") + `
ORDER BY version DESC
ORDER BY created_ts DESC
`
rows, err := tx.QueryContext(ctx, query, args...)
if err != nil {