80 lines
1.5 KiB
Go
80 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
// External
|
|
werr "git.gibonuddevalla.se/go/wrappederror"
|
|
|
|
// Internal
|
|
"smon/notification"
|
|
|
|
// Standard
|
|
"encoding/json"
|
|
)
|
|
|
|
type DbNotificationService struct {
|
|
ID int
|
|
Service string
|
|
Configuration string
|
|
Prio int
|
|
}
|
|
|
|
func InitNotificationManager() (nm notification.Manager, err error) { // {{{
|
|
var dbServices []DbNotificationService
|
|
row := service.Db.Conn.QueryRow(`
|
|
WITH services AS (
|
|
SELECT
|
|
id,
|
|
prio,
|
|
service,
|
|
configuration::varchar
|
|
FROM notification n
|
|
ORDER BY
|
|
prio ASC
|
|
)
|
|
SELECT COALESCE(jsonb_agg(s.*), '[]')
|
|
FROM services s
|
|
`,
|
|
)
|
|
var dbData []byte
|
|
err = row.Scan(&dbData)
|
|
if err != nil {
|
|
err = werr.Wrap(err).WithCode("002-0006")
|
|
return
|
|
}
|
|
|
|
err = json.Unmarshal(dbData, &dbServices)
|
|
if err != nil {
|
|
err = werr.Wrap(err).WithCode("002-0007")
|
|
return
|
|
}
|
|
|
|
nm = notification.NewManager(logger)
|
|
var service notification.Service
|
|
for _, dbService := range dbServices {
|
|
service, err = notification.ServiceFactory(
|
|
dbService.Service,
|
|
[]byte(dbService.Configuration),
|
|
dbService.Prio,
|
|
"blah",
|
|
//config.Application.NotificationBaseURL,
|
|
logger,
|
|
)
|
|
if err != nil {
|
|
err = werr.Wrap(err).WithData(dbService.Service)
|
|
}
|
|
nm.AddService(service)
|
|
}
|
|
|
|
return
|
|
} // }}}
|
|
|
|
func AcknowledgeNotification(uuid string) (err error) { // {{{
|
|
/*
|
|
_, err = service.Db.Conn.Exec(`UPDATE schedule SET acknowledged=true WHERE schedule_uuid=$1`, uuid)
|
|
if err != nil {
|
|
err = werr.Wrap(err).WithData(uuid)
|
|
}
|
|
*/
|
|
return
|
|
} // }}}
|