summaryrefslogtreecommitdiffstats
path: root/models/issue_watch.go
diff options
context:
space:
mode:
Diffstat (limited to 'models/issue_watch.go')
-rw-r--r--models/issue_watch.go14
1 files changed, 14 insertions, 0 deletions
diff --git a/models/issue_watch.go b/models/issue_watch.go
index 181cd23433..92dc847415 100644
--- a/models/issue_watch.go
+++ b/models/issue_watch.go
@@ -126,6 +126,20 @@ func getIssueWatchers(e db.Engine, issueID int64, listOptions db.ListOptions) (I
return watches, sess.Find(&watches)
}
+// CountIssueWatchers count watchers/unwatchers of a given issue
+func CountIssueWatchers(issueID int64) (int64, error) {
+ return countIssueWatchers(db.GetEngine(db.DefaultContext), issueID)
+}
+
+func countIssueWatchers(e db.Engine, issueID int64) (int64, error) {
+ return e.
+ Where("`issue_watch`.issue_id = ?", issueID).
+ And("`issue_watch`.is_watching = ?", true).
+ And("`user`.is_active = ?", true).
+ And("`user`.prohibit_login = ?", false).
+ Join("INNER", "`user`", "`user`.id = `issue_watch`.user_id").Count(new(IssueWatch))
+}
+
func removeIssueWatchersByRepoID(e db.Engine, userID, repoID int64) error {
_, err := e.
Join("INNER", "issue", "`issue`.id = `issue_watch`.issue_id AND `issue`.repo_id = ?", repoID).