asentrafin/backend/Data/Configurations/PlaidHoldingConfiguration.cs

33 lines
1.4 KiB
C#

using Asentrafin.Api.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace Asentrafin.Api.Data.Configurations;
public class PlaidHoldingConfiguration : IEntityTypeConfiguration<PlaidHolding>
{
public void Configure(EntityTypeBuilder<PlaidHolding> 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);
}
}