feat: add dsn support #55

This commit is contained in:
engigu
2026-03-16 08:33:48 +08:00
parent d654acee1c
commit 3ac230cdf7
5 changed files with 18 additions and 4 deletions
+6 -2
View File
@@ -25,6 +25,7 @@ type Config struct {
Password string
DBName string
Path string // for sqlite
DSN string // for mysql/mariadb unix socket or custom dsn
}
func Init(cfg *Config) error {
@@ -40,8 +41,11 @@ func Init(cfg *Config) error {
case "sqlite":
dialector = sqlite.Open(cfg.Path + "?_busy_timeout=5000")
case "mysql":
dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Asia%%2FShanghai",
cfg.User, cfg.Password, cfg.Host, cfg.Port, cfg.DBName)
dsn := cfg.DSN
if dsn == "" {
dsn = fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Asia%%2FShanghai",
cfg.User, cfg.Password, cfg.Host, cfg.Port, cfg.DBName)
}
dialector = mysql.Open(dsn)
case "postgres":
dsn := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=disable TimeZone=Asia/Shanghai",