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 }