mirror of
https://github.com/chaitin/SafeLine.git
synced 2026-02-09 10:13:28 +08:00
46 lines
770 B
Go
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
|
|
}
|