using Asentrafin.Api.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace Asentrafin.Api.Data.Configurations; public class TransactionClassificationConfiguration : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder 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(classification => classification.PlaidTransactionId) .OnDelete(DeleteBehavior.Cascade); builder.HasOne(classification => classification.Category) .WithMany(category => category.Classifications) .HasForeignKey(classification => classification.CategoryId) .OnDelete(DeleteBehavior.Restrict); } }