Allow settings to be removed (via rest-bulkset)

This commit is contained in:
Denis Arh
2021-11-23 15:09:24 +01:00
parent f53c23311e
commit 0114411f18
2 changed files with 22 additions and 3 deletions
+4
View File
@@ -232,6 +232,10 @@ func (svc *settings) BulkSet(ctx context.Context, vv types.SettingValueSet) (err
return
}
if err = store.DeleteSetting(ctx, svc.store, vv.Trash()...); err != nil {
return
}
svc.logChange(ctx, vv)
return svc.updateCurrent(ctx, vv)
+18 -3
View File
@@ -88,6 +88,10 @@ func (v *SettingValue) Bool() (out bool) {
return
}
func (v *SettingValue) IsNull() (out bool) {
return v == nil || string(v.Value) == "null" || string(v.Value) == ""
}
func (v *SettingValue) NormalizeValue() {
}
@@ -232,7 +236,7 @@ func (set SettingValueSet) New(in SettingValueSet) (out SettingValueSet) {
org := set.KV()
for _, v := range in {
if !org.Has(v.Name) {
if !org.Has(v.Name) && !v.IsNull() {
out = append(out, v)
}
}
@@ -240,12 +244,23 @@ func (set SettingValueSet) New(in SettingValueSet) (out SettingValueSet) {
return
}
// New returns all new values (that do not exist in the original set)
// New returns all old values (that exist in the original set)
func (set SettingValueSet) Old(in SettingValueSet) (out SettingValueSet) {
org := set.KV()
for _, v := range in {
if org.Has(v.Name) {
if org.Has(v.Name) && !v.IsNull() {
out = append(out, v)
}
}
return
}
// Trash returns values from the set that were set ti nil
func (set SettingValueSet) Trash() (out SettingValueSet) {
for _, v := range set {
if v.IsNull() {
out = append(out, v)
}
}