asentrafin/backend/Data/Configurations/TransactionClassificationCo...

29 lines
1.3 KiB
C#

using Asentrafin.Api.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace Asentrafin.Api.Data.Configurations;
public class TransactionClassificationConfiguration : IEntityTypeConfiguration<TransactionClassification>
{
public void Configure(EntityTypeBuilder<TransactionClassification> builder)
{
builder.ToTable("transaction_classifications");
builder.HasKey(classification => classification.Id);
builder.Property(classification => classification.Source).HasMaxLength(64).IsRequired();
builder.Property(classification => classification.Notes).HasMaxLength(1024);
builder.HasIndex(classification => classification.PlaidTransactionId).IsUnique();
builder.HasIndex(classification => classification.CategoryId);
builder.HasOne(classification => classification.PlaidTransaction)
.WithOne(transaction => transaction.Classification)
.HasForeignKey<TransactionClassification>(classification => classification.PlaidTransactionId)
.OnDelete(DeleteBehavior.Cascade);
builder.HasOne(classification => classification.Category)
.WithMany(category => category.Classifications)
.HasForeignKey(classification => classification.CategoryId)
.OnDelete(DeleteBehavior.Restrict);
}
}