using BudgetApp.Data.Entities; using Microsoft.AspNetCore.Identity.EntityFrameworkCore; using Microsoft.EntityFrameworkCore; namespace BudgetApp.Data; public class ApplicationDbContext(DbContextOptions options) : IdentityDbContext(options) { public DbSet Accounts => Set(); public DbSet Transactions => Set(); public DbSet Categories => Set(); public DbSet Salaries => Set(); protected override void OnModelCreating(ModelBuilder builder) { base.OnModelCreating(builder); builder.Entity(e => { e.HasOne(a => a.User) .WithMany() .HasForeignKey(a => a.UserId) .OnDelete(DeleteBehavior.Cascade); e.Property(a => a.CurrentBalance).HasColumnType("decimal(18,2)"); }); builder.Entity(e => { e.HasOne(t => t.Account) .WithMany(a => a.Transactions) .HasForeignKey(t => t.AccountId) .OnDelete(DeleteBehavior.Cascade); e.HasOne(t => t.Category) .WithMany(c => c.Transactions) .HasForeignKey(t => t.CategoryId) .OnDelete(DeleteBehavior.SetNull); e.HasOne(t => t.ParentTransaction) .WithMany() .HasForeignKey(t => t.ParentTransactionId) .OnDelete(DeleteBehavior.SetNull); e.HasOne(t => t.Salary) .WithMany() .HasForeignKey(t => t.SalaryId) .OnDelete(DeleteBehavior.SetNull); e.Property(t => t.Amount).HasColumnType("decimal(18,2)"); }); builder.Entity(e => { e.HasOne(c => c.User) .WithMany() .HasForeignKey(c => c.UserId) .OnDelete(DeleteBehavior.Cascade); }); builder.Entity(e => { e.HasOne(s => s.User) .WithMany() .HasForeignKey(s => s.UserId) .OnDelete(DeleteBehavior.Cascade); e.HasOne(s => s.Account) .WithMany() .HasForeignKey(s => s.AccountId) .OnDelete(DeleteBehavior.Cascade); e.Property(s => s.Amount).HasColumnType("decimal(18,2)"); }); } }