|
|
|
@ -4,6 +4,7 @@ import (
|
|
|
|
|
"context"
|
|
|
|
|
"database/sql"
|
|
|
|
|
"fmt"
|
|
|
|
|
"strings"
|
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
log "github.com/sirupsen/logrus"
|
|
|
|
@ -81,7 +82,23 @@ func createDialector(dbConf conf.DatabaseConfig) (dialector gorm.Dialector, err
|
|
|
|
|
SkipInitializeWithVersion: false,
|
|
|
|
|
})
|
|
|
|
|
case conf.DatabaseTypeSqlite3:
|
|
|
|
|
dialector = newSqliteDialector(dbConf)
|
|
|
|
|
if dbConf.CustomDSN != "" {
|
|
|
|
|
dsn = dbConf.CustomDSN
|
|
|
|
|
} else if dbConf.Name == "memory" || strings.HasPrefix(dbConf.Name, ":memory:") {
|
|
|
|
|
dsn = "file::memory:?cache=shared&_journal_mode=WAL&_vacuum=incremental&_pragma=foreign_keys(1)"
|
|
|
|
|
log.Infof("sqlite3 database memory")
|
|
|
|
|
} else {
|
|
|
|
|
if !strings.HasSuffix(dbConf.Name, ".db") {
|
|
|
|
|
dbConf.Name = dbConf.Name + ".db"
|
|
|
|
|
}
|
|
|
|
|
dbConf.Name, err = utils.OptFilePath(dbConf.Name)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Fatalf("sqlite3 database file path error: %v", err)
|
|
|
|
|
}
|
|
|
|
|
dsn = fmt.Sprintf("%s?_journal_mode=WAL&_vacuum=incremental&_pragma=foreign_keys(1)", dbConf.Name)
|
|
|
|
|
log.Infof("sqlite3 database file: %s", dbConf.Name)
|
|
|
|
|
}
|
|
|
|
|
dialector = openSqlite(dsn)
|
|
|
|
|
case conf.DatabaseTypePostgres:
|
|
|
|
|
if dbConf.CustomDSN != "" {
|
|
|
|
|
dsn = dbConf.CustomDSN
|
|
|
|
|