[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;
|
||||||
using Manager.Data.Entities.LibraryContext.Join;
|
using Manager.Data.Entities.LibraryContext.Join;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
@@ -99,4 +100,31 @@ public sealed class LibraryDbContext : DbContext
|
|||||||
|
|
||||||
base.OnModelCreating(modelBuilder);
|
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;
|
namespace Manager.Data.Entities.LibraryContext;
|
||||||
|
|
||||||
public class CaptionEntity
|
public class CaptionEntity : DateTimeBase
|
||||||
{
|
{
|
||||||
[MaxLength(DataConstants.DbContext.DefaultDbStringSize)]
|
[MaxLength(DataConstants.DbContext.DefaultDbStringSize)]
|
||||||
public required string MediaId { get; set; }
|
public required string MediaId { get; set; }
|
||||||
|
@@ -2,13 +2,10 @@ using System.ComponentModel.DataAnnotations;
|
|||||||
|
|
||||||
namespace Manager.Data.Entities.LibraryContext.Join;
|
namespace Manager.Data.Entities.LibraryContext.Join;
|
||||||
|
|
||||||
public class PlaylistMedia
|
public class PlaylistMedia : DateTimeBase
|
||||||
{
|
{
|
||||||
[MaxLength(DataConstants.DbContext.DefaultDbStringSize)]
|
[MaxLength(DataConstants.DbContext.DefaultDbStringSize)]
|
||||||
public required string PlaylistId { get; set; }
|
public required string PlaylistId { get; set; }
|
||||||
[MaxLength(DataConstants.DbContext.DefaultDbStringSize)]
|
[MaxLength(DataConstants.DbContext.DefaultDbStringSize)]
|
||||||
public required string MediaId { get; set; }
|
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;
|
namespace Manager.Data.Entities.LibraryContext;
|
||||||
|
|
||||||
public class MediaFormatEntity
|
public class MediaFormatEntity : DateTimeBase
|
||||||
{
|
{
|
||||||
[MaxLength(DataConstants.DbContext.DefaultDbStringSize)]
|
[MaxLength(DataConstants.DbContext.DefaultDbStringSize)]
|
||||||
public required string MediaId { get; set; }
|
public required string MediaId { get; set; }
|
||||||
|
Reference in New Issue
Block a user