diff --git a/directory/src/FilterLists.Directory.Api/FilterLists.Directory.Api.csproj b/directory/src/FilterLists.Directory.Api/FilterLists.Directory.Api.csproj index 6fe06bd47..7436cfce6 100644 --- a/directory/src/FilterLists.Directory.Api/FilterLists.Directory.Api.csproj +++ b/directory/src/FilterLists.Directory.Api/FilterLists.Directory.Api.csproj @@ -41,6 +41,7 @@ + diff --git a/directory/src/FilterLists.Directory.Infrastructure.Migrations/FilterLists.Directory.Infrastructure.Migrations.csproj b/directory/src/FilterLists.Directory.Infrastructure.Migrations/FilterLists.Directory.Infrastructure.Migrations.csproj index 43fea1cd3..80d1fff63 100644 --- a/directory/src/FilterLists.Directory.Infrastructure.Migrations/FilterLists.Directory.Infrastructure.Migrations.csproj +++ b/directory/src/FilterLists.Directory.Infrastructure.Migrations/FilterLists.Directory.Infrastructure.Migrations.csproj @@ -27,4 +27,8 @@ + + + + \ No newline at end of file diff --git a/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200824012903_Initial.Designer.cs b/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200824012903_Initial.Designer.cs new file mode 100644 index 000000000..58a544287 --- /dev/null +++ b/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200824012903_Initial.Designer.cs @@ -0,0 +1,513 @@ +// + +using FilterLists.Directory.Infrastructure.Persistence.Queries.Context; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +namespace FilterLists.Directory.Infrastructure.Migrations.Migrations +{ + [DbContext(typeof(QueryDbContext))] + [Migration("20200824012903_Initial")] + partial class Initial + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn) + .HasAnnotation("ProductVersion", "3.1.7") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Dependent", b => + { + b.Property("DependencyFilterListId") + .HasColumnType("integer"); + + b.Property("DependentFilterListId") + .HasColumnType("integer"); + + b.HasKey("DependencyFilterListId", "DependentFilterListId"); + + b.HasIndex("DependentFilterListId"); + + b.ToTable("Dependents"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("ChatUrl") + .HasColumnType("text"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("DonateUrl") + .HasColumnType("text"); + + b.Property("EmailAddress") + .HasColumnType("text"); + + b.Property("ForumUrl") + .HasColumnType("text"); + + b.Property("HomeUrl") + .HasColumnType("text"); + + b.Property("IssuesUrl") + .HasColumnType("text"); + + b.Property("LicenseId") + .HasColumnType("integer"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("OnionUrl") + .HasColumnType("text"); + + b.Property("PolicyUrl") + .HasColumnType("text"); + + b.Property("SubmissionUrl") + .HasColumnType("text"); + + b.Property("ViewUrl") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("LicenseId"); + + b.ToTable("FilterLists"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListLanguage", b => + { + b.Property("FilterListId") + .HasColumnType("integer"); + + b.Property("LanguageIso6391") + .HasColumnType("text"); + + b.HasKey("FilterListId", "LanguageIso6391"); + + b.HasIndex("LanguageIso6391"); + + b.ToTable("FilterListLanguages"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListMaintainer", b => + { + b.Property("FilterListId") + .HasColumnType("integer"); + + b.Property("MaintainerId") + .HasColumnType("integer"); + + b.HasKey("FilterListId", "MaintainerId"); + + b.HasIndex("MaintainerId"); + + b.ToTable("FilterListMaintainers"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListSyntax", b => + { + b.Property("FilterListId") + .HasColumnType("integer"); + + b.Property("SyntaxId") + .HasColumnType("integer"); + + b.HasKey("FilterListId", "SyntaxId"); + + b.HasIndex("SyntaxId"); + + b.ToTable("FilterListSyntaxes"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListTag", b => + { + b.Property("FilterListId") + .HasColumnType("integer"); + + b.Property("TagId") + .HasColumnType("integer"); + + b.HasKey("FilterListId", "TagId"); + + b.HasIndex("TagId"); + + b.ToTable("FilterListTags"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Fork", b => + { + b.Property("UpstreamFilterListId") + .HasColumnType("integer"); + + b.Property("ForkFilterListId") + .HasColumnType("integer"); + + b.HasKey("UpstreamFilterListId", "ForkFilterListId"); + + b.HasIndex("ForkFilterListId"); + + b.ToTable("Forks"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Language", b => + { + b.Property("Iso6391") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Iso6391"); + + b.ToTable("Languages"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.License", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("GitHubKey") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Url") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Licenses"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Maintainer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("EmailAddress") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("TwitterHandle") + .HasColumnType("text"); + + b.Property("Url") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Maintainers"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Merge", b => + { + b.Property("IncludedInFilterListId") + .HasColumnType("integer"); + + b.Property("IncludesFilterListId") + .HasColumnType("integer"); + + b.HasKey("IncludedInFilterListId", "IncludesFilterListId"); + + b.HasIndex("IncludesFilterListId"); + + b.ToTable("Merges"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Software", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("DownloadUrl") + .HasColumnType("text"); + + b.Property("HomeUrl") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("SupportsAbpUrlScheme") + .HasColumnType("boolean"); + + b.HasKey("Id"); + + b.ToTable("Software"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.SoftwareSyntax", b => + { + b.Property("SoftwareId") + .HasColumnType("integer"); + + b.Property("SyntaxId") + .HasColumnType("integer"); + + b.HasKey("SoftwareId", "SyntaxId"); + + b.HasIndex("SyntaxId"); + + b.ToTable("SoftwareSyntaxes"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Syntax", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Url") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Syntaxes"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Tag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Tags"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.ViewUrlMirror", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("FilterListId") + .HasColumnType("integer"); + + b.Property("Url") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("FilterListId"); + + b.ToTable("ViewUrlMirrors"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.ViewUrlPartial", b => + { + b.Property("FilterListId") + .HasColumnType("integer"); + + b.Property("Position") + .HasColumnType("integer"); + + b.Property("Url") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("FilterListId", "Position"); + + b.ToTable("ViewUrlPartials"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Dependent", b => + { + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "DependencyFilterList") + .WithMany("DependencyFilterLists") + .HasForeignKey("DependencyFilterListId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "DependentFilterList") + .WithMany("DependentFilterLists") + .HasForeignKey("DependentFilterListId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", b => + { + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.License", "License") + .WithMany("FilterLists") + .HasForeignKey("LicenseId"); + }); + + 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(); + + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Language", "Language") + .WithMany("FilterListLanguages") + .HasForeignKey("LanguageIso6391") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + 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(); + + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Maintainer", "Maintainer") + .WithMany("FilterListMaintainers") + .HasForeignKey("MaintainerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + 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(); + + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Syntax", "Syntax") + .WithMany("FilterListSyntaxes") + .HasForeignKey("SyntaxId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + 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(); + + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Tag", "Tag") + .WithMany("FilterListTags") + .HasForeignKey("TagId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Fork", b => + { + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "ForkFilterList") + .WithMany("ForkFilterLists") + .HasForeignKey("ForkFilterListId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "UpstreamFilterList") + .WithMany("UpstreamFilterLists") + .HasForeignKey("UpstreamFilterListId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Merge", b => + { + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "IncludedInFilterList") + .WithMany("IncludedInFilterLists") + .HasForeignKey("IncludedInFilterListId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "IncludesFilterList") + .WithMany("IncludesFilterLists") + .HasForeignKey("IncludesFilterListId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + 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(); + + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Syntax", "Syntax") + .WithMany("SoftwareSyntaxes") + .HasForeignKey("SyntaxId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.ViewUrlMirror", b => + { + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "FilterList") + .WithMany("ViewUrlMirrors") + .HasForeignKey("FilterListId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.ViewUrlPartial", b => + { + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "FilterList") + .WithMany("ViewUrlPartials") + .HasForeignKey("FilterListId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200824012903_Initial.cs b/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200824012903_Initial.cs new file mode 100644 index 000000000..2bc25e483 --- /dev/null +++ b/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200824012903_Initial.cs @@ -0,0 +1,466 @@ +using Microsoft.EntityFrameworkCore.Migrations; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +namespace FilterLists.Directory.Infrastructure.Migrations.Migrations +{ + public partial class Initial : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Languages", + columns: table => new + { + Iso6391 = table.Column(nullable: false), + Name = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Languages", x => x.Iso6391); + }); + + migrationBuilder.CreateTable( + name: "Licenses", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + Name = table.Column(nullable: false), + GitHubKey = table.Column(nullable: true), + Url = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Licenses", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Maintainers", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + Name = table.Column(nullable: false), + Url = table.Column(nullable: true), + EmailAddress = table.Column(nullable: true), + TwitterHandle = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Maintainers", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Software", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + Name = table.Column(nullable: false), + Description = table.Column(nullable: true), + HomeUrl = table.Column(nullable: true), + DownloadUrl = table.Column(nullable: true), + SupportsAbpUrlScheme = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Software", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Syntaxes", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + Name = table.Column(nullable: false), + Description = table.Column(nullable: true), + Url = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Syntaxes", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Tags", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + Name = table.Column(nullable: false), + Description = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Tags", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "FilterLists", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + Name = table.Column(nullable: false), + Description = table.Column(nullable: true), + LicenseId = table.Column(nullable: true), + ViewUrl = table.Column(nullable: false), + HomeUrl = table.Column(nullable: true), + OnionUrl = table.Column(nullable: true), + PolicyUrl = table.Column(nullable: true), + SubmissionUrl = table.Column(nullable: true), + IssuesUrl = table.Column(nullable: true), + ForumUrl = table.Column(nullable: true), + ChatUrl = table.Column(nullable: true), + EmailAddress = table.Column(nullable: true), + DonateUrl = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_FilterLists", x => x.Id); + table.ForeignKey( + name: "FK_FilterLists_Licenses_LicenseId", + column: x => x.LicenseId, + principalTable: "Licenses", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "SoftwareSyntaxes", + columns: table => new + { + SoftwareId = table.Column(nullable: false), + SyntaxId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_SoftwareSyntaxes", x => new { x.SoftwareId, x.SyntaxId }); + table.ForeignKey( + name: "FK_SoftwareSyntaxes_Software_SoftwareId", + column: x => x.SoftwareId, + principalTable: "Software", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_SoftwareSyntaxes_Syntaxes_SyntaxId", + column: x => x.SyntaxId, + principalTable: "Syntaxes", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Dependents", + columns: table => new + { + DependencyFilterListId = table.Column(nullable: false), + DependentFilterListId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Dependents", x => new { x.DependencyFilterListId, x.DependentFilterListId }); + table.ForeignKey( + name: "FK_Dependents_FilterLists_DependencyFilterListId", + column: x => x.DependencyFilterListId, + principalTable: "FilterLists", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Dependents_FilterLists_DependentFilterListId", + column: x => x.DependentFilterListId, + principalTable: "FilterLists", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "FilterListLanguages", + columns: table => new + { + FilterListId = table.Column(nullable: false), + LanguageIso6391 = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_FilterListLanguages", x => new { x.FilterListId, x.LanguageIso6391 }); + table.ForeignKey( + name: "FK_FilterListLanguages_FilterLists_FilterListId", + column: x => x.FilterListId, + principalTable: "FilterLists", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_FilterListLanguages_Languages_LanguageIso6391", + column: x => x.LanguageIso6391, + principalTable: "Languages", + principalColumn: "Iso6391", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "FilterListMaintainers", + columns: table => new + { + FilterListId = table.Column(nullable: false), + MaintainerId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_FilterListMaintainers", x => new { x.FilterListId, x.MaintainerId }); + table.ForeignKey( + name: "FK_FilterListMaintainers_FilterLists_FilterListId", + column: x => x.FilterListId, + principalTable: "FilterLists", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_FilterListMaintainers_Maintainers_MaintainerId", + column: x => x.MaintainerId, + principalTable: "Maintainers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "FilterListSyntaxes", + columns: table => new + { + FilterListId = table.Column(nullable: false), + SyntaxId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_FilterListSyntaxes", x => new { x.FilterListId, x.SyntaxId }); + table.ForeignKey( + name: "FK_FilterListSyntaxes_FilterLists_FilterListId", + column: x => x.FilterListId, + principalTable: "FilterLists", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_FilterListSyntaxes_Syntaxes_SyntaxId", + column: x => x.SyntaxId, + principalTable: "Syntaxes", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "FilterListTags", + columns: table => new + { + FilterListId = table.Column(nullable: false), + TagId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_FilterListTags", x => new { x.FilterListId, x.TagId }); + table.ForeignKey( + name: "FK_FilterListTags_FilterLists_FilterListId", + column: x => x.FilterListId, + principalTable: "FilterLists", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_FilterListTags_Tags_TagId", + column: x => x.TagId, + principalTable: "Tags", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Forks", + columns: table => new + { + UpstreamFilterListId = table.Column(nullable: false), + ForkFilterListId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Forks", x => new { x.UpstreamFilterListId, x.ForkFilterListId }); + table.ForeignKey( + name: "FK_Forks_FilterLists_ForkFilterListId", + column: x => x.ForkFilterListId, + principalTable: "FilterLists", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Forks_FilterLists_UpstreamFilterListId", + column: x => x.UpstreamFilterListId, + principalTable: "FilterLists", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Merges", + columns: table => new + { + IncludedInFilterListId = table.Column(nullable: false), + IncludesFilterListId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Merges", x => new { x.IncludedInFilterListId, x.IncludesFilterListId }); + table.ForeignKey( + name: "FK_Merges_FilterLists_IncludedInFilterListId", + column: x => x.IncludedInFilterListId, + principalTable: "FilterLists", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Merges_FilterLists_IncludesFilterListId", + column: x => x.IncludesFilterListId, + principalTable: "FilterLists", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "ViewUrlMirrors", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + FilterListId = table.Column(nullable: false), + Url = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ViewUrlMirrors", x => x.Id); + table.ForeignKey( + name: "FK_ViewUrlMirrors_FilterLists_FilterListId", + column: x => x.FilterListId, + principalTable: "FilterLists", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "ViewUrlPartials", + columns: table => new + { + Position = table.Column(nullable: false), + FilterListId = table.Column(nullable: false), + Url = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ViewUrlPartials", x => new { x.FilterListId, x.Position }); + table.ForeignKey( + name: "FK_ViewUrlPartials_FilterLists_FilterListId", + column: x => x.FilterListId, + principalTable: "FilterLists", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_Dependents_DependentFilterListId", + table: "Dependents", + column: "DependentFilterListId"); + + migrationBuilder.CreateIndex( + name: "IX_FilterListLanguages_LanguageIso6391", + table: "FilterListLanguages", + column: "LanguageIso6391"); + + migrationBuilder.CreateIndex( + name: "IX_FilterListMaintainers_MaintainerId", + table: "FilterListMaintainers", + column: "MaintainerId"); + + migrationBuilder.CreateIndex( + name: "IX_FilterLists_LicenseId", + table: "FilterLists", + column: "LicenseId"); + + migrationBuilder.CreateIndex( + name: "IX_FilterListSyntaxes_SyntaxId", + table: "FilterListSyntaxes", + column: "SyntaxId"); + + migrationBuilder.CreateIndex( + name: "IX_FilterListTags_TagId", + table: "FilterListTags", + column: "TagId"); + + migrationBuilder.CreateIndex( + name: "IX_Forks_ForkFilterListId", + table: "Forks", + column: "ForkFilterListId"); + + migrationBuilder.CreateIndex( + name: "IX_Merges_IncludesFilterListId", + table: "Merges", + column: "IncludesFilterListId"); + + migrationBuilder.CreateIndex( + name: "IX_SoftwareSyntaxes_SyntaxId", + table: "SoftwareSyntaxes", + column: "SyntaxId"); + + migrationBuilder.CreateIndex( + name: "IX_ViewUrlMirrors_FilterListId", + table: "ViewUrlMirrors", + column: "FilterListId"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Dependents"); + + migrationBuilder.DropTable( + name: "FilterListLanguages"); + + migrationBuilder.DropTable( + name: "FilterListMaintainers"); + + migrationBuilder.DropTable( + name: "FilterListSyntaxes"); + + migrationBuilder.DropTable( + name: "FilterListTags"); + + migrationBuilder.DropTable( + name: "Forks"); + + migrationBuilder.DropTable( + name: "Merges"); + + migrationBuilder.DropTable( + name: "SoftwareSyntaxes"); + + migrationBuilder.DropTable( + name: "ViewUrlMirrors"); + + migrationBuilder.DropTable( + name: "ViewUrlPartials"); + + migrationBuilder.DropTable( + name: "Languages"); + + migrationBuilder.DropTable( + name: "Maintainers"); + + migrationBuilder.DropTable( + name: "Tags"); + + migrationBuilder.DropTable( + name: "Software"); + + migrationBuilder.DropTable( + name: "Syntaxes"); + + migrationBuilder.DropTable( + name: "FilterLists"); + + migrationBuilder.DropTable( + name: "Licenses"); + } + } +} diff --git a/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/QueryDbContextModelSnapshot.cs b/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/QueryDbContextModelSnapshot.cs new file mode 100644 index 000000000..60f96ef33 --- /dev/null +++ b/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/QueryDbContextModelSnapshot.cs @@ -0,0 +1,511 @@ +// + +using FilterLists.Directory.Infrastructure.Persistence.Queries.Context; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +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("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn) + .HasAnnotation("ProductVersion", "3.1.7") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Dependent", b => + { + b.Property("DependencyFilterListId") + .HasColumnType("integer"); + + b.Property("DependentFilterListId") + .HasColumnType("integer"); + + b.HasKey("DependencyFilterListId", "DependentFilterListId"); + + b.HasIndex("DependentFilterListId"); + + b.ToTable("Dependents"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("ChatUrl") + .HasColumnType("text"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("DonateUrl") + .HasColumnType("text"); + + b.Property("EmailAddress") + .HasColumnType("text"); + + b.Property("ForumUrl") + .HasColumnType("text"); + + b.Property("HomeUrl") + .HasColumnType("text"); + + b.Property("IssuesUrl") + .HasColumnType("text"); + + b.Property("LicenseId") + .HasColumnType("integer"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("OnionUrl") + .HasColumnType("text"); + + b.Property("PolicyUrl") + .HasColumnType("text"); + + b.Property("SubmissionUrl") + .HasColumnType("text"); + + b.Property("ViewUrl") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("LicenseId"); + + b.ToTable("FilterLists"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListLanguage", b => + { + b.Property("FilterListId") + .HasColumnType("integer"); + + b.Property("LanguageIso6391") + .HasColumnType("text"); + + b.HasKey("FilterListId", "LanguageIso6391"); + + b.HasIndex("LanguageIso6391"); + + b.ToTable("FilterListLanguages"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListMaintainer", b => + { + b.Property("FilterListId") + .HasColumnType("integer"); + + b.Property("MaintainerId") + .HasColumnType("integer"); + + b.HasKey("FilterListId", "MaintainerId"); + + b.HasIndex("MaintainerId"); + + b.ToTable("FilterListMaintainers"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListSyntax", b => + { + b.Property("FilterListId") + .HasColumnType("integer"); + + b.Property("SyntaxId") + .HasColumnType("integer"); + + b.HasKey("FilterListId", "SyntaxId"); + + b.HasIndex("SyntaxId"); + + b.ToTable("FilterListSyntaxes"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListTag", b => + { + b.Property("FilterListId") + .HasColumnType("integer"); + + b.Property("TagId") + .HasColumnType("integer"); + + b.HasKey("FilterListId", "TagId"); + + b.HasIndex("TagId"); + + b.ToTable("FilterListTags"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Fork", b => + { + b.Property("UpstreamFilterListId") + .HasColumnType("integer"); + + b.Property("ForkFilterListId") + .HasColumnType("integer"); + + b.HasKey("UpstreamFilterListId", "ForkFilterListId"); + + b.HasIndex("ForkFilterListId"); + + b.ToTable("Forks"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Language", b => + { + b.Property("Iso6391") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Iso6391"); + + b.ToTable("Languages"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.License", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("GitHubKey") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Url") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Licenses"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Maintainer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("EmailAddress") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("TwitterHandle") + .HasColumnType("text"); + + b.Property("Url") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Maintainers"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Merge", b => + { + b.Property("IncludedInFilterListId") + .HasColumnType("integer"); + + b.Property("IncludesFilterListId") + .HasColumnType("integer"); + + b.HasKey("IncludedInFilterListId", "IncludesFilterListId"); + + b.HasIndex("IncludesFilterListId"); + + b.ToTable("Merges"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Software", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("DownloadUrl") + .HasColumnType("text"); + + b.Property("HomeUrl") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("SupportsAbpUrlScheme") + .HasColumnType("boolean"); + + b.HasKey("Id"); + + b.ToTable("Software"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.SoftwareSyntax", b => + { + b.Property("SoftwareId") + .HasColumnType("integer"); + + b.Property("SyntaxId") + .HasColumnType("integer"); + + b.HasKey("SoftwareId", "SyntaxId"); + + b.HasIndex("SyntaxId"); + + b.ToTable("SoftwareSyntaxes"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Syntax", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Url") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Syntaxes"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Tag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Tags"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.ViewUrlMirror", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("FilterListId") + .HasColumnType("integer"); + + b.Property("Url") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("FilterListId"); + + b.ToTable("ViewUrlMirrors"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.ViewUrlPartial", b => + { + b.Property("FilterListId") + .HasColumnType("integer"); + + b.Property("Position") + .HasColumnType("integer"); + + b.Property("Url") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("FilterListId", "Position"); + + b.ToTable("ViewUrlPartials"); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Dependent", b => + { + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "DependencyFilterList") + .WithMany("DependencyFilterLists") + .HasForeignKey("DependencyFilterListId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "DependentFilterList") + .WithMany("DependentFilterLists") + .HasForeignKey("DependentFilterListId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", b => + { + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.License", "License") + .WithMany("FilterLists") + .HasForeignKey("LicenseId"); + }); + + 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(); + + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Language", "Language") + .WithMany("FilterListLanguages") + .HasForeignKey("LanguageIso6391") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + 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(); + + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Maintainer", "Maintainer") + .WithMany("FilterListMaintainers") + .HasForeignKey("MaintainerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + 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(); + + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Syntax", "Syntax") + .WithMany("FilterListSyntaxes") + .HasForeignKey("SyntaxId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + 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(); + + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Tag", "Tag") + .WithMany("FilterListTags") + .HasForeignKey("TagId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Fork", b => + { + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "ForkFilterList") + .WithMany("ForkFilterLists") + .HasForeignKey("ForkFilterListId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "UpstreamFilterList") + .WithMany("UpstreamFilterLists") + .HasForeignKey("UpstreamFilterListId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Merge", b => + { + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "IncludedInFilterList") + .WithMany("IncludedInFilterLists") + .HasForeignKey("IncludedInFilterListId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "IncludesFilterList") + .WithMany("IncludesFilterLists") + .HasForeignKey("IncludesFilterListId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + 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(); + + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Syntax", "Syntax") + .WithMany("SoftwareSyntaxes") + .HasForeignKey("SyntaxId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.ViewUrlMirror", b => + { + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "FilterList") + .WithMany("ViewUrlMirrors") + .HasForeignKey("FilterListId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.ViewUrlPartial", b => + { + b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "FilterList") + .WithMany("ViewUrlPartials") + .HasForeignKey("FilterListId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Context/QueryDbContext.cs b/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Context/QueryDbContext.cs index 15812b25b..859d3f9a4 100644 --- a/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Context/QueryDbContext.cs +++ b/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Context/QueryDbContext.cs @@ -6,7 +6,7 @@ namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Context { - internal class QueryDbContext : DbContext + public class QueryDbContext : DbContext { public QueryDbContext(DbContextOptions options) : base(options) { diff --git a/directory/src/FilterLists.Directory.Infrastructure/ServiceRegistrationExtension.cs b/directory/src/FilterLists.Directory.Infrastructure/ServiceRegistrationExtension.cs index 2712980de..661fe24a3 100644 --- a/directory/src/FilterLists.Directory.Infrastructure/ServiceRegistrationExtension.cs +++ b/directory/src/FilterLists.Directory.Infrastructure/ServiceRegistrationExtension.cs @@ -10,7 +10,8 @@ public static class ServiceRegistrationExtension public static void AddInfrastructureServices(this IServiceCollection services, IConfiguration configuration) { services.AddDbContextPool(o => - o.UseNpgsql(configuration.GetConnectionString("DirectoryConnection"))); + o.UseNpgsql(configuration.GetConnectionString("DirectoryConnection"), + po => po.MigrationsAssembly("FilterLists.Directory.Infrastructure.Migrations"))); services.AddScoped(); } }