@@ -3,58 +3,17 @@ package app
33import (
44 "context"
55
6- "github.com/jackc/pgx/v5/pgconn"
7- "github.com/pkg/errors"
86 "github.com/target/goalert/permission"
97 "github.com/target/goalert/util/log"
108 "github.com/target/goalert/util/sqlutil"
119)
1210
13- func (app * App ) listenEvents (ctx context.Context ) (<- chan struct {}, error ) {
14- l , err := sqlutil .NewListener (ctx , app .cfg .LegacyLogger , app .db , "/goalert/config-refresh" )
15- if err != nil {
16- return nil , err
17- }
18- app .events = l
19- go func () {
20- for {
21- select {
22- case <- ctx .Done ():
23- return
24- case err := <- l .Errors ():
25- log .Log (ctx , errors .Wrap (err , "listen events" ))
26- }
27- }
28- }()
29-
30- doneCh := make (chan struct {})
31- go func () {
32- defer close (doneCh )
33- for {
34- var n * pgconn.Notification
35- select {
36- case n = <- l .Notifications ():
37- case <- ctx .Done ():
38- return
39- }
40- if n == nil {
41- return
42- }
43-
44- log .Debugf (log .WithFields (ctx , log.Fields {
45- "Channel" : n .Channel ,
46- "PID" : n .PID ,
47- "Payload" : n .Payload ,
48- }), "NOTIFY" )
49-
50- switch n .Channel {
51- case "/goalert/config-refresh" :
52- permission .SudoContext (ctx , func (ctx context.Context ) {
53- log .Log (ctx , app .ConfigStore .Reload (ctx ))
54- })
55- }
56- }
57- }()
58-
59- return doneCh , nil
11+ func (app * App ) setupListenEvents () {
12+ app .events = sqlutil .NewListener (app .pgx )
13+ app .events .Handle ("/goalert/config-refresh" , func (ctx context.Context , payload string ) error {
14+ permission .SudoContext (ctx , func (ctx context.Context ) {
15+ log .Log (ctx , app .ConfigStore .Reload (ctx ))
16+ })
17+ return nil
18+ })
6019}
0 commit comments