diff --git a/models/issue_watch.go b/models/issue_watch.go index e131483a8c..00822f55c7 100644 --- a/models/issue_watch.go +++ b/models/issue_watch.go @@ -21,7 +21,21 @@ type IssueWatchList []*IssueWatch // CreateOrUpdateIssueWatch set watching for a user and issue func CreateOrUpdateIssueWatch(userID, issueID int64, isWatching bool) error { - iw, exists, err := getIssueWatch(x, userID, issueID) + sess := x.NewSession() + defer sess.Close() + + if err := sess.Begin(); err != nil { + return err + } + if err := createOrUpdateIssueWatch(sess, userID, issueID, isWatching); err != nil { + return err + } + + return sess.Commit() +} + +func createOrUpdateIssueWatch(e Engine, userID, issueID int64, isWatching bool) error { + iw, exists, err := getIssueWatch(e, userID, issueID) if err != nil { return err } @@ -33,13 +47,13 @@ func CreateOrUpdateIssueWatch(userID, issueID int64, isWatching bool) error { IsWatching: isWatching, } - if _, err := x.Insert(iw); err != nil { + if _, err := e.Insert(iw); err != nil { return err } } else { iw.IsWatching = isWatching - if _, err := x.ID(iw.ID).Cols("is_watching", "updated_unix").Update(iw); err != nil { + if _, err := e.ID(iw.ID).Cols("is_watching", "updated_unix").Update(iw); err != nil { return err } }