using Asentrafin.Api.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace Asentrafin.Api.Data.Configurations; public class PlaidHoldingConfiguration : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) { builder.ToTable("plaid_holdings"); builder.HasKey(holding => holding.Id); builder.Property(holding => holding.IsoCurrencyCode).HasMaxLength(8); builder.Property(holding => holding.UnofficialCurrencyCode).HasMaxLength(32); builder.Property(holding => holding.RawJson).HasColumnType("jsonb"); builder.HasIndex(holding => new { holding.PlaidAccountId, holding.PlaidSecurityId }).IsUnique(); builder.HasOne(holding => holding.PlaidItem) .WithMany(item => item.Holdings) .HasForeignKey(holding => holding.PlaidItemId) .OnDelete(DeleteBehavior.Cascade); builder.HasOne(holding => holding.PlaidAccount) .WithMany(account => account.Holdings) .HasForeignKey(holding => holding.PlaidAccountId) .OnDelete(DeleteBehavior.Cascade); builder.HasOne(holding => holding.PlaidSecurity) .WithMany(security => security.Holdings) .HasForeignKey(holding => holding.PlaidSecurityId) .OnDelete(DeleteBehavior.Cascade); } }