优化结构

This commit is contained in:
Yvan
2026-08-28 09:44:11 +08:00
parent 279692375b
commit e997d9718e
26 changed files with 106 additions and 129 deletions
+16
View File
@@ -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)
+9
View File
@@ -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)
}
}