- Move Revision from Drawing to ExportRecord so each export captures its own revision snapshot - Add Hamming distance comparison for perceptual hashes (tolerance of 10 bits) to avoid false revision bumps - Replace CoenM.ImageHash with inline DifferenceHash impl (compatible with ImageSharp 3.x) - Increase PDF render DPI from 72 to 150 for better hash fidelity - Add download-dxfs-by-drawing endpoint for cross-export DXF zip downloads - Prefix DXF filenames with equipment number when no drawing number is present - Pass original filename to storage service for standalone part exports - Auto-start FabWorks.Api from ExportDXF client if not already running - Add cut list modal with copy-to-clipboard in the web UI - Update PDF hash on existing export records after upload - Bump static asset cache versions to v3 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
323 lines
11 KiB
C#
323 lines
11 KiB
C#
// <auto-generated />
|
|
using System;
|
|
using FabWorks.Core.Data;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
|
using Microsoft.EntityFrameworkCore.Metadata;
|
|
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
|
|
|
#nullable disable
|
|
|
|
namespace FabWorks.Core.Migrations
|
|
{
|
|
[DbContext(typeof(FabWorksDbContext))]
|
|
partial class FabWorksDbContextModelSnapshot : ModelSnapshot
|
|
{
|
|
protected override void BuildModel(ModelBuilder modelBuilder)
|
|
{
|
|
#pragma warning disable 612, 618
|
|
modelBuilder
|
|
.HasAnnotation("ProductVersion", "8.0.11")
|
|
.HasAnnotation("Relational:MaxIdentifierLength", 128);
|
|
|
|
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
|
|
|
|
modelBuilder.Entity("FabWorks.Core.Models.BomItem", b =>
|
|
{
|
|
b.Property<int>("ID")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("int");
|
|
|
|
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
|
|
|
|
b.Property<string>("ConfigurationName")
|
|
.HasMaxLength(100)
|
|
.HasColumnType("nvarchar(100)");
|
|
|
|
b.Property<string>("Description")
|
|
.HasMaxLength(500)
|
|
.HasColumnType("nvarchar(500)");
|
|
|
|
b.Property<int>("ExportRecordId")
|
|
.HasColumnType("int");
|
|
|
|
b.Property<string>("ItemNo")
|
|
.HasMaxLength(50)
|
|
.HasColumnType("nvarchar(50)");
|
|
|
|
b.Property<string>("Material")
|
|
.HasMaxLength(100)
|
|
.HasColumnType("nvarchar(100)");
|
|
|
|
b.Property<string>("PartName")
|
|
.HasMaxLength(200)
|
|
.HasColumnType("nvarchar(200)");
|
|
|
|
b.Property<string>("PartNo")
|
|
.HasMaxLength(100)
|
|
.HasColumnType("nvarchar(100)");
|
|
|
|
b.Property<int?>("Qty")
|
|
.HasColumnType("int");
|
|
|
|
b.Property<int>("SortOrder")
|
|
.HasColumnType("int");
|
|
|
|
b.Property<int?>("TotalQty")
|
|
.HasColumnType("int");
|
|
|
|
b.HasKey("ID");
|
|
|
|
b.HasIndex("ExportRecordId");
|
|
|
|
b.ToTable("BomItems");
|
|
});
|
|
|
|
modelBuilder.Entity("FabWorks.Core.Models.CutTemplate", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("int");
|
|
|
|
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
|
|
|
b.Property<int>("BomItemId")
|
|
.HasColumnType("int");
|
|
|
|
b.Property<string>("ContentHash")
|
|
.HasMaxLength(64)
|
|
.HasColumnType("nvarchar(64)");
|
|
|
|
b.Property<string>("CutTemplateName")
|
|
.HasMaxLength(100)
|
|
.HasColumnType("nvarchar(100)");
|
|
|
|
b.Property<double?>("DefaultBendRadius")
|
|
.HasColumnType("float");
|
|
|
|
b.Property<string>("DxfFilePath")
|
|
.HasMaxLength(500)
|
|
.HasColumnType("nvarchar(500)");
|
|
|
|
b.Property<double?>("KFactor")
|
|
.HasColumnType("float");
|
|
|
|
b.Property<int>("Revision")
|
|
.HasColumnType("int");
|
|
|
|
b.Property<double?>("Thickness")
|
|
.HasColumnType("float");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("BomItemId")
|
|
.IsUnique();
|
|
|
|
b.ToTable("CutTemplates");
|
|
});
|
|
|
|
modelBuilder.Entity("FabWorks.Core.Models.Drawing", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("int");
|
|
|
|
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
|
|
|
b.Property<string>("DrawingNumber")
|
|
.HasMaxLength(100)
|
|
.HasColumnType("nvarchar(100)");
|
|
|
|
b.Property<string>("PdfContentHash")
|
|
.HasMaxLength(64)
|
|
.HasColumnType("nvarchar(64)");
|
|
|
|
b.Property<string>("Title")
|
|
.HasMaxLength(200)
|
|
.HasColumnType("nvarchar(200)");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("DrawingNumber")
|
|
.IsUnique()
|
|
.HasFilter("[DrawingNumber] IS NOT NULL");
|
|
|
|
b.ToTable("Drawings");
|
|
});
|
|
|
|
modelBuilder.Entity("FabWorks.Core.Models.ExportRecord", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("int");
|
|
|
|
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
|
|
|
b.Property<int?>("DrawingId")
|
|
.HasColumnType("int");
|
|
|
|
b.Property<string>("DrawingNo")
|
|
.HasMaxLength(50)
|
|
.HasColumnType("nvarchar(50)");
|
|
|
|
b.Property<string>("DrawingNumber")
|
|
.HasMaxLength(100)
|
|
.HasColumnType("nvarchar(100)");
|
|
|
|
b.Property<int?>("DrawingRevision")
|
|
.HasColumnType("int");
|
|
|
|
b.Property<string>("EquipmentNo")
|
|
.HasMaxLength(50)
|
|
.HasColumnType("nvarchar(50)");
|
|
|
|
b.Property<DateTime>("ExportedAt")
|
|
.HasColumnType("datetime2");
|
|
|
|
b.Property<string>("ExportedBy")
|
|
.HasMaxLength(100)
|
|
.HasColumnType("nvarchar(100)");
|
|
|
|
b.Property<string>("OutputFolder")
|
|
.HasMaxLength(500)
|
|
.HasColumnType("nvarchar(500)");
|
|
|
|
b.Property<string>("PdfContentHash")
|
|
.HasMaxLength(64)
|
|
.HasColumnType("nvarchar(64)");
|
|
|
|
b.Property<string>("SourceFilePath")
|
|
.HasMaxLength(500)
|
|
.HasColumnType("nvarchar(500)");
|
|
|
|
b.Property<string>("Title")
|
|
.HasMaxLength(200)
|
|
.HasColumnType("nvarchar(200)");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("DrawingId");
|
|
|
|
b.ToTable("ExportRecords");
|
|
});
|
|
|
|
modelBuilder.Entity("FabWorks.Core.Models.FormProgram", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("int");
|
|
|
|
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
|
|
|
b.Property<int>("BendCount")
|
|
.HasColumnType("int");
|
|
|
|
b.Property<int>("BomItemId")
|
|
.HasColumnType("int");
|
|
|
|
b.Property<string>("ContentHash")
|
|
.HasMaxLength(64)
|
|
.HasColumnType("nvarchar(64)");
|
|
|
|
b.Property<double?>("KFactor")
|
|
.HasColumnType("float");
|
|
|
|
b.Property<string>("LowerToolNames")
|
|
.HasMaxLength(500)
|
|
.HasColumnType("nvarchar(500)");
|
|
|
|
b.Property<string>("MaterialType")
|
|
.HasMaxLength(50)
|
|
.HasColumnType("nvarchar(50)");
|
|
|
|
b.Property<string>("ProgramFilePath")
|
|
.HasMaxLength(500)
|
|
.HasColumnType("nvarchar(500)");
|
|
|
|
b.Property<string>("ProgramName")
|
|
.HasMaxLength(200)
|
|
.HasColumnType("nvarchar(200)");
|
|
|
|
b.Property<string>("SetupNotes")
|
|
.HasMaxLength(2000)
|
|
.HasColumnType("nvarchar(2000)");
|
|
|
|
b.Property<double?>("Thickness")
|
|
.HasColumnType("float");
|
|
|
|
b.Property<string>("UpperToolNames")
|
|
.HasMaxLength(500)
|
|
.HasColumnType("nvarchar(500)");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("BomItemId")
|
|
.IsUnique();
|
|
|
|
b.ToTable("FormPrograms");
|
|
});
|
|
|
|
modelBuilder.Entity("FabWorks.Core.Models.BomItem", b =>
|
|
{
|
|
b.HasOne("FabWorks.Core.Models.ExportRecord", "ExportRecord")
|
|
.WithMany("BomItems")
|
|
.HasForeignKey("ExportRecordId")
|
|
.OnDelete(DeleteBehavior.Cascade)
|
|
.IsRequired();
|
|
|
|
b.Navigation("ExportRecord");
|
|
});
|
|
|
|
modelBuilder.Entity("FabWorks.Core.Models.CutTemplate", b =>
|
|
{
|
|
b.HasOne("FabWorks.Core.Models.BomItem", "BomItem")
|
|
.WithOne("CutTemplate")
|
|
.HasForeignKey("FabWorks.Core.Models.CutTemplate", "BomItemId")
|
|
.OnDelete(DeleteBehavior.Cascade)
|
|
.IsRequired();
|
|
|
|
b.Navigation("BomItem");
|
|
});
|
|
|
|
modelBuilder.Entity("FabWorks.Core.Models.ExportRecord", b =>
|
|
{
|
|
b.HasOne("FabWorks.Core.Models.Drawing", "Drawing")
|
|
.WithMany("ExportRecords")
|
|
.HasForeignKey("DrawingId")
|
|
.OnDelete(DeleteBehavior.SetNull);
|
|
|
|
b.Navigation("Drawing");
|
|
});
|
|
|
|
modelBuilder.Entity("FabWorks.Core.Models.FormProgram", b =>
|
|
{
|
|
b.HasOne("FabWorks.Core.Models.BomItem", "BomItem")
|
|
.WithOne("FormProgram")
|
|
.HasForeignKey("FabWorks.Core.Models.FormProgram", "BomItemId")
|
|
.OnDelete(DeleteBehavior.Cascade)
|
|
.IsRequired();
|
|
|
|
b.Navigation("BomItem");
|
|
});
|
|
|
|
modelBuilder.Entity("FabWorks.Core.Models.BomItem", b =>
|
|
{
|
|
b.Navigation("CutTemplate");
|
|
|
|
b.Navigation("FormProgram");
|
|
});
|
|
|
|
modelBuilder.Entity("FabWorks.Core.Models.Drawing", b =>
|
|
{
|
|
b.Navigation("ExportRecords");
|
|
});
|
|
|
|
modelBuilder.Entity("FabWorks.Core.Models.ExportRecord", b =>
|
|
{
|
|
b.Navigation("BomItems");
|
|
});
|
|
#pragma warning restore 612, 618
|
|
}
|
|
}
|
|
}
|