feat(panettone): Send email notifications for comments
When a user posts a comment on an issue, send email notifications (respecting the enable-email-notifications setting) to the author of that issue and all the other users who have commented on that issue. Since the oauth & gmail API stuff that the relay does is slow, this happens in a background thread. Change-Id: Ic00c265deab1030d9ba64c29c9f56314dd179141 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2805 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org> Reviewed-by: tazjin <mail@tazj.in>
This commit is contained in:
parent
349b98ccc8
commit
8d3ab61e7c
4 changed files with 46 additions and 2 deletions
|
|
@ -10,6 +10,20 @@
|
|||
"Initialize the global postgresql connection for Panettone"
|
||||
(postmodern:connect-toplevel database user password host :port port))
|
||||
|
||||
(defun make-thread
|
||||
(function &rest args)
|
||||
"Make a new thread as per `BORDEAUX-THREADS:MAKE-THREAD' but with its own, new
|
||||
database connection."
|
||||
(let ((spec `(,(or (uiop:getenvp "PGDATABASE") "panettone")
|
||||
,(or (uiop:getenvp "PGUSER") "panettone")
|
||||
,(or (uiop:getenvp "PGPASSWORD") "password")
|
||||
,(or (uiop:getenvp "PGHOST") "localhost")
|
||||
:port ,(or (integer-env "PGPORT") 5432))))
|
||||
(apply #'bt:make-thread
|
||||
(lambda ()
|
||||
(postmodern:call-with-connection spec function))
|
||||
args)))
|
||||
|
||||
;;;
|
||||
;;; Schema
|
||||
;;;
|
||||
|
|
@ -356,10 +370,20 @@ ISSUE-ID, which should be a plist of initforms, and return an instance of
|
|||
(error 'issue-not-found :id issue-id))
|
||||
(insert-dao (apply #'make-instance 'issue-comment :issue-id issue-id attrs)))
|
||||
|
||||
(defun issue-commenter-dns (issue-id)
|
||||
"Returns a list of all the dns of users who have commented on ISSUE-ID"
|
||||
(query (:select 'author-dn :distinct
|
||||
:from 'issue-comments
|
||||
:where (:= 'issue-id issue-id))
|
||||
:column))
|
||||
|
||||
(comment
|
||||
(connect-postgres)
|
||||
(ddl/init)
|
||||
(make-instance 'issue :subject "test")
|
||||
(create-issue :subject "test"
|
||||
:author-dn "cn=glittershark,ou=users,dc=tvl,dc=fyi")
|
||||
|
||||
(issue-commenter-dns 1)
|
||||
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue