package main import ( // External werr "git.gibonuddevalla.se/go/wrappederror" // Internal "notes/notification" // Standard "database/sql" "encoding/json" ) type DbNotificationService struct { ID int UserID int `json:"user_id"` Service string Configuration string Prio int } func InitNotificationManager() (err error) {// {{{ var dbServices []DbNotificationService var row *sql.Row row = service.Db.Conn.QueryRow(` WITH services AS ( SELECT id, user_id, prio, service, configuration::varchar FROM notification n ORDER BY user_id ASC, 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 } notificationManager = notification.NewManager() var service notification.Service for _, dbService := range dbServices { service, err = notification.ServiceFactory( dbService.Service, []byte(dbService.Configuration), dbService.Prio, config.Application.NotificationBaseURL, ) notificationManager.AddService(dbService.UserID, service) } return }// }}} func AcknowledgeNotification(uuid string) (err error) {// {{{ _, err = service.Db.Conn.Exec(`UPDATE schedule SET acknowledged=true WHERE schedule_uuid=$1`, uuid) return }// }}}