优化结构
This commit is contained in:
@@ -31,6 +31,22 @@ func MergeRuntimeConfig(current, next *Config) *Config {
|
||||
}
|
||||
if merged.Data == nil {
|
||||
merged.Data = cloneData(current.Data)
|
||||
} else if current.Data != nil {
|
||||
if merged.Data.Database == nil {
|
||||
merged.Data.Database = clonePtr(current.Data.Database)
|
||||
}
|
||||
if merged.Data.Redis == nil {
|
||||
merged.Data.Redis = cloneRedis(current.Data.Redis)
|
||||
}
|
||||
if merged.Data.Mongo == nil {
|
||||
merged.Data.Mongo = cloneMongo(current.Data.Mongo)
|
||||
}
|
||||
if merged.Data.DatabaseList == nil {
|
||||
merged.Data.DatabaseList = cloneSlice(current.Data.DatabaseList, clonePtr)
|
||||
}
|
||||
if merged.Data.RedisList == nil {
|
||||
merged.Data.RedisList = cloneSlice(current.Data.RedisList, cloneRedis)
|
||||
}
|
||||
}
|
||||
if merged.Admin == nil {
|
||||
merged.Admin = cloneAdmin(current.Admin)
|
||||
|
||||
@@ -168,3 +168,12 @@ func TestMergeRuntimeConfigPreservesOmittedSections(t *testing.T) {
|
||||
t.Fatal("MergeRuntimeConfig leaked mutable storage state into current config")
|
||||
}
|
||||
}
|
||||
|
||||
func TestMergeRuntimeConfigPreservesOmittedNestedDataSections(t *testing.T) {
|
||||
current := &Config{Data: &Data{Database: &Database{Source: "current-dsn"}}}
|
||||
next := &Config{Data: &Data{}}
|
||||
merged := MergeRuntimeConfig(current, next)
|
||||
if merged.Data == nil || merged.Data.Database == nil || merged.Data.Database.Source != "current-dsn" {
|
||||
t.Fatalf("nested database section was not preserved: %#v", merged.Data)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user