|
@@ -424,9 +424,18 @@ type Watch struct {
|
|
|
// 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
|
|
|
}
|