29 lines
1.3 KiB
C#
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);
|
|
}
|
|
}
|