refactor(db): ♻️ re-create initial schema migration

This commit is contained in:
Collin M. Barrett 2023-05-07 14:02:48 -05:00 committed by Collin Barrett
parent c3e3db24ad
commit 7bd2c82719
4 changed files with 2505 additions and 1 deletions

View file

@ -15,7 +15,7 @@ public async Task Migrate_DoesNotThrowException()
var connString = Environment.GetEnvironmentVariable("ConnectionStrings__DirectoryConnection") ??
throw new Exception();
var options = new DbContextOptionsBuilder<QueryDbContext>()
.UseNpgsql(connString, m => m.MigrationsAssembly(typeof(Initial).Assembly.GetName().Name))
.UseNpgsql(connString, m => m.MigrationsAssembly(typeof(InitialCreate).Assembly.GetName().Name))
.EnableSensitiveDataLogging()
.Options;
await using var context = new QueryDbContext(options);

View file

@ -0,0 +1,942 @@
// <auto-generated />
using System;
using System.Text.Json;
using FilterLists.Directory.Domain.Aggregates;
using FilterLists.Directory.Infrastructure.Persistence.Queries.Context;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace FilterLists.Directory.Infrastructure.Migrations.Migrations
{
[DbContext(typeof(QueryDbContext))]
[Migration("20230507190214_InitialCreate")]
partial class InitialCreate
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.5")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "aggregate_type", new[] { "filter_list", "language", "license", "maintainer", "software", "syntax", "tag" });
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.HasSequence("EntityFrameworkHiLoSequence-FilterListViewUrl")
.StartsAt(3000L)
.IncrementsBy(3);
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Change", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
b.Property<JsonDocument>("After")
.HasColumnType("jsonb")
.HasColumnName("after");
b.Property<AggregateType>("AggregateType")
.HasColumnType("aggregate_type")
.HasColumnName("aggregate_type");
b.Property<DateTime?>("ApprovedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("approved_at");
b.Property<JsonDocument>("Before")
.HasColumnType("jsonb")
.HasColumnName("before");
b.Property<long?>("FilterListId")
.HasColumnType("bigint")
.HasColumnName("filter_list_id");
b.Property<long?>("LanguageId")
.HasColumnType("bigint")
.HasColumnName("language_id");
b.Property<long?>("LicenseId")
.HasColumnType("bigint")
.HasColumnName("license_id");
b.Property<long?>("MaintainerId")
.HasColumnType("bigint")
.HasColumnName("maintainer_id");
b.Property<string>("Reason")
.HasColumnType("text")
.HasColumnName("reason");
b.Property<DateTime?>("RejectedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("rejected_at");
b.Property<string>("RejectedReason")
.HasColumnType("text")
.HasColumnName("rejected_reason");
b.Property<long?>("SoftwareId")
.HasColumnType("bigint")
.HasColumnName("software_id");
b.Property<DateTime>("SubmittedAt")
.ValueGeneratedOnAdd()
.HasColumnType("timestamp with time zone")
.HasColumnName("submitted_at")
.HasDefaultValueSql("CURRENT_TIMESTAMP");
b.Property<long?>("SyntaxId")
.HasColumnType("bigint")
.HasColumnName("syntax_id");
b.Property<long?>("TagId")
.HasColumnType("bigint")
.HasColumnName("tag_id");
b.HasKey("Id")
.HasName("pk_changes");
b.HasIndex("FilterListId")
.HasDatabaseName("ix_changes_filter_list_id");
b.HasIndex("LanguageId")
.HasDatabaseName("ix_changes_language_id");
b.HasIndex("LicenseId")
.HasDatabaseName("ix_changes_license_id");
b.HasIndex("MaintainerId")
.HasDatabaseName("ix_changes_maintainer_id");
b.HasIndex("SoftwareId")
.HasDatabaseName("ix_changes_software_id");
b.HasIndex("SyntaxId")
.HasDatabaseName("ix_changes_syntax_id");
b.HasIndex("TagId")
.HasDatabaseName("ix_changes_tag_id");
b.ToTable("changes", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Dependent", b =>
{
b.Property<long>("DependencyFilterListId")
.HasColumnType("bigint")
.HasColumnName("dependency_filter_list_id");
b.Property<long>("DependentFilterListId")
.HasColumnType("bigint")
.HasColumnName("dependent_filter_list_id");
b.HasKey("DependencyFilterListId", "DependentFilterListId")
.HasName("pk_dependents");
b.HasIndex("DependentFilterListId")
.HasDatabaseName("ix_dependents_dependent_filter_list_id");
b.ToTable("dependents", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
b.Property<string>("ChatUrl")
.HasColumnType("text")
.HasColumnName("chat_url");
b.Property<string>("Description")
.HasColumnType("text")
.HasColumnName("description");
b.Property<string>("DonateUrl")
.HasColumnType("text")
.HasColumnName("donate_url");
b.Property<string>("EmailAddress")
.HasColumnType("text")
.HasColumnName("email_address");
b.Property<string>("ForumUrl")
.HasColumnType("text")
.HasColumnName("forum_url");
b.Property<string>("HomeUrl")
.HasColumnType("text")
.HasColumnName("home_url");
b.Property<bool>("IsApproved")
.HasColumnType("boolean")
.HasColumnName("is_approved");
b.Property<string>("IssuesUrl")
.HasColumnType("text")
.HasColumnName("issues_url");
b.Property<long>("LicenseId")
.ValueGeneratedOnAdd()
.HasColumnType("bigint")
.HasDefaultValue(5L)
.HasColumnName("license_id");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.Property<string>("OnionUrl")
.HasColumnType("text")
.HasColumnName("onion_url");
b.Property<string>("PolicyUrl")
.HasColumnType("text")
.HasColumnName("policy_url");
b.Property<string>("SubmissionUrl")
.HasColumnType("text")
.HasColumnName("submission_url");
b.HasKey("Id")
.HasName("pk_filter_lists");
b.HasIndex("LicenseId")
.HasDatabaseName("ix_filter_lists_license_id");
b.HasIndex("Name")
.IsUnique()
.HasDatabaseName("ix_filter_lists_name");
b.ToTable("filter_lists", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListLanguage", b =>
{
b.Property<long>("FilterListId")
.HasColumnType("bigint")
.HasColumnName("filter_list_id");
b.Property<long>("LanguageId")
.HasColumnType("bigint")
.HasColumnName("language_id");
b.HasKey("FilterListId", "LanguageId")
.HasName("pk_filter_list_languages");
b.HasIndex("LanguageId")
.HasDatabaseName("ix_filter_list_languages_language_id");
b.ToTable("filter_list_languages", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListMaintainer", b =>
{
b.Property<long>("FilterListId")
.HasColumnType("bigint")
.HasColumnName("filter_list_id");
b.Property<long>("MaintainerId")
.HasColumnType("bigint")
.HasColumnName("maintainer_id");
b.HasKey("FilterListId", "MaintainerId")
.HasName("pk_filter_list_maintainers");
b.HasIndex("MaintainerId")
.HasDatabaseName("ix_filter_list_maintainers_maintainer_id");
b.ToTable("filter_list_maintainers", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListSyntax", b =>
{
b.Property<long>("FilterListId")
.HasColumnType("bigint")
.HasColumnName("filter_list_id");
b.Property<long>("SyntaxId")
.HasColumnType("bigint")
.HasColumnName("syntax_id");
b.HasKey("FilterListId", "SyntaxId")
.HasName("pk_filter_list_syntaxes");
b.HasIndex("SyntaxId")
.HasDatabaseName("ix_filter_list_syntaxes_syntax_id");
b.ToTable("filter_list_syntaxes", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListTag", b =>
{
b.Property<long>("FilterListId")
.HasColumnType("bigint")
.HasColumnName("filter_list_id");
b.Property<long>("TagId")
.HasColumnType("bigint")
.HasColumnName("tag_id");
b.HasKey("FilterListId", "TagId")
.HasName("pk_filter_list_tags");
b.HasIndex("TagId")
.HasDatabaseName("ix_filter_list_tags_tag_id");
b.ToTable("filter_list_tags", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Fork", b =>
{
b.Property<long>("UpstreamFilterListId")
.HasColumnType("bigint")
.HasColumnName("upstream_filter_list_id");
b.Property<long>("ForkFilterListId")
.HasColumnType("bigint")
.HasColumnName("fork_filter_list_id");
b.HasKey("UpstreamFilterListId", "ForkFilterListId")
.HasName("pk_forks");
b.HasIndex("ForkFilterListId")
.HasDatabaseName("ix_forks_fork_filter_list_id");
b.ToTable("forks", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Language", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
b.Property<bool>("IsApproved")
.HasColumnType("boolean")
.HasColumnName("is_approved");
b.Property<string>("Iso6391")
.IsRequired()
.HasMaxLength(2)
.HasColumnType("character(2)")
.HasColumnName("iso6391")
.IsFixedLength();
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.HasKey("Id")
.HasName("pk_languages");
b.HasIndex("Iso6391")
.IsUnique()
.HasDatabaseName("ix_languages_iso6391");
b.HasIndex("Name")
.IsUnique()
.HasDatabaseName("ix_languages_name");
b.ToTable("languages", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.License", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
b.Property<bool>("IsApproved")
.HasColumnType("boolean")
.HasColumnName("is_approved");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.Property<bool>("PermitsCommercialUse")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("permits_commercial_use");
b.Property<bool>("PermitsDistribution")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("permits_distribution");
b.Property<bool>("PermitsModification")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("permits_modification");
b.Property<string>("Url")
.HasColumnType("text")
.HasColumnName("url");
b.HasKey("Id")
.HasName("pk_licenses");
b.HasIndex("Name")
.IsUnique()
.HasDatabaseName("ix_licenses_name");
b.ToTable("licenses", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Maintainer", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
b.Property<string>("EmailAddress")
.HasColumnType("text")
.HasColumnName("email_address");
b.Property<bool>("IsApproved")
.HasColumnType("boolean")
.HasColumnName("is_approved");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.Property<string>("TwitterHandle")
.HasColumnType("text")
.HasColumnName("twitter_handle");
b.Property<string>("Url")
.HasColumnType("text")
.HasColumnName("url");
b.HasKey("Id")
.HasName("pk_maintainers");
b.HasIndex("Name")
.IsUnique()
.HasDatabaseName("ix_maintainers_name");
b.ToTable("maintainers", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Merge", b =>
{
b.Property<long>("IncludedInFilterListId")
.HasColumnType("bigint")
.HasColumnName("included_in_filter_list_id");
b.Property<long>("IncludesFilterListId")
.HasColumnType("bigint")
.HasColumnName("includes_filter_list_id");
b.HasKey("IncludedInFilterListId", "IncludesFilterListId")
.HasName("pk_merges");
b.HasIndex("IncludesFilterListId")
.HasDatabaseName("ix_merges_includes_filter_list_id");
b.ToTable("merges", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Software", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
b.Property<string>("Description")
.HasColumnType("text")
.HasColumnName("description");
b.Property<string>("DownloadUrl")
.HasColumnType("text")
.HasColumnName("download_url");
b.Property<string>("HomeUrl")
.HasColumnType("text")
.HasColumnName("home_url");
b.Property<bool>("IsApproved")
.HasColumnType("boolean")
.HasColumnName("is_approved");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.Property<bool>("SupportsAbpUrlScheme")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("supports_abp_url_scheme");
b.HasKey("Id")
.HasName("pk_software");
b.HasIndex("Name")
.IsUnique()
.HasDatabaseName("ix_software_name");
b.ToTable("software", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.SoftwareSyntax", b =>
{
b.Property<long>("SoftwareId")
.HasColumnType("bigint")
.HasColumnName("software_id");
b.Property<long>("SyntaxId")
.HasColumnType("bigint")
.HasColumnName("syntax_id");
b.HasKey("SoftwareId", "SyntaxId")
.HasName("pk_software_syntaxes");
b.HasIndex("SyntaxId")
.HasDatabaseName("ix_software_syntaxes_syntax_id");
b.ToTable("software_syntaxes", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Syntax", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
b.Property<string>("Description")
.HasColumnType("text")
.HasColumnName("description");
b.Property<bool>("IsApproved")
.HasColumnType("boolean")
.HasColumnName("is_approved");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.Property<string>("Url")
.HasColumnType("text")
.HasColumnName("url");
b.HasKey("Id")
.HasName("pk_syntaxes");
b.HasIndex("Name")
.IsUnique()
.HasDatabaseName("ix_syntaxes_name");
b.ToTable("syntaxes", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Tag", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
b.Property<string>("Description")
.HasColumnType("text")
.HasColumnName("description");
b.Property<bool>("IsApproved")
.HasColumnType("boolean")
.HasColumnName("is_approved");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.HasKey("Id")
.HasName("pk_tags");
b.HasIndex("Name")
.IsUnique()
.HasDatabaseName("ix_tags_name");
b.ToTable("tags", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Change", b =>
{
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", null)
.WithMany("Changes")
.HasForeignKey("FilterListId")
.HasConstraintName("fk_changes_filter_lists_filter_list_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Language", null)
.WithMany("Changes")
.HasForeignKey("LanguageId")
.HasConstraintName("fk_changes_languages_language_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.License", null)
.WithMany("Changes")
.HasForeignKey("LicenseId")
.HasConstraintName("fk_changes_licenses_license_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Maintainer", null)
.WithMany("Changes")
.HasForeignKey("MaintainerId")
.HasConstraintName("fk_changes_maintainers_maintainer_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Software", null)
.WithMany("Changes")
.HasForeignKey("SoftwareId")
.HasConstraintName("fk_changes_software_software_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Syntax", null)
.WithMany("Changes")
.HasForeignKey("SyntaxId")
.HasConstraintName("fk_changes_syntaxes_syntax_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Tag", null)
.WithMany("Changes")
.HasForeignKey("TagId")
.HasConstraintName("fk_changes_tags_tag_id");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Dependent", b =>
{
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "DependencyFilterList")
.WithMany("DependentFilterLists")
.HasForeignKey("DependencyFilterListId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_dependents_filter_lists_dependency_filter_list_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "DependentFilterList")
.WithMany("DependencyFilterLists")
.HasForeignKey("DependentFilterListId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_dependents_filter_lists_dependent_filter_list_id");
b.Navigation("DependencyFilterList");
b.Navigation("DependentFilterList");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", b =>
{
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.License", "License")
.WithMany("FilterLists")
.HasForeignKey("LicenseId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired()
.HasConstraintName("fk_filter_lists_licenses_license_id");
b.OwnsMany("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListViewUrl", "ViewUrls", b1 =>
{
b1.Property<long>("FilterListId")
.HasColumnType("bigint")
.HasColumnName("filter_list_id");
b1.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseHiLo(b1.Property<long>("Id"), "EntityFrameworkHiLoSequence-FilterListViewUrl");
b1.Property<short>("Primariness")
.ValueGeneratedOnAdd()
.HasColumnType("smallint")
.HasDefaultValue((short)1)
.HasColumnName("primariness");
b1.Property<short>("SegmentNumber")
.ValueGeneratedOnAdd()
.HasColumnType("smallint")
.HasDefaultValue((short)1)
.HasColumnName("segment_number");
b1.Property<string>("Url")
.IsRequired()
.HasColumnType("text")
.HasColumnName("url");
b1.HasKey("FilterListId", "Id")
.HasName("pk_filter_list_view_urls");
b1.HasIndex("FilterListId", "SegmentNumber", "Primariness")
.IsUnique()
.HasDatabaseName("ix_filter_list_view_urls_filter_list_id_segment_number_primari");
b1.ToTable("filter_list_view_urls", (string)null);
b1.WithOwner("FilterList")
.HasForeignKey("FilterListId")
.HasConstraintName("fk_filter_list_view_urls_filter_lists_filter_list_id");
b1.Navigation("FilterList");
});
b.Navigation("License");
b.Navigation("ViewUrls");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListLanguage", b =>
{
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "FilterList")
.WithMany("FilterListLanguages")
.HasForeignKey("FilterListId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_filter_list_languages_filter_lists_filter_list_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Language", "Language")
.WithMany("FilterListLanguages")
.HasForeignKey("LanguageId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_filter_list_languages_languages_language_id");
b.Navigation("FilterList");
b.Navigation("Language");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListMaintainer", b =>
{
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "FilterList")
.WithMany("FilterListMaintainers")
.HasForeignKey("FilterListId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_filter_list_maintainers_filter_lists_filter_list_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Maintainer", "Maintainer")
.WithMany("FilterListMaintainers")
.HasForeignKey("MaintainerId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_filter_list_maintainers_maintainers_maintainer_id");
b.Navigation("FilterList");
b.Navigation("Maintainer");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListSyntax", b =>
{
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "FilterList")
.WithMany("FilterListSyntaxes")
.HasForeignKey("FilterListId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_filter_list_syntaxes_filter_lists_filter_list_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Syntax", "Syntax")
.WithMany("FilterListSyntaxes")
.HasForeignKey("SyntaxId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_filter_list_syntaxes_syntaxes_syntax_id");
b.Navigation("FilterList");
b.Navigation("Syntax");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListTag", b =>
{
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "FilterList")
.WithMany("FilterListTags")
.HasForeignKey("FilterListId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_filter_list_tags_filter_lists_filter_list_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Tag", "Tag")
.WithMany("FilterListTags")
.HasForeignKey("TagId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_filter_list_tags_tags_tag_id");
b.Navigation("FilterList");
b.Navigation("Tag");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Fork", b =>
{
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "ForkFilterList")
.WithMany("UpstreamFilterLists")
.HasForeignKey("ForkFilterListId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_forks_filter_lists_fork_filter_list_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "UpstreamFilterList")
.WithMany("ForkFilterLists")
.HasForeignKey("UpstreamFilterListId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_forks_filter_lists_upstream_filter_list_id");
b.Navigation("ForkFilterList");
b.Navigation("UpstreamFilterList");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Merge", b =>
{
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "IncludedInFilterList")
.WithMany("IncludesFilterLists")
.HasForeignKey("IncludedInFilterListId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_merges_filter_lists_included_in_filter_list_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "IncludesFilterList")
.WithMany("IncludedInFilterLists")
.HasForeignKey("IncludesFilterListId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_merges_filter_lists_includes_filter_list_id");
b.Navigation("IncludedInFilterList");
b.Navigation("IncludesFilterList");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.SoftwareSyntax", b =>
{
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Software", "Software")
.WithMany("SoftwareSyntaxes")
.HasForeignKey("SoftwareId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_software_syntaxes_software_software_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Syntax", "Syntax")
.WithMany("SoftwareSyntaxes")
.HasForeignKey("SyntaxId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_software_syntaxes_syntaxes_syntax_id");
b.Navigation("Software");
b.Navigation("Syntax");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", b =>
{
b.Navigation("Changes");
b.Navigation("DependencyFilterLists");
b.Navigation("DependentFilterLists");
b.Navigation("FilterListLanguages");
b.Navigation("FilterListMaintainers");
b.Navigation("FilterListSyntaxes");
b.Navigation("FilterListTags");
b.Navigation("ForkFilterLists");
b.Navigation("IncludedInFilterLists");
b.Navigation("IncludesFilterLists");
b.Navigation("UpstreamFilterLists");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Language", b =>
{
b.Navigation("Changes");
b.Navigation("FilterListLanguages");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.License", b =>
{
b.Navigation("Changes");
b.Navigation("FilterLists");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Maintainer", b =>
{
b.Navigation("Changes");
b.Navigation("FilterListMaintainers");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Software", b =>
{
b.Navigation("Changes");
b.Navigation("SoftwareSyntaxes");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Syntax", b =>
{
b.Navigation("Changes");
b.Navigation("FilterListSyntaxes");
b.Navigation("SoftwareSyntaxes");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Tag", b =>
{
b.Navigation("Changes");
b.Navigation("FilterListTags");
});
#pragma warning restore 612, 618
}
}
}

View file

@ -0,0 +1,623 @@
using System;
using System.Text.Json;
using FilterLists.Directory.Domain.Aggregates;
using Microsoft.EntityFrameworkCore.Migrations;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace FilterLists.Directory.Infrastructure.Migrations.Migrations
{
/// <inheritdoc />
public partial class InitialCreate : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterDatabase()
.Annotation("Npgsql:Enum:aggregate_type", "filter_list,language,license,maintainer,software,syntax,tag");
migrationBuilder.CreateSequence(
name: "EntityFrameworkHiLoSequence-FilterListViewUrl",
startValue: 3000L,
incrementBy: 3);
migrationBuilder.CreateTable(
name: "languages",
columns: table => new
{
id = table.Column<long>(type: "bigint", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
iso6391 = table.Column<string>(type: "character(2)", fixedLength: true, maxLength: 2, nullable: false),
name = table.Column<string>(type: "text", nullable: false),
is_approved = table.Column<bool>(type: "boolean", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_languages", x => x.id);
});
migrationBuilder.CreateTable(
name: "licenses",
columns: table => new
{
id = table.Column<long>(type: "bigint", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
name = table.Column<string>(type: "text", nullable: false),
url = table.Column<string>(type: "text", nullable: true),
permits_modification = table.Column<bool>(type: "boolean", nullable: false, defaultValue: false),
permits_distribution = table.Column<bool>(type: "boolean", nullable: false, defaultValue: false),
permits_commercial_use = table.Column<bool>(type: "boolean", nullable: false, defaultValue: false),
is_approved = table.Column<bool>(type: "boolean", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_licenses", x => x.id);
});
migrationBuilder.CreateTable(
name: "maintainers",
columns: table => new
{
id = table.Column<long>(type: "bigint", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
name = table.Column<string>(type: "text", nullable: false),
url = table.Column<string>(type: "text", nullable: true),
email_address = table.Column<string>(type: "text", nullable: true),
twitter_handle = table.Column<string>(type: "text", nullable: true),
is_approved = table.Column<bool>(type: "boolean", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_maintainers", x => x.id);
});
migrationBuilder.CreateTable(
name: "software",
columns: table => new
{
id = table.Column<long>(type: "bigint", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
name = table.Column<string>(type: "text", nullable: false),
description = table.Column<string>(type: "text", nullable: true),
home_url = table.Column<string>(type: "text", nullable: true),
download_url = table.Column<string>(type: "text", nullable: true),
supports_abp_url_scheme = table.Column<bool>(type: "boolean", nullable: false, defaultValue: false),
is_approved = table.Column<bool>(type: "boolean", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_software", x => x.id);
});
migrationBuilder.CreateTable(
name: "syntaxes",
columns: table => new
{
id = table.Column<long>(type: "bigint", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
name = table.Column<string>(type: "text", nullable: false),
description = table.Column<string>(type: "text", nullable: true),
url = table.Column<string>(type: "text", nullable: true),
is_approved = table.Column<bool>(type: "boolean", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_syntaxes", x => x.id);
});
migrationBuilder.CreateTable(
name: "tags",
columns: table => new
{
id = table.Column<long>(type: "bigint", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
name = table.Column<string>(type: "text", nullable: false),
description = table.Column<string>(type: "text", nullable: true),
is_approved = table.Column<bool>(type: "boolean", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_tags", x => x.id);
});
migrationBuilder.CreateTable(
name: "filter_lists",
columns: table => new
{
id = table.Column<long>(type: "bigint", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
name = table.Column<string>(type: "text", nullable: false),
description = table.Column<string>(type: "text", nullable: true),
license_id = table.Column<long>(type: "bigint", nullable: false, defaultValue: 5L),
home_url = table.Column<string>(type: "text", nullable: true),
onion_url = table.Column<string>(type: "text", nullable: true),
policy_url = table.Column<string>(type: "text", nullable: true),
submission_url = table.Column<string>(type: "text", nullable: true),
issues_url = table.Column<string>(type: "text", nullable: true),
forum_url = table.Column<string>(type: "text", nullable: true),
chat_url = table.Column<string>(type: "text", nullable: true),
email_address = table.Column<string>(type: "text", nullable: true),
donate_url = table.Column<string>(type: "text", nullable: true),
is_approved = table.Column<bool>(type: "boolean", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_filter_lists", x => x.id);
table.ForeignKey(
name: "fk_filter_lists_licenses_license_id",
column: x => x.license_id,
principalTable: "licenses",
principalColumn: "id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "software_syntaxes",
columns: table => new
{
software_id = table.Column<long>(type: "bigint", nullable: false),
syntax_id = table.Column<long>(type: "bigint", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_software_syntaxes", x => new { x.software_id, x.syntax_id });
table.ForeignKey(
name: "fk_software_syntaxes_software_software_id",
column: x => x.software_id,
principalTable: "software",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "fk_software_syntaxes_syntaxes_syntax_id",
column: x => x.syntax_id,
principalTable: "syntaxes",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "changes",
columns: table => new
{
id = table.Column<long>(type: "bigint", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
reason = table.Column<string>(type: "text", nullable: true),
submitted_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: false, defaultValueSql: "CURRENT_TIMESTAMP"),
approved_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
rejected_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
rejected_reason = table.Column<string>(type: "text", nullable: true),
before = table.Column<JsonDocument>(type: "jsonb", nullable: true),
after = table.Column<JsonDocument>(type: "jsonb", nullable: true),
aggregate_type = table.Column<AggregateType>(type: "aggregate_type", nullable: false),
filter_list_id = table.Column<long>(type: "bigint", nullable: true),
language_id = table.Column<long>(type: "bigint", nullable: true),
license_id = table.Column<long>(type: "bigint", nullable: true),
maintainer_id = table.Column<long>(type: "bigint", nullable: true),
software_id = table.Column<long>(type: "bigint", nullable: true),
syntax_id = table.Column<long>(type: "bigint", nullable: true),
tag_id = table.Column<long>(type: "bigint", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_changes", x => x.id);
table.ForeignKey(
name: "fk_changes_filter_lists_filter_list_id",
column: x => x.filter_list_id,
principalTable: "filter_lists",
principalColumn: "id");
table.ForeignKey(
name: "fk_changes_languages_language_id",
column: x => x.language_id,
principalTable: "languages",
principalColumn: "id");
table.ForeignKey(
name: "fk_changes_licenses_license_id",
column: x => x.license_id,
principalTable: "licenses",
principalColumn: "id");
table.ForeignKey(
name: "fk_changes_maintainers_maintainer_id",
column: x => x.maintainer_id,
principalTable: "maintainers",
principalColumn: "id");
table.ForeignKey(
name: "fk_changes_software_software_id",
column: x => x.software_id,
principalTable: "software",
principalColumn: "id");
table.ForeignKey(
name: "fk_changes_syntaxes_syntax_id",
column: x => x.syntax_id,
principalTable: "syntaxes",
principalColumn: "id");
table.ForeignKey(
name: "fk_changes_tags_tag_id",
column: x => x.tag_id,
principalTable: "tags",
principalColumn: "id");
});
migrationBuilder.CreateTable(
name: "dependents",
columns: table => new
{
dependency_filter_list_id = table.Column<long>(type: "bigint", nullable: false),
dependent_filter_list_id = table.Column<long>(type: "bigint", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_dependents", x => new { x.dependency_filter_list_id, x.dependent_filter_list_id });
table.ForeignKey(
name: "fk_dependents_filter_lists_dependency_filter_list_id",
column: x => x.dependency_filter_list_id,
principalTable: "filter_lists",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "fk_dependents_filter_lists_dependent_filter_list_id",
column: x => x.dependent_filter_list_id,
principalTable: "filter_lists",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "filter_list_languages",
columns: table => new
{
filter_list_id = table.Column<long>(type: "bigint", nullable: false),
language_id = table.Column<long>(type: "bigint", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_filter_list_languages", x => new { x.filter_list_id, x.language_id });
table.ForeignKey(
name: "fk_filter_list_languages_filter_lists_filter_list_id",
column: x => x.filter_list_id,
principalTable: "filter_lists",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "fk_filter_list_languages_languages_language_id",
column: x => x.language_id,
principalTable: "languages",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "filter_list_maintainers",
columns: table => new
{
filter_list_id = table.Column<long>(type: "bigint", nullable: false),
maintainer_id = table.Column<long>(type: "bigint", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_filter_list_maintainers", x => new { x.filter_list_id, x.maintainer_id });
table.ForeignKey(
name: "fk_filter_list_maintainers_filter_lists_filter_list_id",
column: x => x.filter_list_id,
principalTable: "filter_lists",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "fk_filter_list_maintainers_maintainers_maintainer_id",
column: x => x.maintainer_id,
principalTable: "maintainers",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "filter_list_syntaxes",
columns: table => new
{
filter_list_id = table.Column<long>(type: "bigint", nullable: false),
syntax_id = table.Column<long>(type: "bigint", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_filter_list_syntaxes", x => new { x.filter_list_id, x.syntax_id });
table.ForeignKey(
name: "fk_filter_list_syntaxes_filter_lists_filter_list_id",
column: x => x.filter_list_id,
principalTable: "filter_lists",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "fk_filter_list_syntaxes_syntaxes_syntax_id",
column: x => x.syntax_id,
principalTable: "syntaxes",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "filter_list_tags",
columns: table => new
{
filter_list_id = table.Column<long>(type: "bigint", nullable: false),
tag_id = table.Column<long>(type: "bigint", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_filter_list_tags", x => new { x.filter_list_id, x.tag_id });
table.ForeignKey(
name: "fk_filter_list_tags_filter_lists_filter_list_id",
column: x => x.filter_list_id,
principalTable: "filter_lists",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "fk_filter_list_tags_tags_tag_id",
column: x => x.tag_id,
principalTable: "tags",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "filter_list_view_urls",
columns: table => new
{
id = table.Column<long>(type: "bigint", nullable: false),
filter_list_id = table.Column<long>(type: "bigint", nullable: false),
segment_number = table.Column<short>(type: "smallint", nullable: false, defaultValue: (short)1),
primariness = table.Column<short>(type: "smallint", nullable: false, defaultValue: (short)1),
url = table.Column<string>(type: "text", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_filter_list_view_urls", x => new { x.filter_list_id, x.id });
table.ForeignKey(
name: "fk_filter_list_view_urls_filter_lists_filter_list_id",
column: x => x.filter_list_id,
principalTable: "filter_lists",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "forks",
columns: table => new
{
upstream_filter_list_id = table.Column<long>(type: "bigint", nullable: false),
fork_filter_list_id = table.Column<long>(type: "bigint", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_forks", x => new { x.upstream_filter_list_id, x.fork_filter_list_id });
table.ForeignKey(
name: "fk_forks_filter_lists_fork_filter_list_id",
column: x => x.fork_filter_list_id,
principalTable: "filter_lists",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "fk_forks_filter_lists_upstream_filter_list_id",
column: x => x.upstream_filter_list_id,
principalTable: "filter_lists",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "merges",
columns: table => new
{
included_in_filter_list_id = table.Column<long>(type: "bigint", nullable: false),
includes_filter_list_id = table.Column<long>(type: "bigint", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_merges", x => new { x.included_in_filter_list_id, x.includes_filter_list_id });
table.ForeignKey(
name: "fk_merges_filter_lists_included_in_filter_list_id",
column: x => x.included_in_filter_list_id,
principalTable: "filter_lists",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "fk_merges_filter_lists_includes_filter_list_id",
column: x => x.includes_filter_list_id,
principalTable: "filter_lists",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "ix_changes_filter_list_id",
table: "changes",
column: "filter_list_id");
migrationBuilder.CreateIndex(
name: "ix_changes_language_id",
table: "changes",
column: "language_id");
migrationBuilder.CreateIndex(
name: "ix_changes_license_id",
table: "changes",
column: "license_id");
migrationBuilder.CreateIndex(
name: "ix_changes_maintainer_id",
table: "changes",
column: "maintainer_id");
migrationBuilder.CreateIndex(
name: "ix_changes_software_id",
table: "changes",
column: "software_id");
migrationBuilder.CreateIndex(
name: "ix_changes_syntax_id",
table: "changes",
column: "syntax_id");
migrationBuilder.CreateIndex(
name: "ix_changes_tag_id",
table: "changes",
column: "tag_id");
migrationBuilder.CreateIndex(
name: "ix_dependents_dependent_filter_list_id",
table: "dependents",
column: "dependent_filter_list_id");
migrationBuilder.CreateIndex(
name: "ix_filter_list_languages_language_id",
table: "filter_list_languages",
column: "language_id");
migrationBuilder.CreateIndex(
name: "ix_filter_list_maintainers_maintainer_id",
table: "filter_list_maintainers",
column: "maintainer_id");
migrationBuilder.CreateIndex(
name: "ix_filter_list_syntaxes_syntax_id",
table: "filter_list_syntaxes",
column: "syntax_id");
migrationBuilder.CreateIndex(
name: "ix_filter_list_tags_tag_id",
table: "filter_list_tags",
column: "tag_id");
migrationBuilder.CreateIndex(
name: "ix_filter_list_view_urls_filter_list_id_segment_number_primari",
table: "filter_list_view_urls",
columns: new[] { "filter_list_id", "segment_number", "primariness" },
unique: true);
migrationBuilder.CreateIndex(
name: "ix_filter_lists_license_id",
table: "filter_lists",
column: "license_id");
migrationBuilder.CreateIndex(
name: "ix_filter_lists_name",
table: "filter_lists",
column: "name",
unique: true);
migrationBuilder.CreateIndex(
name: "ix_forks_fork_filter_list_id",
table: "forks",
column: "fork_filter_list_id");
migrationBuilder.CreateIndex(
name: "ix_languages_iso6391",
table: "languages",
column: "iso6391",
unique: true);
migrationBuilder.CreateIndex(
name: "ix_languages_name",
table: "languages",
column: "name",
unique: true);
migrationBuilder.CreateIndex(
name: "ix_licenses_name",
table: "licenses",
column: "name",
unique: true);
migrationBuilder.CreateIndex(
name: "ix_maintainers_name",
table: "maintainers",
column: "name",
unique: true);
migrationBuilder.CreateIndex(
name: "ix_merges_includes_filter_list_id",
table: "merges",
column: "includes_filter_list_id");
migrationBuilder.CreateIndex(
name: "ix_software_name",
table: "software",
column: "name",
unique: true);
migrationBuilder.CreateIndex(
name: "ix_software_syntaxes_syntax_id",
table: "software_syntaxes",
column: "syntax_id");
migrationBuilder.CreateIndex(
name: "ix_syntaxes_name",
table: "syntaxes",
column: "name",
unique: true);
migrationBuilder.CreateIndex(
name: "ix_tags_name",
table: "tags",
column: "name",
unique: true);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "changes");
migrationBuilder.DropTable(
name: "dependents");
migrationBuilder.DropTable(
name: "filter_list_languages");
migrationBuilder.DropTable(
name: "filter_list_maintainers");
migrationBuilder.DropTable(
name: "filter_list_syntaxes");
migrationBuilder.DropTable(
name: "filter_list_tags");
migrationBuilder.DropTable(
name: "filter_list_view_urls");
migrationBuilder.DropTable(
name: "forks");
migrationBuilder.DropTable(
name: "merges");
migrationBuilder.DropTable(
name: "software_syntaxes");
migrationBuilder.DropTable(
name: "languages");
migrationBuilder.DropTable(
name: "maintainers");
migrationBuilder.DropTable(
name: "tags");
migrationBuilder.DropTable(
name: "filter_lists");
migrationBuilder.DropTable(
name: "software");
migrationBuilder.DropTable(
name: "syntaxes");
migrationBuilder.DropTable(
name: "licenses");
migrationBuilder.DropSequence(
name: "EntityFrameworkHiLoSequence-FilterListViewUrl");
}
}
}

View file

@ -0,0 +1,939 @@
// <auto-generated />
using System;
using System.Text.Json;
using FilterLists.Directory.Domain.Aggregates;
using FilterLists.Directory.Infrastructure.Persistence.Queries.Context;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace FilterLists.Directory.Infrastructure.Migrations.Migrations
{
[DbContext(typeof(QueryDbContext))]
partial class QueryDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.5")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "aggregate_type", new[] { "filter_list", "language", "license", "maintainer", "software", "syntax", "tag" });
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.HasSequence("EntityFrameworkHiLoSequence-FilterListViewUrl")
.StartsAt(3000L)
.IncrementsBy(3);
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Change", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
b.Property<JsonDocument>("After")
.HasColumnType("jsonb")
.HasColumnName("after");
b.Property<AggregateType>("AggregateType")
.HasColumnType("aggregate_type")
.HasColumnName("aggregate_type");
b.Property<DateTime?>("ApprovedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("approved_at");
b.Property<JsonDocument>("Before")
.HasColumnType("jsonb")
.HasColumnName("before");
b.Property<long?>("FilterListId")
.HasColumnType("bigint")
.HasColumnName("filter_list_id");
b.Property<long?>("LanguageId")
.HasColumnType("bigint")
.HasColumnName("language_id");
b.Property<long?>("LicenseId")
.HasColumnType("bigint")
.HasColumnName("license_id");
b.Property<long?>("MaintainerId")
.HasColumnType("bigint")
.HasColumnName("maintainer_id");
b.Property<string>("Reason")
.HasColumnType("text")
.HasColumnName("reason");
b.Property<DateTime?>("RejectedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("rejected_at");
b.Property<string>("RejectedReason")
.HasColumnType("text")
.HasColumnName("rejected_reason");
b.Property<long?>("SoftwareId")
.HasColumnType("bigint")
.HasColumnName("software_id");
b.Property<DateTime>("SubmittedAt")
.ValueGeneratedOnAdd()
.HasColumnType("timestamp with time zone")
.HasColumnName("submitted_at")
.HasDefaultValueSql("CURRENT_TIMESTAMP");
b.Property<long?>("SyntaxId")
.HasColumnType("bigint")
.HasColumnName("syntax_id");
b.Property<long?>("TagId")
.HasColumnType("bigint")
.HasColumnName("tag_id");
b.HasKey("Id")
.HasName("pk_changes");
b.HasIndex("FilterListId")
.HasDatabaseName("ix_changes_filter_list_id");
b.HasIndex("LanguageId")
.HasDatabaseName("ix_changes_language_id");
b.HasIndex("LicenseId")
.HasDatabaseName("ix_changes_license_id");
b.HasIndex("MaintainerId")
.HasDatabaseName("ix_changes_maintainer_id");
b.HasIndex("SoftwareId")
.HasDatabaseName("ix_changes_software_id");
b.HasIndex("SyntaxId")
.HasDatabaseName("ix_changes_syntax_id");
b.HasIndex("TagId")
.HasDatabaseName("ix_changes_tag_id");
b.ToTable("changes", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Dependent", b =>
{
b.Property<long>("DependencyFilterListId")
.HasColumnType("bigint")
.HasColumnName("dependency_filter_list_id");
b.Property<long>("DependentFilterListId")
.HasColumnType("bigint")
.HasColumnName("dependent_filter_list_id");
b.HasKey("DependencyFilterListId", "DependentFilterListId")
.HasName("pk_dependents");
b.HasIndex("DependentFilterListId")
.HasDatabaseName("ix_dependents_dependent_filter_list_id");
b.ToTable("dependents", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
b.Property<string>("ChatUrl")
.HasColumnType("text")
.HasColumnName("chat_url");
b.Property<string>("Description")
.HasColumnType("text")
.HasColumnName("description");
b.Property<string>("DonateUrl")
.HasColumnType("text")
.HasColumnName("donate_url");
b.Property<string>("EmailAddress")
.HasColumnType("text")
.HasColumnName("email_address");
b.Property<string>("ForumUrl")
.HasColumnType("text")
.HasColumnName("forum_url");
b.Property<string>("HomeUrl")
.HasColumnType("text")
.HasColumnName("home_url");
b.Property<bool>("IsApproved")
.HasColumnType("boolean")
.HasColumnName("is_approved");
b.Property<string>("IssuesUrl")
.HasColumnType("text")
.HasColumnName("issues_url");
b.Property<long>("LicenseId")
.ValueGeneratedOnAdd()
.HasColumnType("bigint")
.HasDefaultValue(5L)
.HasColumnName("license_id");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.Property<string>("OnionUrl")
.HasColumnType("text")
.HasColumnName("onion_url");
b.Property<string>("PolicyUrl")
.HasColumnType("text")
.HasColumnName("policy_url");
b.Property<string>("SubmissionUrl")
.HasColumnType("text")
.HasColumnName("submission_url");
b.HasKey("Id")
.HasName("pk_filter_lists");
b.HasIndex("LicenseId")
.HasDatabaseName("ix_filter_lists_license_id");
b.HasIndex("Name")
.IsUnique()
.HasDatabaseName("ix_filter_lists_name");
b.ToTable("filter_lists", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListLanguage", b =>
{
b.Property<long>("FilterListId")
.HasColumnType("bigint")
.HasColumnName("filter_list_id");
b.Property<long>("LanguageId")
.HasColumnType("bigint")
.HasColumnName("language_id");
b.HasKey("FilterListId", "LanguageId")
.HasName("pk_filter_list_languages");
b.HasIndex("LanguageId")
.HasDatabaseName("ix_filter_list_languages_language_id");
b.ToTable("filter_list_languages", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListMaintainer", b =>
{
b.Property<long>("FilterListId")
.HasColumnType("bigint")
.HasColumnName("filter_list_id");
b.Property<long>("MaintainerId")
.HasColumnType("bigint")
.HasColumnName("maintainer_id");
b.HasKey("FilterListId", "MaintainerId")
.HasName("pk_filter_list_maintainers");
b.HasIndex("MaintainerId")
.HasDatabaseName("ix_filter_list_maintainers_maintainer_id");
b.ToTable("filter_list_maintainers", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListSyntax", b =>
{
b.Property<long>("FilterListId")
.HasColumnType("bigint")
.HasColumnName("filter_list_id");
b.Property<long>("SyntaxId")
.HasColumnType("bigint")
.HasColumnName("syntax_id");
b.HasKey("FilterListId", "SyntaxId")
.HasName("pk_filter_list_syntaxes");
b.HasIndex("SyntaxId")
.HasDatabaseName("ix_filter_list_syntaxes_syntax_id");
b.ToTable("filter_list_syntaxes", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListTag", b =>
{
b.Property<long>("FilterListId")
.HasColumnType("bigint")
.HasColumnName("filter_list_id");
b.Property<long>("TagId")
.HasColumnType("bigint")
.HasColumnName("tag_id");
b.HasKey("FilterListId", "TagId")
.HasName("pk_filter_list_tags");
b.HasIndex("TagId")
.HasDatabaseName("ix_filter_list_tags_tag_id");
b.ToTable("filter_list_tags", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Fork", b =>
{
b.Property<long>("UpstreamFilterListId")
.HasColumnType("bigint")
.HasColumnName("upstream_filter_list_id");
b.Property<long>("ForkFilterListId")
.HasColumnType("bigint")
.HasColumnName("fork_filter_list_id");
b.HasKey("UpstreamFilterListId", "ForkFilterListId")
.HasName("pk_forks");
b.HasIndex("ForkFilterListId")
.HasDatabaseName("ix_forks_fork_filter_list_id");
b.ToTable("forks", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Language", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
b.Property<bool>("IsApproved")
.HasColumnType("boolean")
.HasColumnName("is_approved");
b.Property<string>("Iso6391")
.IsRequired()
.HasMaxLength(2)
.HasColumnType("character(2)")
.HasColumnName("iso6391")
.IsFixedLength();
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.HasKey("Id")
.HasName("pk_languages");
b.HasIndex("Iso6391")
.IsUnique()
.HasDatabaseName("ix_languages_iso6391");
b.HasIndex("Name")
.IsUnique()
.HasDatabaseName("ix_languages_name");
b.ToTable("languages", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.License", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
b.Property<bool>("IsApproved")
.HasColumnType("boolean")
.HasColumnName("is_approved");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.Property<bool>("PermitsCommercialUse")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("permits_commercial_use");
b.Property<bool>("PermitsDistribution")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("permits_distribution");
b.Property<bool>("PermitsModification")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("permits_modification");
b.Property<string>("Url")
.HasColumnType("text")
.HasColumnName("url");
b.HasKey("Id")
.HasName("pk_licenses");
b.HasIndex("Name")
.IsUnique()
.HasDatabaseName("ix_licenses_name");
b.ToTable("licenses", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Maintainer", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
b.Property<string>("EmailAddress")
.HasColumnType("text")
.HasColumnName("email_address");
b.Property<bool>("IsApproved")
.HasColumnType("boolean")
.HasColumnName("is_approved");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.Property<string>("TwitterHandle")
.HasColumnType("text")
.HasColumnName("twitter_handle");
b.Property<string>("Url")
.HasColumnType("text")
.HasColumnName("url");
b.HasKey("Id")
.HasName("pk_maintainers");
b.HasIndex("Name")
.IsUnique()
.HasDatabaseName("ix_maintainers_name");
b.ToTable("maintainers", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Merge", b =>
{
b.Property<long>("IncludedInFilterListId")
.HasColumnType("bigint")
.HasColumnName("included_in_filter_list_id");
b.Property<long>("IncludesFilterListId")
.HasColumnType("bigint")
.HasColumnName("includes_filter_list_id");
b.HasKey("IncludedInFilterListId", "IncludesFilterListId")
.HasName("pk_merges");
b.HasIndex("IncludesFilterListId")
.HasDatabaseName("ix_merges_includes_filter_list_id");
b.ToTable("merges", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Software", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
b.Property<string>("Description")
.HasColumnType("text")
.HasColumnName("description");
b.Property<string>("DownloadUrl")
.HasColumnType("text")
.HasColumnName("download_url");
b.Property<string>("HomeUrl")
.HasColumnType("text")
.HasColumnName("home_url");
b.Property<bool>("IsApproved")
.HasColumnType("boolean")
.HasColumnName("is_approved");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.Property<bool>("SupportsAbpUrlScheme")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("supports_abp_url_scheme");
b.HasKey("Id")
.HasName("pk_software");
b.HasIndex("Name")
.IsUnique()
.HasDatabaseName("ix_software_name");
b.ToTable("software", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.SoftwareSyntax", b =>
{
b.Property<long>("SoftwareId")
.HasColumnType("bigint")
.HasColumnName("software_id");
b.Property<long>("SyntaxId")
.HasColumnType("bigint")
.HasColumnName("syntax_id");
b.HasKey("SoftwareId", "SyntaxId")
.HasName("pk_software_syntaxes");
b.HasIndex("SyntaxId")
.HasDatabaseName("ix_software_syntaxes_syntax_id");
b.ToTable("software_syntaxes", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Syntax", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
b.Property<string>("Description")
.HasColumnType("text")
.HasColumnName("description");
b.Property<bool>("IsApproved")
.HasColumnType("boolean")
.HasColumnName("is_approved");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.Property<string>("Url")
.HasColumnType("text")
.HasColumnName("url");
b.HasKey("Id")
.HasName("pk_syntaxes");
b.HasIndex("Name")
.IsUnique()
.HasDatabaseName("ix_syntaxes_name");
b.ToTable("syntaxes", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Tag", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
b.Property<string>("Description")
.HasColumnType("text")
.HasColumnName("description");
b.Property<bool>("IsApproved")
.HasColumnType("boolean")
.HasColumnName("is_approved");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.HasKey("Id")
.HasName("pk_tags");
b.HasIndex("Name")
.IsUnique()
.HasDatabaseName("ix_tags_name");
b.ToTable("tags", (string)null);
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Change", b =>
{
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", null)
.WithMany("Changes")
.HasForeignKey("FilterListId")
.HasConstraintName("fk_changes_filter_lists_filter_list_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Language", null)
.WithMany("Changes")
.HasForeignKey("LanguageId")
.HasConstraintName("fk_changes_languages_language_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.License", null)
.WithMany("Changes")
.HasForeignKey("LicenseId")
.HasConstraintName("fk_changes_licenses_license_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Maintainer", null)
.WithMany("Changes")
.HasForeignKey("MaintainerId")
.HasConstraintName("fk_changes_maintainers_maintainer_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Software", null)
.WithMany("Changes")
.HasForeignKey("SoftwareId")
.HasConstraintName("fk_changes_software_software_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Syntax", null)
.WithMany("Changes")
.HasForeignKey("SyntaxId")
.HasConstraintName("fk_changes_syntaxes_syntax_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Tag", null)
.WithMany("Changes")
.HasForeignKey("TagId")
.HasConstraintName("fk_changes_tags_tag_id");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Dependent", b =>
{
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "DependencyFilterList")
.WithMany("DependentFilterLists")
.HasForeignKey("DependencyFilterListId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_dependents_filter_lists_dependency_filter_list_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "DependentFilterList")
.WithMany("DependencyFilterLists")
.HasForeignKey("DependentFilterListId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_dependents_filter_lists_dependent_filter_list_id");
b.Navigation("DependencyFilterList");
b.Navigation("DependentFilterList");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", b =>
{
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.License", "License")
.WithMany("FilterLists")
.HasForeignKey("LicenseId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired()
.HasConstraintName("fk_filter_lists_licenses_license_id");
b.OwnsMany("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListViewUrl", "ViewUrls", b1 =>
{
b1.Property<long>("FilterListId")
.HasColumnType("bigint")
.HasColumnName("filter_list_id");
b1.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseHiLo(b1.Property<long>("Id"), "EntityFrameworkHiLoSequence-FilterListViewUrl");
b1.Property<short>("Primariness")
.ValueGeneratedOnAdd()
.HasColumnType("smallint")
.HasDefaultValue((short)1)
.HasColumnName("primariness");
b1.Property<short>("SegmentNumber")
.ValueGeneratedOnAdd()
.HasColumnType("smallint")
.HasDefaultValue((short)1)
.HasColumnName("segment_number");
b1.Property<string>("Url")
.IsRequired()
.HasColumnType("text")
.HasColumnName("url");
b1.HasKey("FilterListId", "Id")
.HasName("pk_filter_list_view_urls");
b1.HasIndex("FilterListId", "SegmentNumber", "Primariness")
.IsUnique()
.HasDatabaseName("ix_filter_list_view_urls_filter_list_id_segment_number_primari");
b1.ToTable("filter_list_view_urls", (string)null);
b1.WithOwner("FilterList")
.HasForeignKey("FilterListId")
.HasConstraintName("fk_filter_list_view_urls_filter_lists_filter_list_id");
b1.Navigation("FilterList");
});
b.Navigation("License");
b.Navigation("ViewUrls");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListLanguage", b =>
{
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "FilterList")
.WithMany("FilterListLanguages")
.HasForeignKey("FilterListId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_filter_list_languages_filter_lists_filter_list_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Language", "Language")
.WithMany("FilterListLanguages")
.HasForeignKey("LanguageId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_filter_list_languages_languages_language_id");
b.Navigation("FilterList");
b.Navigation("Language");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListMaintainer", b =>
{
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "FilterList")
.WithMany("FilterListMaintainers")
.HasForeignKey("FilterListId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_filter_list_maintainers_filter_lists_filter_list_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Maintainer", "Maintainer")
.WithMany("FilterListMaintainers")
.HasForeignKey("MaintainerId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_filter_list_maintainers_maintainers_maintainer_id");
b.Navigation("FilterList");
b.Navigation("Maintainer");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListSyntax", b =>
{
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "FilterList")
.WithMany("FilterListSyntaxes")
.HasForeignKey("FilterListId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_filter_list_syntaxes_filter_lists_filter_list_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Syntax", "Syntax")
.WithMany("FilterListSyntaxes")
.HasForeignKey("SyntaxId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_filter_list_syntaxes_syntaxes_syntax_id");
b.Navigation("FilterList");
b.Navigation("Syntax");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListTag", b =>
{
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "FilterList")
.WithMany("FilterListTags")
.HasForeignKey("FilterListId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_filter_list_tags_filter_lists_filter_list_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Tag", "Tag")
.WithMany("FilterListTags")
.HasForeignKey("TagId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_filter_list_tags_tags_tag_id");
b.Navigation("FilterList");
b.Navigation("Tag");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Fork", b =>
{
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "ForkFilterList")
.WithMany("UpstreamFilterLists")
.HasForeignKey("ForkFilterListId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_forks_filter_lists_fork_filter_list_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "UpstreamFilterList")
.WithMany("ForkFilterLists")
.HasForeignKey("UpstreamFilterListId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_forks_filter_lists_upstream_filter_list_id");
b.Navigation("ForkFilterList");
b.Navigation("UpstreamFilterList");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Merge", b =>
{
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "IncludedInFilterList")
.WithMany("IncludesFilterLists")
.HasForeignKey("IncludedInFilterListId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_merges_filter_lists_included_in_filter_list_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "IncludesFilterList")
.WithMany("IncludedInFilterLists")
.HasForeignKey("IncludesFilterListId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_merges_filter_lists_includes_filter_list_id");
b.Navigation("IncludedInFilterList");
b.Navigation("IncludesFilterList");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.SoftwareSyntax", b =>
{
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Software", "Software")
.WithMany("SoftwareSyntaxes")
.HasForeignKey("SoftwareId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_software_syntaxes_software_software_id");
b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Syntax", "Syntax")
.WithMany("SoftwareSyntaxes")
.HasForeignKey("SyntaxId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_software_syntaxes_syntaxes_syntax_id");
b.Navigation("Software");
b.Navigation("Syntax");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", b =>
{
b.Navigation("Changes");
b.Navigation("DependencyFilterLists");
b.Navigation("DependentFilterLists");
b.Navigation("FilterListLanguages");
b.Navigation("FilterListMaintainers");
b.Navigation("FilterListSyntaxes");
b.Navigation("FilterListTags");
b.Navigation("ForkFilterLists");
b.Navigation("IncludedInFilterLists");
b.Navigation("IncludesFilterLists");
b.Navigation("UpstreamFilterLists");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Language", b =>
{
b.Navigation("Changes");
b.Navigation("FilterListLanguages");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.License", b =>
{
b.Navigation("Changes");
b.Navigation("FilterLists");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Maintainer", b =>
{
b.Navigation("Changes");
b.Navigation("FilterListMaintainers");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Software", b =>
{
b.Navigation("Changes");
b.Navigation("SoftwareSyntaxes");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Syntax", b =>
{
b.Navigation("Changes");
b.Navigation("FilterListSyntaxes");
b.Navigation("SoftwareSyntaxes");
});
modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Tag", b =>
{
b.Navigation("Changes");
b.Navigation("FilterListTags");
});
#pragma warning restore 612, 618
}
}
}