feat(config): make resolver support null value to delete a

key.
This commit is contained in:
2026-09-08 23:10:26 +08:00
parent 2a1aa3d4ab
commit 292e879515
3 changed files with 51 additions and 2 deletions
+7 -1
View File
@@ -121,9 +121,15 @@ func UpdateSettings(settingsType string, patch map[string]interface{}) error {
// deepMergeSettings recursively overlays src onto dst. Object values merge
// key-by-key so partial updates keep sibling keys untouched; arrays and scalars
// always replace the destination value.
// always replace the destination value. A JSON null in the payload removes that
// key from dst, giving clients a way to delete entries (members, nodes, map
// rows) through /api/settings/set.
func deepMergeSettings(dst, src map[string]interface{}) {
for key, srcVal := range src {
if srcVal == nil {
delete(dst, key)
continue
}
srcObj, srcIsObj := srcVal.(map[string]interface{})
if srcIsObj {
if dstObj, ok := dst[key].(map[string]interface{}); ok {