using FictionArchive.Service.Shared.Models.Interfaces; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Diagnostics; using NodaTime; namespace FictionArchive.Service.Shared.Services.Database; public class AuditInterceptor : SaveChangesInterceptor { public override InterceptionResult SavingChanges( DbContextEventData eventData, InterceptionResult result) { var context = eventData.Context; if (context == null) return base.SavingChanges(eventData, result); var entries = context.ChangeTracker.Entries(); var now = Instant.FromDateTimeUtc(DateTime.UtcNow); foreach (var e in entries) { if (e.State == EntityState.Added) { e.Entity.CreatedTime = now; e.Entity.LastUpdatedTime = now; } else if (e.State == EntityState.Modified) { e.Entity.LastUpdatedTime = now; } } return base.SavingChanges(eventData, result); } }