40 lines
2.2 KiB
C#
40 lines
2.2 KiB
C#
using Asentrafin.Api.Entities;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
|
|
|
namespace Asentrafin.Api.Data.Configurations;
|
|
|
|
public class PlaidInvestmentTransactionConfiguration : IEntityTypeConfiguration<PlaidInvestmentTransaction>
|
|
{
|
|
public void Configure(EntityTypeBuilder<PlaidInvestmentTransaction> builder)
|
|
{
|
|
builder.ToTable("plaid_investment_transactions");
|
|
builder.HasKey(transaction => transaction.Id);
|
|
|
|
builder.Property(transaction => transaction.PlaidInvestmentTransactionId).HasMaxLength(128).IsRequired();
|
|
builder.Property(transaction => transaction.AccountPlaidId).HasMaxLength(128).IsRequired();
|
|
builder.Property(transaction => transaction.SecurityPlaidId).HasMaxLength(128);
|
|
builder.Property(transaction => transaction.Name).HasMaxLength(512).IsRequired();
|
|
builder.Property(transaction => transaction.Type).HasMaxLength(64);
|
|
builder.Property(transaction => transaction.Subtype).HasMaxLength(64);
|
|
builder.Property(transaction => transaction.IsoCurrencyCode).HasMaxLength(8);
|
|
builder.Property(transaction => transaction.UnofficialCurrencyCode).HasMaxLength(32);
|
|
builder.Property(transaction => transaction.RawJson).HasColumnType("jsonb");
|
|
|
|
builder.HasIndex(transaction => transaction.PlaidInvestmentTransactionId).IsUnique();
|
|
builder.HasIndex(transaction => new { transaction.PlaidItemId, transaction.Date });
|
|
builder.HasOne(transaction => transaction.PlaidItem)
|
|
.WithMany(item => item.InvestmentTransactions)
|
|
.HasForeignKey(transaction => transaction.PlaidItemId)
|
|
.OnDelete(DeleteBehavior.Cascade);
|
|
builder.HasOne(transaction => transaction.PlaidAccount)
|
|
.WithMany(account => account.InvestmentTransactions)
|
|
.HasForeignKey(transaction => transaction.PlaidAccountId)
|
|
.OnDelete(DeleteBehavior.SetNull);
|
|
builder.HasOne(transaction => transaction.PlaidSecurity)
|
|
.WithMany(security => security.InvestmentTransactions)
|
|
.HasForeignKey(transaction => transaction.PlaidSecurityId)
|
|
.OnDelete(DeleteBehavior.SetNull);
|
|
}
|
|
}
|