#58 added owned entity for SocialNetworks that belongs to an ApplicationUser

This commit is contained in:
Dominic Villemure
2024-06-11 20:14:36 -04:00
parent aca7939e8d
commit 47fb3caa0d
8 changed files with 643 additions and 22 deletions

View File

@@ -1,32 +1,29 @@
using System.Reflection;
using Hutopy.Application.Common.Interfaces;
using Hutopy.Application.Common.Interfaces;
using Hutopy.Domain.Entities;
using Hutopy.Infrastructure.Data.Configurations;
using Hutopy.Infrastructure.Identity;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
namespace Hutopy.Infrastructure.Data;
public class ApplicationDbContext(
DbContextOptions<ApplicationDbContext> options)
: IdentityDbContext<ApplicationUser>(options), IApplicationDbContext
namespace Hutopy.Infrastructure.Data
{
public DbSet<FutureCreator> FutureCreators => Set<FutureCreator>();
public DbSet<UserTransaction> UserTransactions => Set<UserTransaction>();
protected override void OnModelCreating(ModelBuilder builder)
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>, IApplicationDbContext
{
base.OnModelCreating(builder);
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
// Relationship between ApplicationUser and UserTransaction
builder.Entity<UserTransaction>()
.HasOne<ApplicationUser>()
.WithMany()
.HasForeignKey(ut => ut.ApplicationUserId)
.IsRequired();
public DbSet<FutureCreator> FutureCreators => Set<FutureCreator>();
public DbSet<UserTransaction> UserTransactions => Set<UserTransaction>();
builder.Entity<UserTransaction>().Property(x => x.Amount).HasPrecision(18, 2);
builder.ApplyConfigurationsFromAssembly(Assembly.GetExecutingAssembly());
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// Apply configurations
builder.ApplyConfiguration(new UserTransactionConfiguration());
builder.ApplyConfiguration(new ApplicationUserConfiguration());
}
}
}

View File

@@ -0,0 +1,16 @@
using Hutopy.Infrastructure.Identity;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace Hutopy.Infrastructure.Data.Configurations;
public class ApplicationUserConfiguration : IEntityTypeConfiguration<ApplicationUser>
{
public void Configure(EntityTypeBuilder<ApplicationUser> builder)
{
// Relationship between ApplicationUser and SocialNetworks
builder
.OwnsOne(u => u.SocialNetworks)
.ToTable($"{nameof(ApplicationUser)}_SocialNetworks");
}
}

View File

@@ -0,0 +1,21 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Hutopy.Domain.Entities;
using Hutopy.Infrastructure.Identity;
namespace Hutopy.Infrastructure.Data.Configurations
{
public class UserTransactionConfiguration : IEntityTypeConfiguration<UserTransaction>
{
public void Configure(EntityTypeBuilder<UserTransaction> builder)
{
// Relationship between ApplicationUser and UserTransaction
builder.HasOne<ApplicationUser>()
.WithMany()
.HasForeignKey(ut => ut.ApplicationUserId)
.IsRequired();
builder.Property(x => x.Amount).HasPrecision(18, 2);
}
}
}