// SetKey sets a key value for a given configuration func SetKey(opts config.Options) config.ResponseObject { resp := config.ResponseObject{ Action: "set", } // Do not allow empty values to be set if opts.Value == nil { resp.Error = ValueRequiredMsg return resp } if opts.CfgName == "" { resp.Error = MissingCfgNameMsg return resp } key, keyErr := formatKeyName(opts.Key) if keyErr == nil { opts.Key = key storageResponse, err := storage.Update(opts) if err != nil { resp.Error = err.Error() resp.Message = "Error updating key value" } else { resp.Item.Key = key resp.Item.Value = opts.Value resp.Item.Version = 1 // Only set PrevItem if there was a previous value if storageResponse.Value != nil { resp.PrevItem = storageResponse resp.PrevItem.Key = key // Update the current item's value if there was a previous version resp.Item.Version = resp.PrevItem.Version + 1 } } } else { resp.Error = keyErr.Error() } return resp }