|
|
@@ -41,10 +41,14 @@ func (d *DbItem) Dsn() string { |
|
|
|
} |
|
|
|
|
|
|
|
func init() { |
|
|
|
Reload() |
|
|
|
// Reload() 不再自动链接数据库了, 需要自己手动 |
|
|
|
} |
|
|
|
|
|
|
|
func Reload(dir ...string) { |
|
|
|
func ReloadByDefault() { |
|
|
|
Reload(nil) |
|
|
|
} |
|
|
|
|
|
|
|
func Reload(files []string, dir ...string) { |
|
|
|
var err error |
|
|
|
var configer *grconfig.Configer |
|
|
|
logger := grlogs.GetAli("sql") |
|
|
@@ -61,26 +65,39 @@ func Reload(dir ...string) { |
|
|
|
dir = append(dir, "conf/") |
|
|
|
configer = grconfig.New(path.Join(dir...)) |
|
|
|
} |
|
|
|
dsns, err := GetDsn(configer) |
|
|
|
dsns, err := GetDsn(configer, files...) |
|
|
|
if err = LoadXorm(dsns); err != nil { |
|
|
|
logger.Critical(err.Error()) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
func GetDsn(configer *grconfig.Configer) (DsnList map[string]dsnConfig, err error) { |
|
|
|
func GetDsn(configer *grconfig.Configer, dbfiles ...string) (DsnList map[string]dsnConfig, err error) { |
|
|
|
var items map[string]*DbItem |
|
|
|
DsnList = make(map[string]dsnConfig) |
|
|
|
err = configer.Item("db", &items) |
|
|
|
if err != nil { |
|
|
|
return |
|
|
|
|
|
|
|
if nil == dbfiles || len(dbfiles) == 0 { |
|
|
|
dbfiles = []string{"db"} |
|
|
|
} |
|
|
|
for alias, v := range items { |
|
|
|
dsn := v.Dsn() |
|
|
|
driver := v.Driver |
|
|
|
if driver == "" { |
|
|
|
driver = "mysql" |
|
|
|
|
|
|
|
for _, dbfile := range dbfiles { |
|
|
|
|
|
|
|
if dbfile == "" { |
|
|
|
continue |
|
|
|
} |
|
|
|
|
|
|
|
err = configer.Item(dbfile, &items) |
|
|
|
if err != nil { |
|
|
|
return |
|
|
|
} |
|
|
|
for alias, v := range items { |
|
|
|
dsn := v.Dsn() |
|
|
|
driver := v.Driver |
|
|
|
if driver == "" { |
|
|
|
driver = "mysql" |
|
|
|
} |
|
|
|
DsnList[alias] = dsnConfig{Dsn: dsn, Driver: driver, Item: v} |
|
|
|
} |
|
|
|
DsnList[alias] = dsnConfig{Dsn: dsn, Driver: driver, Item: v} |
|
|
|
} |
|
|
|
|
|
|
|
return |
|
|
|
} |