diff options
author | guillep2k <18600385+guillep2k@users.noreply.github.com> | 2019-11-18 05:08:20 -0300 |
---|---|---|
committer | zeripath <art27@cantab.net> | 2019-11-18 08:08:20 +0000 |
commit | 08ae6bb7edb9582c38edb8a0dba1b1be10fb00fc (patch) | |
tree | c64e9a1c9cfaeb6cd0c2ee012d3ad32c38e78ce3 /models/issue.go | |
parent | 9ff63126274b0df6e035541eafd48970c402e61e (diff) | |
download | gitea-08ae6bb7edb9582c38edb8a0dba1b1be10fb00fc.tar.gz gitea-08ae6bb7edb9582c38edb8a0dba1b1be10fb00fc.zip |
Rewrite delivery of issue and comment mails (#9009)
* Mail issue subscribers, rework the function
* Simplify a little more
* Fix unused variable
* Refactor mail delivery to avoid heavy load on server
* Avoid splitting into too many goroutines
* Fix comments and optimize GetMaileableUsersByIDs()
* Fix return on errors
Diffstat (limited to 'models/issue.go')
-rw-r--r-- | models/issue.go | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/models/issue.go b/models/issue.go index 1fe9140dad..0113f0a404 100644 --- a/models/issue.go +++ b/models/issue.go @@ -1219,6 +1219,19 @@ func Issues(opts *IssuesOptions) ([]*Issue, error) { return issues, nil } +// GetParticipantsIDsByIssueID returns the IDs of all users who participated in comments of an issue, +// but skips joining with `user` for performance reasons. +// User permissions must be verified elsewhere if required. +func GetParticipantsIDsByIssueID(issueID int64) ([]int64, error) { + userIDs := make([]int64, 0, 5) + return userIDs, x.Table("comment"). + Cols("poster_id"). + Where("issue_id = ?", issueID). + And("type in (?,?,?)", CommentTypeComment, CommentTypeCode, CommentTypeReview). + Distinct("poster_id"). + Find(&userIDs) +} + // GetParticipantsByIssueID returns all users who are participated in comments of an issue. func GetParticipantsByIssueID(issueID int64) ([]*User, error) { return getParticipantsByIssueID(x, issueID) |