Files
2024-07-04 17:54:34 +08:00

46 lines
770 B
Go

package config
import (
"net/url"
"os"
"chaitin.cn/dev/go/settings"
)
type DBConfig struct {
URL string `yaml:"url"`
LogSQL bool `yaml:"log_sql"`
SSLMode bool `yaml:"ssl_mode"`
}
func DefaultDBConfig() DBConfig {
return DBConfig{
URL: "postgres://safeline-ce:safeline-ce@127.0.0.1/safeline-ce",
LogSQL: false,
SSLMode: false,
}
}
func (dbc *DBConfig) Load(setting *settings.Setting) error {
if err := setting.Unmarshal("db", dbc); err != nil {
return err
}
if v, ok := os.LookupEnv("DATABASE_URL"); ok {
dbc.URL = v
}
dbURL, err := url.Parse(dbc.URL)
if err != nil {
return err
}
q := dbURL.Query()
if !dbc.SSLMode {
q.Set("sslmode", "disable")
}
dbURL.RawQuery = q.Encode()
dbc.URL = dbURL.String()
return nil
}