diff options
Diffstat (limited to 'models/issue_watch.go')
-rw-r--r-- | models/issue_watch.go | 14 |
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). |