Add/edit notifications
This commit is contained in:
parent
1ede36b8aa
commit
c7ad2aa1b6
19 changed files with 531 additions and 11 deletions
|
|
@ -6,6 +6,7 @@ import (
|
|||
|
||||
// Standard
|
||||
"log/slog"
|
||||
"net/url"
|
||||
"slices"
|
||||
)
|
||||
|
||||
|
|
@ -13,7 +14,15 @@ type Service interface {
|
|||
SetLogger(*slog.Logger)
|
||||
GetPrio() int
|
||||
GetType() string
|
||||
SetPrio(int)
|
||||
SetExists(bool) // Exists in database
|
||||
Exists() bool // Exists in database
|
||||
String() string
|
||||
Send(int, []byte) error
|
||||
Update(url.Values) error
|
||||
Updated() Service
|
||||
Commit()
|
||||
JSON() []byte
|
||||
}
|
||||
|
||||
type Manager struct {
|
||||
|
|
@ -28,6 +37,7 @@ func NewManager(logger *slog.Logger) (nm Manager) {
|
|||
}
|
||||
|
||||
func (nm *Manager) AddService(service Service) {
|
||||
service.SetExists(true)
|
||||
nm.services = append(nm.services, service)
|
||||
slices.SortFunc(nm.services, func(a, b Service) int {
|
||||
if a.GetPrio() < b.GetPrio() {
|
||||
|
|
@ -40,6 +50,16 @@ func (nm *Manager) AddService(service Service) {
|
|||
})
|
||||
}
|
||||
|
||||
func (nm *Manager) GetService(prio int) *Service {
|
||||
for _, svc := range nm.services {
|
||||
if svc.GetPrio() == prio {
|
||||
return &svc
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (nm *Manager) Send(problemID int, msg []byte, fn func(*Service, error)) (err error) {
|
||||
for i, service := range nm.services {
|
||||
nm.logger.Info("notification", "service", service.GetType(), "prio", service.GetPrio())
|
||||
|
|
@ -49,7 +69,7 @@ func (nm *Manager) Send(problemID int, msg []byte, fn func(*Service, error)) (er
|
|||
} else {
|
||||
data := struct {
|
||||
ProblemID int
|
||||
Msg []byte
|
||||
Msg []byte
|
||||
}{
|
||||
problemID,
|
||||
msg,
|
||||
|
|
@ -61,3 +81,7 @@ func (nm *Manager) Send(problemID int, msg []byte, fn func(*Service, error)) (er
|
|||
|
||||
return
|
||||
}
|
||||
|
||||
func (nm *Manager) Services() (services []Service) {
|
||||
return nm.services
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue