81 lines
2.1 KiB
Go
81 lines
2.1 KiB
Go
package db
|
|
|
|
import (
|
|
"fmt"
|
|
"gestion/models"
|
|
)
|
|
|
|
func (d *Database) CreateAlert(username string, message string) (models.AlertPolicy, error) {
|
|
alert := models.AlertPolicy{
|
|
Username: username,
|
|
Status: "true",
|
|
Message: message,
|
|
}
|
|
if err := d.GDB.Create(&alert).Error; err != nil {
|
|
return models.AlertPolicy{}, err
|
|
}
|
|
return alert, nil
|
|
}
|
|
|
|
func (d *Database) GetAlertPolicy(id int) (models.AlertPolicy, error) {
|
|
var alert models.AlertPolicy
|
|
if err := d.GDB.First(&alert, id).Error; err != nil {
|
|
return models.AlertPolicy{}, err
|
|
}
|
|
return alert, nil
|
|
}
|
|
|
|
func (d *Database) GetAllAlerts() ([]models.AlertPolicy, error) {
|
|
var alerts []models.AlertPolicy
|
|
if err := d.GDB.Order("created_at DESC").Limit(500).Find(&alerts).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
return alerts, nil
|
|
}
|
|
|
|
func (d *Database) DeleteAlertPolicy(id int) error {
|
|
return d.GDB.Delete(&models.AlertPolicy{}, id).Error
|
|
}
|
|
|
|
func (d *Database) EndAlert(id int) error {
|
|
result := d.GDB.Model(&models.AlertPolicy{}).
|
|
Where("id = ? AND status = 'true'", id).
|
|
Update("status", "false")
|
|
if result.Error != nil {
|
|
return result.Error
|
|
}
|
|
if result.RowsAffected == 0 {
|
|
return fmt.Errorf("alerte non trouvée ou déjà terminée")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (d *Database) ActivateAlert(id int) error {
|
|
result := d.GDB.Model(&models.AlertPolicy{}).
|
|
Where("id = ? AND status = 'false'", id).
|
|
Update("status", "true")
|
|
if result.Error != nil {
|
|
return result.Error
|
|
}
|
|
if result.RowsAffected == 0 {
|
|
return fmt.Errorf("alerte non trouvée ou déjà active")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (d *Database) GetActiveAlerts() ([]models.AlertPolicy, error) {
|
|
var alerts []models.AlertPolicy
|
|
if err := d.GDB.Where("status = 'true'").Order("created_at DESC").Limit(100).Find(&alerts).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
return alerts, nil
|
|
}
|
|
|
|
func (d *Database) GetAlertsByUsername(username string) ([]models.AlertPolicy, error) {
|
|
var alerts []models.AlertPolicy
|
|
if err := d.GDB.Where("username = ?", username).Order("created_at DESC").Limit(200).Find(&alerts).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
return alerts, nil
|
|
}
|