using System.ComponentModel.DataAnnotations; using Cleanuparr.Domain.Enums; using Microsoft.EntityFrameworkCore; namespace Cleanuparr.Persistence.Models.Events; /// /// Represents an event in the system /// [Index(nameof(Timestamp), IsDescending = [true])] [Index(nameof(EventType))] [Index(nameof(Severity))] [Index(nameof(Message))] public class AppEvent { [Key] public Guid Id { get; set; } = Guid.CreateVersion7(); public DateTime Timestamp { get; set; } = DateTime.UtcNow; [Required] public EventType EventType { get; set; } [Required] [MaxLength(1000)] public string Message { get; set; } = string.Empty; /// /// JSON data associated with the event /// public string? Data { get; set; } [Required] public required EventSeverity Severity { get; set; } /// /// Optional correlation ID to link related events /// public Guid? TrackingId { get; set; } }