Updated Data Context

Added code to track changes that are made to the database.
This commit is contained in:
Mario Steele 2025-07-31 13:01:37 -05:00
parent 57b6f24e35
commit 5387e1beb7

View file

@ -18,6 +18,53 @@ public class DataContext : DbContext
modelBuilder.Entity<Playlist>()
.Navigation(e => e.videos).AutoInclude();
}
public override int SaveChanges()
{
TrackChanges();
return base.SaveChanges();
}
public override async Task<int> SaveChangesAsync(CancellationToken ct = default)
{
TrackChanges();
return await base.SaveChangesAsync(ct);
}
private void TrackChanges()
{
var changedEntries = ChangeTracker.Entries()
.Where(e => e.State == EntityState.Added ||
e.State == EntityState.Modified ||
e.State == EntityState.Deleted)
.ToList();
foreach (var entry in changedEntries)
{
var log = new ChangeLog
{
TableName = entry.Metadata.GetTableName() ?? entry.Entity.GetType().Name,
ChangeType = entry.State.ToString(),
ChangeTime = DateTime.UtcNow
};
ChangeLogs.Add(log);
}
}
public ChangeLog? GetLatestChange()
{
return ChangeLogs
.OrderByDescending(cl => cl.ChangeTime)
.FirstOrDefault();
}
public async Task<ChangeLog?> GetLatestChangeAsync(CancellationToken ct = default)
{
return await ChangeLogs
.OrderByDescending(cl => cl.ChangeTime)
.FirstOrDefaultAsync(ct);
}
public DbSet<History> Histories { get; set; }
public DbSet<Playlist> Playlists { get; set; }