mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Glue: Add configuration support to PATCH (#56117)
* feat: add config to tests v0 * feat: add config to UpdateCorrelationCommand * refactor: repair some tests * refactor: repair another test * refactor: repair last test * refactor: remove possible test * refactor: add comments * refactor: add changes from code review * refactor: implement more detailed patch * feat: add tests for partial config update * refactor: make error handling more detailed Co-authored-by: Giordano Ricci <me@giordanoricci.com> Co-authored-by: Giordano Ricci <me@giordanoricci.com>
This commit is contained in:
@@ -99,32 +99,42 @@ func (s CorrelationsService) updateCorrelation(ctx context.Context, cmd UpdateCo
|
||||
return ErrSourceDataSourceReadOnly
|
||||
}
|
||||
|
||||
if cmd.Label == nil && cmd.Description == nil {
|
||||
if cmd.Label == nil && cmd.Description == nil && (cmd.Config == nil || (cmd.Config.Field == nil && cmd.Config.Target == nil && cmd.Config.Type == nil)) {
|
||||
return ErrUpdateCorrelationEmptyParams
|
||||
}
|
||||
update := Correlation{}
|
||||
if cmd.Label != nil {
|
||||
update.Label = *cmd.Label
|
||||
session.MustCols("label")
|
||||
}
|
||||
if cmd.Description != nil {
|
||||
update.Description = *cmd.Description
|
||||
session.MustCols("description")
|
||||
}
|
||||
|
||||
updateCount, err := session.Where("uid = ? AND source_uid = ?", correlation.UID, correlation.SourceUID).Limit(1).Update(update)
|
||||
if updateCount == 0 {
|
||||
found, err := session.Get(&correlation)
|
||||
if !found {
|
||||
return ErrCorrelationNotFound
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
found, err := session.Get(&correlation)
|
||||
if !found {
|
||||
return ErrCorrelationNotFound
|
||||
if cmd.Label != nil {
|
||||
correlation.Label = *cmd.Label
|
||||
session.MustCols("label")
|
||||
}
|
||||
if cmd.Description != nil {
|
||||
correlation.Description = *cmd.Description
|
||||
session.MustCols("description")
|
||||
}
|
||||
if cmd.Config != nil {
|
||||
session.MustCols("config")
|
||||
if cmd.Config.Field != nil {
|
||||
correlation.Config.Field = *cmd.Config.Field
|
||||
}
|
||||
if cmd.Config.Type != nil {
|
||||
correlation.Config.Type = *cmd.Config.Type
|
||||
}
|
||||
if cmd.Config.Target != nil {
|
||||
correlation.Config.Target = *cmd.Config.Target
|
||||
}
|
||||
}
|
||||
|
||||
updateCount, err := session.Where("uid = ? AND source_uid = ?", correlation.UID, correlation.SourceUID).Limit(1).Update(correlation)
|
||||
if updateCount == 0 {
|
||||
return ErrCorrelationNotFound
|
||||
}
|
||||
return err
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user