Feat: custom db dsn

pull/21/head
zijiren233 2 years ago
parent 9f189cd504
commit afa2c8d15b

@ -24,7 +24,9 @@ func InitDatabase(ctx context.Context) error {
switch conf.Conf.Database.Type {
case conf.DatabaseTypeMysql:
var dsn string
if conf.Conf.Database.Port == 0 {
if conf.Conf.Database.CustomDSN != "" {
dsn = conf.Conf.Database.CustomDSN
} else if conf.Conf.Database.Port == 0 {
dsn = fmt.Sprintf("%s:%s@unix(%s)/%s?charset=utf8mb4&parseTime=True&loc=Local&tls=%s",
conf.Conf.Database.User,
conf.Conf.Database.Password,
@ -55,7 +57,9 @@ func InitDatabase(ctx context.Context) error {
// opts = append(opts, &gorm.Config{})
case conf.DatabaseTypeSqlite3:
var dsn string
if conf.Conf.Database.DBName == "memory" || strings.HasPrefix(conf.Conf.Database.DBName, ":memory:") {
if conf.Conf.Database.CustomDSN != "" {
dsn = conf.Conf.Database.CustomDSN
} else if conf.Conf.Database.DBName == "memory" || strings.HasPrefix(conf.Conf.Database.DBName, ":memory:") {
dsn = "file::memory:?cache=shared&_journal_mode=WAL&_vacuum=incremental&_pragma=foreign_keys(1)"
log.Infof("sqlite3 database memory")
} else {
@ -72,7 +76,9 @@ func InitDatabase(ctx context.Context) error {
// opts = append(opts, &gorm.Config{})
case conf.DatabaseTypePostgres:
var dsn string
if conf.Conf.Database.Port == 0 {
if conf.Conf.Database.CustomDSN != "" {
dsn = conf.Conf.Database.CustomDSN
} else if conf.Conf.Database.Port == 0 {
dsn = fmt.Sprintf("host=%s user=%s password=%s dbname=%s sslmode=%s",
conf.Conf.Database.Host,
conf.Conf.Database.User,

@ -16,6 +16,8 @@ type DatabaseConfig struct {
Password string `yaml:"password" lc:"database password" env:"DATABASE_PASSWORD"`
DBName string `yaml:"db_name" lc:"database name, when type is sqlite3, it will use sqlite db file or memory" env:"DATABASE_DB_NAME"`
SslMode string `yaml:"ssl_mode" lc:"database ssl mode, default disable" env:"DATABASE_SSL_MODE"`
CustomDSN string `yaml:"custom_dsn" lc:"custom dsn, when not empty, it will ignore other config" env:"DATABASE_CUSTOM_DSN"`
}
func DefaultDatabaseConfig() DatabaseConfig {

Loading…
Cancel
Save