// using System; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; using ProposalSystem.Infrastructure.Data; #nullable disable namespace ProposalSystem.Infrastructure.Data.Migrations { [DbContext(typeof(ProposalDbContext))] partial class ProposalDbContextModelSnapshot : ModelSnapshot { protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "8.0.11") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); modelBuilder.Entity("ProposalSystem.Domain.Entities.AuditLog", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property("Action") .IsRequired() .HasColumnType("text"); b.Property("Details") .HasColumnType("jsonb"); b.Property("IpAddress") .HasColumnType("text"); b.Property("ProposalId") .HasColumnType("uuid"); b.Property("Timestamp") .HasColumnType("timestamp with time zone"); b.Property("UserId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("ProposalId"); b.HasIndex("Timestamp"); b.HasIndex("UserId"); b.ToTable("AuditLogs"); }); modelBuilder.Entity("ProposalSystem.Domain.Entities.Customer", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property("Addresses") .HasColumnType("jsonb"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("Name") .IsRequired() .HasColumnType("text"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone"); b.HasKey("Id"); b.ToTable("Customers"); }); modelBuilder.Entity("ProposalSystem.Domain.Entities.GeneratedPdf", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property("GeneratedAt") .HasColumnType("timestamp with time zone"); b.Property("GeneratedById") .HasColumnType("uuid"); b.Property("ProposalId") .HasColumnType("uuid"); b.Property("Revision") .HasColumnType("integer"); b.Property("S3Key") .IsRequired() .HasColumnType("text"); b.HasKey("Id"); b.HasIndex("GeneratedById"); b.HasIndex("ProposalId"); b.ToTable("GeneratedPdfs"); }); modelBuilder.Entity("ProposalSystem.Domain.Entities.LineItem", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("Description") .IsRequired() .HasColumnType("text"); b.Property("PricingMode") .IsRequired() .HasColumnType("text"); b.Property("ProposalId") .HasColumnType("uuid"); b.Property("Quantity") .HasPrecision(18, 4) .HasColumnType("numeric(18,4)"); b.Property("SortOrder") .HasColumnType("integer"); b.Property("Source") .IsRequired() .HasColumnType("text"); b.Property("TotalPrice") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("Unit") .IsRequired() .HasColumnType("text"); b.Property("UnitPrice") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone"); b.HasKey("Id"); b.HasIndex("ProposalId"); b.ToTable("LineItems"); }); modelBuilder.Entity("ProposalSystem.Domain.Entities.Proposal", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property("ApprovedAt") .HasColumnType("timestamp with time zone"); b.Property("ApprovedById") .HasColumnType("uuid"); b.Property("AssignedAdminId") .HasColumnType("uuid"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("CurrentRevision") .HasColumnType("integer"); b.Property("CustomerAddress") .IsRequired() .HasColumnType("text"); b.Property("CustomerName") .IsRequired() .HasColumnType("text"); b.Property("Notes") .IsRequired() .HasColumnType("text"); b.Property("ParentProposalId") .HasColumnType("uuid"); b.Property("Priority") .IsRequired() .HasColumnType("text"); b.Property("ProposalNumber") .IsRequired() .HasColumnType("text"); b.Property("RefinedScope") .HasColumnType("text"); b.Property("ScopeOfWork") .IsRequired() .HasColumnType("text"); b.Property("SentAt") .HasColumnType("timestamp with time zone"); b.Property("ServiceCategory") .IsRequired() .HasColumnType("text"); b.Property("Status") .IsRequired() .HasColumnType("text"); b.Property("SubmittedAt") .HasColumnType("timestamp with time zone"); b.Property("SubmittedById") .HasColumnType("uuid"); b.Property("TotalBidAmount") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone"); b.Property("VendorTotalCost") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("WorkOrderNumber") .IsRequired() .HasColumnType("text"); b.HasKey("Id"); b.HasIndex("ApprovedById"); b.HasIndex("AssignedAdminId"); b.HasIndex("ParentProposalId"); b.HasIndex("ProposalNumber") .IsUnique(); b.HasIndex("SubmittedById"); b.ToTable("Proposals"); }); modelBuilder.Entity("ProposalSystem.Domain.Entities.SimilarProposalReference", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property("ProposalId") .HasColumnType("uuid"); b.Property("ReferencedAt") .HasColumnType("timestamp with time zone"); b.Property("ReferencedById") .HasColumnType("uuid"); b.Property("ReferencedLibraryItemId") .IsRequired() .HasColumnType("text"); b.Property("SimilarityScore") .HasColumnType("real"); b.HasKey("Id"); b.HasIndex("ProposalId"); b.HasIndex("ReferencedById"); b.ToTable("SimilarProposalReferences"); }); modelBuilder.Entity("ProposalSystem.Domain.Entities.User", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property("CognitoSub") .IsRequired() .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DisplayName") .IsRequired() .HasColumnType("text"); b.Property("Email") .IsRequired() .HasColumnType("text"); b.Property("IsActive") .HasColumnType("boolean"); b.Property("Role") .IsRequired() .HasColumnType("text"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone"); b.HasKey("Id"); b.HasIndex("CognitoSub") .IsUnique(); b.HasIndex("Email") .IsUnique(); b.ToTable("Users"); }); modelBuilder.Entity("ProposalSystem.Domain.Entities.VendorProposal", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property("ExtractedData") .HasColumnType("jsonb"); b.Property("FileName") .IsRequired() .HasColumnType("text"); b.Property("ProcessingStatus") .IsRequired() .HasColumnType("text"); b.Property("ProposalId") .HasColumnType("uuid"); b.Property("S3Key") .IsRequired() .HasColumnType("text"); b.Property("TotalVendorCost") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("UploadedAt") .HasColumnType("timestamp with time zone"); b.Property("VendorName") .IsRequired() .HasColumnType("text"); b.HasKey("Id"); b.HasIndex("ProposalId"); b.ToTable("VendorProposals"); }); modelBuilder.Entity("ProposalSystem.Domain.Entities.AuditLog", b => { b.HasOne("ProposalSystem.Domain.Entities.Proposal", "Proposal") .WithMany() .HasForeignKey("ProposalId"); b.HasOne("ProposalSystem.Domain.Entities.User", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Proposal"); b.Navigation("User"); }); modelBuilder.Entity("ProposalSystem.Domain.Entities.GeneratedPdf", b => { b.HasOne("ProposalSystem.Domain.Entities.User", "GeneratedBy") .WithMany() .HasForeignKey("GeneratedById") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("ProposalSystem.Domain.Entities.Proposal", "Proposal") .WithMany() .HasForeignKey("ProposalId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("GeneratedBy"); b.Navigation("Proposal"); }); modelBuilder.Entity("ProposalSystem.Domain.Entities.LineItem", b => { b.HasOne("ProposalSystem.Domain.Entities.Proposal", "Proposal") .WithMany("LineItems") .HasForeignKey("ProposalId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Proposal"); }); modelBuilder.Entity("ProposalSystem.Domain.Entities.Proposal", b => { b.HasOne("ProposalSystem.Domain.Entities.User", "ApprovedBy") .WithMany() .HasForeignKey("ApprovedById") .OnDelete(DeleteBehavior.SetNull); b.HasOne("ProposalSystem.Domain.Entities.User", "AssignedAdmin") .WithMany() .HasForeignKey("AssignedAdminId") .OnDelete(DeleteBehavior.SetNull); b.HasOne("ProposalSystem.Domain.Entities.Proposal", "ParentProposal") .WithMany() .HasForeignKey("ParentProposalId") .OnDelete(DeleteBehavior.SetNull); b.HasOne("ProposalSystem.Domain.Entities.User", "SubmittedBy") .WithMany() .HasForeignKey("SubmittedById") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ApprovedBy"); b.Navigation("AssignedAdmin"); b.Navigation("ParentProposal"); b.Navigation("SubmittedBy"); }); modelBuilder.Entity("ProposalSystem.Domain.Entities.SimilarProposalReference", b => { b.HasOne("ProposalSystem.Domain.Entities.Proposal", "Proposal") .WithMany() .HasForeignKey("ProposalId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("ProposalSystem.Domain.Entities.User", "ReferencedBy") .WithMany() .HasForeignKey("ReferencedById") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Proposal"); b.Navigation("ReferencedBy"); }); modelBuilder.Entity("ProposalSystem.Domain.Entities.VendorProposal", b => { b.HasOne("ProposalSystem.Domain.Entities.Proposal", "Proposal") .WithMany("VendorProposals") .HasForeignKey("ProposalId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Proposal"); }); modelBuilder.Entity("ProposalSystem.Domain.Entities.Proposal", b => { b.Navigation("LineItems"); b.Navigation("VendorProposals"); }); #pragma warning restore 612, 618 } } }