improvements

This commit is contained in:
jozsef.b@aycode.com 2023-12-10 19:20:20 +01:00
parent 3df4b45f11
commit 4f1d42453c
7 changed files with 33 additions and 10 deletions

View File

@ -9,7 +9,7 @@ using Microsoft.Extensions.DependencyInjection;
namespace AyCode.Database.DataLayers.Users
{
public static class UserDalExtension
public static class AcUserDalExtension
{
//public static bool DeleteUser(this IUserDbContextBase ctx, IUserBase user)
//{

View File

@ -32,6 +32,27 @@ public class DbContextBase : DbContext
}
public override int SaveChanges()
{
UpdateTimeStampInfoProperties();
return base.SaveChanges();
}
public override Task<int> SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken())
{
UpdateTimeStampInfoProperties();
return base.SaveChangesAsync(cancellationToken);
}
public override Task<int> SaveChangesAsync(bool acceptAllChangesOnSuccess, CancellationToken cancellationToken = new CancellationToken())
{
UpdateTimeStampInfoProperties();
return base.SaveChangesAsync(acceptAllChangesOnSuccess, cancellationToken);
}
private void UpdateTimeStampInfoProperties()
{
var entries = ChangeTracker.Entries().Where(e =>
e.Entity is not ITimeStampDisableAutoSet && (e is { State: EntityState.Added, Entity: ITimeStampCreated } || e.State is EntityState.Modified or EntityState.Added && e.Entity is ITimeStampModified));
@ -48,8 +69,6 @@ public class DbContextBase : DbContext
if (entityEntry.Entity is ITimeStampCreated timeStampCreated)
timeStampCreated.Created = utcNow;
}
return base.SaveChanges();
}
protected override void OnModelCreating(ModelBuilder modelBuilder)

View File

@ -8,7 +8,9 @@ using Microsoft.EntityFrameworkCore;
namespace AyCode.Database.DbContexts.Users
{
public abstract class UserDbContextBase<TUser, TUserToken> : DbContextBase, IUserDbContextBase<TUser, TUserToken> where TUser : class, IUserBase where TUserToken : class, IUserTokenBase
public abstract class UserDbContextBase<TUser, TUserToken> : DbContextBase, IUserDbContextBase<TUser, TUserToken>
where TUser : class, IUserBase
where TUserToken : class, IUserTokenBase
{
public required DbSet<TUser> Users { get; set; }
public required DbSet<TUserToken> UserTokens { get; set; }

View File

@ -10,18 +10,19 @@ using AyCode.Interfaces.Groups;
namespace AyCode.Entities.Groups
{
//[Table("Groups")]
public class GroupBase : IGroupBase
public abstract class GroupBase : IGroupBase
{
public GroupBase() { }
protected GroupBase() { }
public GroupBase(bool isPublic) : this(Guid.NewGuid(), isPublic) { }
public GroupBase(Guid id, bool isPublic) : this()
protected GroupBase(bool isPublic) : this(Guid.NewGuid(), isPublic) { }
protected GroupBase(Guid id, bool isPublic) : this()
{
Id = id;
IsPublic = isPublic;
}
//[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid Id { get; set; }
public bool IsPublic { get; set; }
public DateTime Created { get; set; }

View File

@ -8,7 +8,7 @@ using System.Threading.Tasks;
namespace AyCode.Interfaces.Groups
{
public interface IGroupBase : IEntity, ITimeStampInfo
public interface IGroupBase : IEntityGuid, ITimeStampInfo
{
}
}

View File

@ -6,4 +6,5 @@ namespace AyCode.Interfaces.Users;
public interface IUserBase : IEntityGuid, IEmailAddress, IPassword, ITimeStampInfo
{
public string? RefreshToken { get; set; }
}