Skip to content

Commit

Permalink
perform gorm upserts inside transactions
Browse files Browse the repository at this point in the history
  • Loading branch information
timburks committed Sep 29, 2020
1 parent 5ef75fd commit 8acdf98
Showing 1 changed file with 11 additions and 7 deletions.
18 changes: 11 additions & 7 deletions server/gorm/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -211,13 +211,17 @@ func (c *Client) Put(ctx context.Context, k storage.Key, v interface{}) (storage
case *models.Label:
r.Key = k.(*Key).Name
}
rowsAffected := c.db.Model(v).Where("key = ?", k.(*Key).Name).Updates(v).RowsAffected
if rowsAffected == 0 {
err := c.db.Create(v).Error
if err != nil {
log.Printf("CREATE ERROR %s", err.Error())
}
}
c.db.Transaction(
func(tx *gorm.DB) error {
rowsAffected := tx.Model(v).Where("key = ?", k.(*Key).Name).Updates(v).RowsAffected
if rowsAffected == 0 {
err := tx.Create(v).Error
if err != nil {
log.Printf("CREATE ERROR %s", err.Error())
}
}
return nil
})
return k, nil
}

Expand Down

0 comments on commit 8acdf98

Please sign in to comment.