Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 
 
 

52 рядки
1.4 KiB

  1. package service
  2. import (
  3. "context"
  4. "github.com/AFASystems/presence/internal/pkg/model"
  5. "gorm.io/gorm"
  6. )
  7. func InsertAlert(alert model.Alert, db *gorm.DB, ctx context.Context) error {
  8. if err := db.WithContext(ctx).Create(&alert).Error; err != nil {
  9. return err
  10. }
  11. return nil
  12. }
  13. func DeleteAlertByTrackerID(trackerID string, db *gorm.DB, ctx context.Context) error {
  14. if err := db.WithContext(ctx).Where("id = ?", trackerID).Delete(&model.Alert{}).Error; err != nil {
  15. return err
  16. }
  17. return nil
  18. }
  19. func GetAllAlerts(db *gorm.DB, ctx context.Context) ([]model.Alert, error) {
  20. var alerts []model.Alert
  21. if err := db.WithContext(ctx).Find(&alerts).Error; err != nil {
  22. return []model.Alert{}, err
  23. }
  24. return alerts, nil
  25. }
  26. func GetAlertById(id string, db *gorm.DB, ctx context.Context) (model.Alert, error) {
  27. var alert model.Alert
  28. if err := db.WithContext(ctx).First(&alert, id).Error; err != nil {
  29. return alert, err
  30. }
  31. return alert, nil
  32. }
  33. // UpdateAlertStatus updates the status of an alert by id. Returns gorm.ErrRecordNotFound if the alert does not exist.
  34. func UpdateAlertStatus(id string, status string, db *gorm.DB, ctx context.Context) error {
  35. result := db.WithContext(ctx).Model(&model.Alert{}).Where("id = ?", id).Update("status", status)
  36. if result.Error != nil {
  37. return result.Error
  38. }
  39. if result.RowsAffected == 0 {
  40. return gorm.ErrRecordNotFound
  41. }
  42. return nil
  43. }