AddUser, RemoveUser, CascadeDelete, etc...
This commit is contained in:
parent
091c0c10fc
commit
1c883c3666
|
|
@ -32,6 +32,38 @@ namespace AyCode.Database.DataLayers.Users
|
|||
public TUser? GetUserByEmail(string email) => Session(x => x.GetUserByEmail(email));
|
||||
public Task<TUser?> GetUserByEmailAsync(string email) => SessionAsync(x => x.GetUserByEmail(email));
|
||||
|
||||
public Task<bool> AddUser(TUser user, string profileName, TProfileAddress address)
|
||||
{
|
||||
return TransactionAsync(ctx =>
|
||||
{
|
||||
var profile = Activator.CreateInstance<TProfile>();
|
||||
|
||||
profile.Id = Guid.NewGuid();
|
||||
profile.Name = profileName;
|
||||
profile.Address = address;
|
||||
|
||||
user.Profile= profile;
|
||||
|
||||
if (ctx.AddUser(user)) return false;
|
||||
|
||||
ctx.SaveChanges();
|
||||
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
public Task<bool> AddUser(TUser user)
|
||||
{
|
||||
return TransactionAsync(ctx =>
|
||||
{
|
||||
if (ctx.AddUser(user)) return false;
|
||||
|
||||
ctx.SaveChanges();
|
||||
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
//public UserToken CreateUserToken(Guid userId, string verificationToken)
|
||||
//{
|
||||
// UserToken userToken = null;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
using AyCode.Core.Logger;
|
||||
using AyCode.Entities.Users;
|
||||
using AyCode.Interfaces.Entities;
|
||||
using AyCode.Interfaces.Profiles;
|
||||
using AyCode.Interfaces.Users;
|
||||
|
||||
|
|
@ -23,4 +24,25 @@ public static class AcUserDbSetExtensions
|
|||
var emailLower = email.ToLower();
|
||||
return ctx.Users.Where(u => u.EmailAddress == emailLower);
|
||||
}
|
||||
|
||||
public static bool AddUser<TUser>(this IAcUserDbSetBase<TUser> ctx, TUser user) where TUser : class, IAcUserBase
|
||||
{
|
||||
var emailLower = user.EmailAddress.ToLower();
|
||||
|
||||
Logger.Info($"GetUserByEmail: {emailLower}");
|
||||
|
||||
return ctx.Users.Add(user).State == Microsoft.EntityFrameworkCore.EntityState.Added;
|
||||
}
|
||||
|
||||
public static bool RemoveUserAsync<TUser>(this IAcUserDbSetBase<TUser> ctx, TUser user) where TUser : class, IAcUserBase
|
||||
=> ctx.Users.Remove(user).State == Microsoft.EntityFrameworkCore.EntityState.Deleted;
|
||||
|
||||
public static bool RemoveUserAsync<TUser>(this IAcUserDbSetBase<TUser> ctx, Guid userId) where TUser : class, IAcUserBase
|
||||
{
|
||||
var user = ctx.GetUserById(userId);
|
||||
|
||||
if (user == null) return false;
|
||||
|
||||
return ctx.RemoveUserAsync(user);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
using AyCode.Interfaces.Addresses;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||
|
||||
namespace AyCode.Database.ModelBuilders.Profiles;
|
||||
|
|
@ -10,6 +11,8 @@ public static class AcProfileEntityTypeBuilderExtensions
|
|||
where TAddress : class, IAcAddress
|
||||
{
|
||||
//modelBuilder.HasOne(e => e.Address).WithOne().HasForeignKey<TAddressRelation>(e => e.AddressId);
|
||||
modelBuilder.Navigation(e => e.Address).AutoInclude(autoInclude);
|
||||
|
||||
modelBuilder.HasOne(x => x.Address).WithOne().OnDelete(DeleteBehavior.Cascade);
|
||||
modelBuilder.Navigation(e => e.Address).AutoInclude(autoInclude).IsRequired();
|
||||
}
|
||||
}
|
||||
|
|
@ -15,7 +15,8 @@ public static class AcUserEntityTypeBuilderExtensions
|
|||
where TProfileRelation : class, IAcProfileRelation<TProfile>
|
||||
where TProfile : class, IAcProfileDtoBase
|
||||
{
|
||||
modelBuilder.Navigation(e => e.Profile).AutoInclude(autoInclude);
|
||||
modelBuilder.HasOne(x => x.Profile).WithOne().OnDelete(DeleteBehavior.Cascade);
|
||||
modelBuilder.Navigation(e => e.Profile).AutoInclude(autoInclude).IsRequired();
|
||||
}
|
||||
|
||||
public static void BuildEntityToServiceProviderRelation<TServiceProviderRelation, TServiceProvider, TUserToServiceProvider>(this EntityTypeBuilder<TServiceProviderRelation> modelBuilder, bool autoInclude = true)
|
||||
|
|
|
|||
Loading…
Reference in New Issue