33 lines
1.4 KiB
C#
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);
|
|
}
|
|
}
|