using FabWorks.Core.Models; using Microsoft.EntityFrameworkCore; namespace FabWorks.Core.Data { public class FabWorksDbContext : DbContext { public DbSet ExportRecords { get; set; } public DbSet BomItems { get; set; } public DbSet CutTemplates { get; set; } public DbSet FormPrograms { get; set; } public DbSet Drawings { get; set; } public FabWorksDbContext(DbContextOptions options) : base(options) { } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id); entity.Property(e => e.DrawingNumber).HasMaxLength(100); entity.Property(e => e.Title).HasMaxLength(200); entity.Property(e => e.EquipmentNo).HasMaxLength(50); entity.Property(e => e.DrawingNo).HasMaxLength(50); entity.Property(e => e.SourceFilePath).HasMaxLength(500); entity.Property(e => e.OutputFolder).HasMaxLength(500); entity.Property(e => e.ExportedBy).HasMaxLength(100); entity.Property(e => e.PdfContentHash).HasMaxLength(64); entity.HasMany(e => e.BomItems) .WithOne(b => b.ExportRecord) .HasForeignKey(b => b.ExportRecordId) .OnDelete(DeleteBehavior.Cascade); entity.HasOne(e => e.Drawing) .WithMany(d => d.ExportRecords) .HasForeignKey(e => e.DrawingId) .OnDelete(DeleteBehavior.SetNull); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.ID); entity.Property(e => e.ItemNo).HasMaxLength(50); entity.Property(e => e.PartNo).HasMaxLength(100); entity.Property(e => e.Description).HasMaxLength(500); entity.Property(e => e.PartName).HasMaxLength(200); entity.Property(e => e.ConfigurationName).HasMaxLength(100); entity.Property(e => e.Material).HasMaxLength(100); entity.HasOne(e => e.CutTemplate) .WithOne(ct => ct.BomItem) .HasForeignKey(ct => ct.BomItemId) .OnDelete(DeleteBehavior.Cascade); entity.HasOne(e => e.FormProgram) .WithOne(fp => fp.BomItem) .HasForeignKey(fp => fp.BomItemId) .OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id); entity.Property(e => e.DxfFilePath).HasMaxLength(500); entity.Property(e => e.CutTemplateName).HasMaxLength(100); entity.Property(e => e.ContentHash).HasMaxLength(64); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id); entity.Property(e => e.ProgramFilePath).HasMaxLength(500); entity.Property(e => e.ContentHash).HasMaxLength(64); entity.Property(e => e.ProgramName).HasMaxLength(200); entity.Property(e => e.MaterialType).HasMaxLength(50); entity.Property(e => e.UpperToolNames).HasMaxLength(500); entity.Property(e => e.LowerToolNames).HasMaxLength(500); entity.Property(e => e.SetupNotes).HasMaxLength(2000); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id); entity.Property(e => e.DrawingNumber).HasMaxLength(100); entity.Property(e => e.Title).HasMaxLength(200); entity.Property(e => e.PdfContentHash).HasMaxLength(64); entity.HasIndex(e => e.DrawingNumber).IsUnique(); }); } } }