// Watch or unwatch repository.
func WatchRepo(userId, repoId int64, watch bool) (err error) {
if watch {
- _, err = orm.Insert(&Watch{RepoId: repoId, UserId: userId})
+ if _, err = orm.Insert(&Watch{RepoId: repoId, UserId: userId}); err != nil {
+ return err
+ }
+
+ rawSql := "UPDATE `repository` SET num_watches = num_watches + 1 WHERE id = ?"
+ _, err = orm.Exec(rawSql, repoId)
} else {
- _, err = orm.Delete(&Watch{0, repoId, userId})
+ if _, err = orm.Delete(&Watch{0, repoId, userId}); err != nil {
+ return err
+ }
+ rawSql := "UPDATE `repository` SET num_watches = num_watches - 1 WHERE id = ?"
+ _, err = orm.Exec(rawSql, repoId)
}
return err
}