[DB] Auto update datetimes on entities
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
using Manager.Data.Entities;
|
||||
using Manager.Data.Entities.LibraryContext;
|
||||
using Manager.Data.Entities.LibraryContext.Join;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
@@ -99,4 +100,31 @@ public sealed class LibraryDbContext : DbContext
|
||||
|
||||
base.OnModelCreating(modelBuilder);
|
||||
}
|
||||
|
||||
public override int SaveChanges()
|
||||
{
|
||||
UpdateEntryDates();
|
||||
return base.SaveChanges();
|
||||
}
|
||||
|
||||
public override Task<int> SaveChangesAsync(bool acceptAllChangesOnSuccess, CancellationToken cancellationToken = new())
|
||||
{
|
||||
UpdateEntryDates();
|
||||
return base.SaveChangesAsync(acceptAllChangesOnSuccess, cancellationToken);
|
||||
}
|
||||
|
||||
private void UpdateEntryDates()
|
||||
{
|
||||
var entries = ChangeTracker.Entries().Where(x => x is { Entity: DateTimeBase, State: EntityState.Added or EntityState.Modified });
|
||||
|
||||
foreach (var entity in entries)
|
||||
{
|
||||
((DateTimeBase)entity.Entity).LastModifiedUtc = DateTime.UtcNow;
|
||||
|
||||
if (entity.State == EntityState.Added)
|
||||
{
|
||||
((DateTimeBase)entity.Entity).CreatedAtUtc = DateTime.UtcNow;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -2,7 +2,7 @@ using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Manager.Data.Entities.LibraryContext;
|
||||
|
||||
public class CaptionEntity
|
||||
public class CaptionEntity : DateTimeBase
|
||||
{
|
||||
[MaxLength(DataConstants.DbContext.DefaultDbStringSize)]
|
||||
public required string MediaId { get; set; }
|
||||
|
@@ -2,13 +2,10 @@ using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Manager.Data.Entities.LibraryContext.Join;
|
||||
|
||||
public class PlaylistMedia
|
||||
public class PlaylistMedia : DateTimeBase
|
||||
{
|
||||
[MaxLength(DataConstants.DbContext.DefaultDbStringSize)]
|
||||
public required string PlaylistId { get; set; }
|
||||
[MaxLength(DataConstants.DbContext.DefaultDbStringSize)]
|
||||
public required string MediaId { get; set; }
|
||||
|
||||
public DateTime DateAddedUtc { get; set; }
|
||||
public DateTime DateModifiedUtc { get; set; }
|
||||
}
|
@@ -2,7 +2,7 @@ using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Manager.Data.Entities.LibraryContext;
|
||||
|
||||
public class MediaFormatEntity
|
||||
public class MediaFormatEntity : DateTimeBase
|
||||
{
|
||||
[MaxLength(DataConstants.DbContext.DefaultDbStringSize)]
|
||||
public required string MediaId { get; set; }
|
||||
|
Reference in New Issue
Block a user