// using System; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; using SQLInsight.Hub.Data; #nullable disable namespace SQLInsight.Hub.Data.Migrations { [DbContext(typeof(HubDbContext))] partial class HubDbContextModelSnapshot : ModelSnapshot { protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "10.0.12") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); modelBuilder.Entity("SQLInsight.Hub.Data.Customer", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasColumnName("created_at"); b.Property("Name") .IsRequired() .HasColumnType("text") .HasColumnName("name"); b.HasKey("Id") .HasName("pk_customers"); b.HasIndex("Name") .IsUnique() .HasDatabaseName("ix_customers_name"); b.ToTable("customers", (string)null); }); modelBuilder.Entity("SQLInsight.Hub.Data.HubFinding", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasColumnName("id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("EvidenceJson") .IsRequired() .HasColumnType("jsonb") .HasColumnName("evidence_json"); b.Property("Explanation") .IsRequired() .HasColumnType("text") .HasColumnName("explanation"); b.Property("FirstSeenAt") .HasColumnType("timestamp with time zone") .HasColumnName("first_seen_at"); b.Property("InstanceId") .HasColumnType("integer") .HasColumnName("instance_id"); b.Property("LastSeenAt") .HasColumnType("timestamp with time zone") .HasColumnName("last_seen_at"); b.Property("Recommendation") .IsRequired() .HasColumnType("text") .HasColumnName("recommendation"); b.Property("ResolvedAt") .HasColumnType("timestamp with time zone") .HasColumnName("resolved_at"); b.Property("RuleId") .IsRequired() .HasColumnType("text") .HasColumnName("rule_id"); b.Property("Severity") .HasColumnType("integer") .HasColumnName("severity"); b.Property("Subject") .IsRequired() .HasColumnType("text") .HasColumnName("subject"); b.Property("SupportCaseId") .HasColumnType("integer") .HasColumnName("support_case_id"); b.Property("Title") .IsRequired() .HasColumnType("text") .HasColumnName("title"); b.HasKey("Id") .HasName("pk_findings"); b.HasIndex("SupportCaseId") .HasDatabaseName("ix_findings_support_case_id"); b.HasIndex("Severity", "ResolvedAt") .HasDatabaseName("ix_findings_severity_resolved_at"); b.HasIndex("InstanceId", "RuleId", "Subject") .IsUnique() .HasDatabaseName("ix_findings_instance_id_rule_id_subject") .HasFilter("resolved_at IS NULL"); b.ToTable("findings", (string)null); }); modelBuilder.Entity("SQLInsight.Hub.Data.Instance", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AgentVersion") .HasColumnType("text") .HasColumnName("agent_version"); b.Property("CustomerId") .HasColumnType("integer") .HasColumnName("customer_id"); b.Property("Edition") .HasColumnType("text") .HasColumnName("edition"); b.Property("InstanceKey") .IsRequired() .HasColumnType("text") .HasColumnName("instance_key"); b.Property("LastCollectedAt") .HasColumnType("timestamp with time zone") .HasColumnName("last_collected_at"); b.Property("LastSubmissionAt") .HasColumnType("timestamp with time zone") .HasColumnName("last_submission_at"); b.Property("ProductLevel") .HasColumnType("text") .HasColumnName("product_level"); b.Property("ProductUpdateLevel") .HasColumnType("text") .HasColumnName("product_update_level"); b.Property("ProductVersion") .HasColumnType("text") .HasColumnName("product_version"); b.Property("Release") .HasColumnType("text") .HasColumnName("release"); b.Property("ServerName") .HasColumnType("text") .HasColumnName("server_name"); b.HasKey("Id") .HasName("pk_instances"); b.HasIndex("CustomerId", "InstanceKey") .IsUnique() .HasDatabaseName("ix_instances_customer_id_instance_key"); b.ToTable("instances", (string)null); }); modelBuilder.Entity("SQLInsight.Hub.Data.LicenseRecord", b => { b.Property("LicenseId") .HasColumnType("text") .HasColumnName("license_id"); b.Property("CustomerId") .HasColumnType("integer") .HasColumnName("customer_id"); b.Property("ExpiresAt") .HasColumnType("timestamp with time zone") .HasColumnName("expires_at"); b.Property("FirstSeenAt") .HasColumnType("timestamp with time zone") .HasColumnName("first_seen_at"); b.Property("IssuedAt") .HasColumnType("timestamp with time zone") .HasColumnName("issued_at"); b.Property("LastSeenAt") .HasColumnType("timestamp with time zone") .HasColumnName("last_seen_at"); b.Property("MaxInstances") .HasColumnType("integer") .HasColumnName("max_instances"); b.Property("Plan") .IsRequired() .HasColumnType("text") .HasColumnName("plan"); b.Property("RevokedAt") .HasColumnType("timestamp with time zone") .HasColumnName("revoked_at"); b.Property("RevokedReason") .HasColumnType("text") .HasColumnName("revoked_reason"); b.HasKey("LicenseId") .HasName("pk_licenses"); b.HasIndex("CustomerId") .HasDatabaseName("ix_licenses_customer_id"); b.ToTable("licenses", (string)null); }); modelBuilder.Entity("SQLInsight.Hub.Data.RuleState", b => { b.Property("InstanceId") .HasColumnType("integer") .HasColumnName("instance_id"); b.Property("RuleId") .HasColumnType("text") .HasColumnName("rule_id"); b.Property("Outcome") .IsRequired() .HasColumnType("text") .HasColumnName("outcome"); b.Property("Reason") .HasColumnType("text") .HasColumnName("reason"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasColumnName("updated_at"); b.HasKey("InstanceId", "RuleId") .HasName("pk_rule_states"); b.ToTable("rule_states", (string)null); }); modelBuilder.Entity("SQLInsight.Hub.Data.StaffUser", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasColumnName("created_at"); b.Property("DisplayName") .IsRequired() .HasColumnType("text") .HasColumnName("display_name"); b.Property("IsActive") .HasColumnType("boolean") .HasColumnName("is_active"); b.Property("LastLoginAt") .HasColumnType("timestamp with time zone") .HasColumnName("last_login_at"); b.Property("PasswordHash") .IsRequired() .HasColumnType("text") .HasColumnName("password_hash"); b.Property("UserName") .IsRequired() .HasColumnType("text") .HasColumnName("user_name"); b.HasKey("Id") .HasName("pk_staff_users"); b.HasIndex("UserName") .IsUnique() .HasDatabaseName("ix_staff_users_user_name"); b.ToTable("staff_users", (string)null); }); modelBuilder.Entity("SQLInsight.Hub.Data.Submission", b => { b.Property("SubmissionId") .ValueGeneratedOnAdd() .HasColumnType("uuid") .HasColumnName("submission_id"); b.Property("Applied") .HasColumnType("boolean") .HasColumnName("applied"); b.Property("CollectedAt") .HasColumnType("timestamp with time zone") .HasColumnName("collected_at"); b.Property("FindingCount") .HasColumnType("integer") .HasColumnName("finding_count"); b.Property("InstanceId") .HasColumnType("integer") .HasColumnName("instance_id"); b.Property("ReceivedAt") .HasColumnType("timestamp with time zone") .HasColumnName("received_at"); b.HasKey("SubmissionId") .HasName("pk_submissions"); b.HasIndex("ReceivedAt") .HasDatabaseName("ix_submissions_received_at"); b.ToTable("submissions", (string)null); }); modelBuilder.Entity("SQLInsight.Hub.Data.SupportCase", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("ClosedAt") .HasColumnType("timestamp with time zone") .HasColumnName("closed_at"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasColumnName("created_at"); b.Property("CustomerId") .HasColumnType("integer") .HasColumnName("customer_id"); b.Property("IsOpen") .HasColumnType("boolean") .HasColumnName("is_open"); b.Property("Note") .HasColumnType("text") .HasColumnName("note"); b.Property("Reference") .IsRequired() .HasColumnType("text") .HasColumnName("reference"); b.Property("Title") .IsRequired() .HasColumnType("text") .HasColumnName("title"); b.HasKey("Id") .HasName("pk_support_cases"); b.HasIndex("CustomerId") .HasDatabaseName("ix_support_cases_customer_id"); b.ToTable("support_cases", (string)null); }); modelBuilder.Entity("SQLInsight.Hub.Data.HubFinding", b => { b.HasOne("SQLInsight.Hub.Data.Instance", "Instance") .WithMany("Findings") .HasForeignKey("InstanceId") .OnDelete(DeleteBehavior.Cascade) .IsRequired() .HasConstraintName("fk_findings_instances_instance_id"); b.HasOne("SQLInsight.Hub.Data.SupportCase", "SupportCase") .WithMany("Findings") .HasForeignKey("SupportCaseId") .OnDelete(DeleteBehavior.SetNull) .HasConstraintName("fk_findings_support_cases_support_case_id"); b.Navigation("Instance"); b.Navigation("SupportCase"); }); modelBuilder.Entity("SQLInsight.Hub.Data.Instance", b => { b.HasOne("SQLInsight.Hub.Data.Customer", "Customer") .WithMany("Instances") .HasForeignKey("CustomerId") .OnDelete(DeleteBehavior.Cascade) .IsRequired() .HasConstraintName("fk_instances_customers_customer_id"); b.Navigation("Customer"); }); modelBuilder.Entity("SQLInsight.Hub.Data.LicenseRecord", b => { b.HasOne("SQLInsight.Hub.Data.Customer", "Customer") .WithMany("Licenses") .HasForeignKey("CustomerId") .OnDelete(DeleteBehavior.Cascade) .IsRequired() .HasConstraintName("fk_licenses_customers_customer_id"); b.Navigation("Customer"); }); modelBuilder.Entity("SQLInsight.Hub.Data.SupportCase", b => { b.HasOne("SQLInsight.Hub.Data.Customer", "Customer") .WithMany("SupportCases") .HasForeignKey("CustomerId") .OnDelete(DeleteBehavior.Cascade) .IsRequired() .HasConstraintName("fk_support_cases_customers_customer_id"); b.Navigation("Customer"); }); modelBuilder.Entity("SQLInsight.Hub.Data.Customer", b => { b.Navigation("Instances"); b.Navigation("Licenses"); b.Navigation("SupportCases"); }); modelBuilder.Entity("SQLInsight.Hub.Data.Instance", b => { b.Navigation("Findings"); }); modelBuilder.Entity("SQLInsight.Hub.Data.SupportCase", b => { b.Navigation("Findings"); }); #pragma warning restore 612, 618 } } }