Another HTTP API fix

This commit is contained in:
Torkel Ödegaard
2015-05-04 08:19:29 +02:00
parent 73ee8a5985
commit 38d851eb98
2 changed files with 43 additions and 13 deletions
+25 -13
View File
@@ -23,21 +23,17 @@ func SaveDashboard(cmd *m.SaveDashboardCommand) error {
dash := cmd.GetDashboardModel()
// try get existing dashboard
existing := m.Dashboard{Slug: dash.Slug, OrgId: dash.OrgId}
hasExisting, err := sess.Get(&existing)
if err != nil {
return err
}
var existing, sameTitle m.Dashboard
if hasExisting {
// another dashboard with same name
if dash.Id != existing.Id {
if cmd.Overwrite {
dash.Id = existing.Id
} else {
return m.ErrDashboardWithSameNameExists
}
if dash.Id > 0 {
dashWithIdExists, err := sess.Where("id=? AND org_id=?", dash.Id, dash.OrgId).Get(&existing)
if err != nil {
return err
}
if !dashWithIdExists {
return m.ErrDashboardNotFound
}
// check for is someone else has written in between
if dash.Version != existing.Version {
if cmd.Overwrite {
@@ -48,6 +44,22 @@ func SaveDashboard(cmd *m.SaveDashboardCommand) error {
}
}
sameTitleExists, err := sess.Where("org_id=? AND slug=?", dash.OrgId, dash.Slug).Get(&sameTitle)
if err != nil {
return err
}
if sameTitleExists {
// another dashboard with same name
if dash.Id != sameTitle.Id {
if cmd.Overwrite {
dash.Id = sameTitle.Id
} else {
return m.ErrDashboardWithSameNameExists
}
}
}
affectedRows := int64(0)
if dash.Id == 0 {