chore: update
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
package alerts
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"gorm.io/gorm"
|
||||
|
||||
"github.com/omnex/control-plane/api/internal/auth"
|
||||
)
|
||||
|
||||
// GormRecipients construit, à partir de la table des utilisateurs, la liste
|
||||
// des notifiers actifs : chaque admin ayant renseigné un webhook Discord
|
||||
// et/ou un bot Telegram (dans son profil) reçoit les alertes. Interrogée à
|
||||
// chaque notification nécessaire — un admin qui change ses réglages est pris
|
||||
// en compte sans redémarrage de l'API.
|
||||
func GormRecipients(gdb *gorm.DB) func(ctx context.Context) ([]Notifier, error) {
|
||||
return func(ctx context.Context) ([]Notifier, error) {
|
||||
var admins []auth.User
|
||||
if err := gdb.WithContext(ctx).Where("role = ?", auth.RoleAdmin).Find(&admins).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var notifiers []Notifier
|
||||
for _, a := range admins {
|
||||
if a.AlertDiscordWebhookURL != nil && *a.AlertDiscordWebhookURL != "" {
|
||||
notifiers = append(notifiers, &DiscordNotifier{WebhookURL: *a.AlertDiscordWebhookURL})
|
||||
}
|
||||
if a.AlertTelegramBotToken != nil && *a.AlertTelegramBotToken != "" &&
|
||||
a.AlertTelegramChatID != nil && *a.AlertTelegramChatID != "" {
|
||||
notifiers = append(notifiers, &TelegramNotifier{
|
||||
BotToken: *a.AlertTelegramBotToken,
|
||||
ChatID: *a.AlertTelegramChatID,
|
||||
})
|
||||
}
|
||||
}
|
||||
return notifiers, nil
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user