diff --git a/models/issue_watch.go b/models/issue_watch.go index 03a677a3a..1e2650963 100644 --- a/models/issue_watch.go +++ b/models/issue_watch.go @@ -12,12 +12,21 @@ type IssueWatch struct { IsWatching bool `xorm:"NOT NULL"` Created time.Time `xorm:"-"` CreatedUnix int64 `xorm:"NOT NULL"` + Updated time.Time `xorm:"-"` + UpdatedUnix int64 `xorm:"NOT NULL"` } // BeforeInsert is invoked from XORM before inserting an object of this type. func (iw *IssueWatch) BeforeInsert() { iw.Created = time.Now() iw.CreatedUnix = time.Now().Unix() + iw.Updated = time.Now() + iw.UpdatedUnix = time.Now().Unix() +} + +func (iw *IssueWatch) BeforeUpdate() { + iw.Updated = time.Now() + iw.UpdatedUnix = time.Now().Unix() } // CreateOrUpdateIssueWatch set watching for a user and issue @@ -38,7 +47,9 @@ func CreateOrUpdateIssueWatch(userID, issueID int64, isWatching bool) error { return err } } else { - if _, err := x.Table(&IssueWatch{}).Id(iw.ID).Update(map[string]interface{}{"is_watching": isWatching}); err != nil { + iw.IsWatching = isWatching + + if _, err := x.Id(iw.ID).Cols("is_watching", "updated_unix").Update(iw); err != nil { return err } }