Compare commits

...

2 Commits

Author SHA1 Message Date
jozsef.b@aycode.com 1c883c3666 AddUser, RemoveUser, CascadeDelete, etc... 2024-04-03 07:51:43 +02:00
jozsef.b@aycode.com 091c0c10fc Update EfCore, MstTest, SendGrid, etc packages 2024-03-29 06:55:31 +01:00
9 changed files with 72 additions and 14 deletions

View File

@ -10,10 +10,10 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="MSTest.TestAdapter" Version="3.1.1" />
<PackageReference Include="MSTest.TestFramework" Version="3.1.1" />
<PackageReference Include="coverlet.collector" Version="6.0.0">
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
<PackageReference Include="MSTest.TestAdapter" Version="3.2.2" />
<PackageReference Include="MSTest.TestFramework" Version="3.2.2" />
<PackageReference Include="coverlet.collector" Version="6.0.2">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>

View File

@ -10,10 +10,10 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="MSTest.TestAdapter" Version="3.1.1" />
<PackageReference Include="MSTest.TestFramework" Version="3.1.1" />
<PackageReference Include="coverlet.collector" Version="6.0.0">
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
<PackageReference Include="MSTest.TestAdapter" Version="3.2.2" />
<PackageReference Include="MSTest.TestFramework" Version="3.2.2" />
<PackageReference Include="coverlet.collector" Version="6.0.2">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>

View File

@ -7,8 +7,8 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="8.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="8.0.3" />
</ItemGroup>
<ItemGroup>

View File

@ -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;

View File

@ -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);
}
}

View File

@ -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();
}
}

View File

@ -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)

View File

@ -8,7 +8,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
<PackageReference Include="SendGrid" Version="9.29.1" />
<PackageReference Include="SendGrid" Version="9.29.2" />
</ItemGroup>
<ItemGroup>

View File

@ -8,7 +8,7 @@
<ItemGroup>
<PackageReference Include="JetBrains.Annotations" Version="2023.3.0" />
<PackageReference Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="8.0.1" />
<PackageReference Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="8.0.3" />
</ItemGroup>
</Project>