From f7d6e3aff1124db1a07d4ac5fc673b0c4618cabd Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Sun, 28 Jan 2018 14:40:33 -0600 Subject: [PATCH] extract base entity types --- ...8204000_ExtractBaseEntityTypes.Designer.cs | 455 ++++++++++++++++++ .../20180128204000_ExtractBaseEntityTypes.cs | 25 + .../FilterListsDbContextModelSnapshot.cs | 4 + src/FilterLists.Data/Entities/BaseEntity.cs | 11 + src/FilterLists.Data/Entities/FilterList.cs | 6 +- src/FilterLists.Data/Entities/Language.cs | 9 +- src/FilterLists.Data/Entities/License.cs | 9 +- src/FilterLists.Data/Entities/Maintainer.cs | 9 +- src/FilterLists.Data/Entities/Rule.cs | 8 +- src/FilterLists.Data/Entities/Software.cs | 9 +- src/FilterLists.Data/Entities/Syntax.cs | 9 +- .../BaseEntityTypeConfiguration.cs | 21 + .../FilterListTypeConfiguration.cs | 15 +- ...se.cs => BaseJunctionTypeConfiguration.cs} | 2 +- .../FilterListLanguageTypeConfiguration.cs | 2 +- .../FilterListMaintainerTypeConfiguration.cs | 2 +- .../FilterListRuleTypeConfiguration.cs | 2 +- .../Junctions/ForkTypeConfiguration.cs | 2 +- .../Junctions/MergeTypeConfiguration.cs | 2 +- .../SoftwareSyntaxTypeConfiguration.cs | 2 +- .../LanguageTypeConfiguration.cs | 15 +- .../LicenseTypeConfiguration.cs | 15 +- .../MaintainerTypeConfiguration.cs | 15 +- .../RuleTypeConfiguration.cs | 9 +- .../SoftwareTypeConfiguration.cs | 15 +- .../SyntaxTypeConfiguration.cs | 15 +- 26 files changed, 564 insertions(+), 124 deletions(-) create mode 100644 src/FilterLists.Api/Migrations/20180128204000_ExtractBaseEntityTypes.Designer.cs create mode 100644 src/FilterLists.Api/Migrations/20180128204000_ExtractBaseEntityTypes.cs create mode 100644 src/FilterLists.Data/Entities/BaseEntity.cs create mode 100644 src/FilterLists.Data/EntityTypeConfigurations/BaseEntityTypeConfiguration.cs rename src/FilterLists.Data/EntityTypeConfigurations/Junctions/{BaseJunctionTypeConfigurationBase.cs => BaseJunctionTypeConfiguration.cs} (89%) diff --git a/src/FilterLists.Api/Migrations/20180128204000_ExtractBaseEntityTypes.Designer.cs b/src/FilterLists.Api/Migrations/20180128204000_ExtractBaseEntityTypes.Designer.cs new file mode 100644 index 000000000..8a99a057f --- /dev/null +++ b/src/FilterLists.Api/Migrations/20180128204000_ExtractBaseEntityTypes.Designer.cs @@ -0,0 +1,455 @@ +// +using FilterLists.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage; +using Microsoft.EntityFrameworkCore.Storage.Internal; +using System; + +namespace FilterLists.Api.Migrations +{ + [DbContext(typeof(FilterListsDbContext))] + [Migration("20180128204000_ExtractBaseEntityTypes")] + partial class ExtractBaseEntityTypes + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn) + .HasAnnotation("ProductVersion", "2.0.1-rtm-125"); + + modelBuilder.Entity("FilterLists.Data.Entities.FilterList", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("SMALLINT UNSIGNED"); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.Property("Description") + .HasColumnType("TEXT"); + + b.Property("DescriptionSourceUrl") + .HasColumnType("TEXT"); + + b.Property("DiscontinuedDate"); + + b.Property("DonateUrl") + .HasColumnType("TEXT"); + + b.Property("EmailAddress") + .HasColumnType("NVARCHAR(126)"); + + b.Property("ForumUrl") + .HasColumnType("TEXT"); + + b.Property("HomeUrl") + .HasColumnType("TEXT"); + + b.Property("IssuesUrl") + .HasColumnType("TEXT"); + + b.Property("LicenseId"); + + b.Property("ModifiedDateUtc") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("TIMESTAMP"); + + b.Property("Name") + .HasColumnType("NVARCHAR(126) NOT NULL"); + + b.Property("ScrapedDateUtc"); + + b.Property("SubmissionUrl") + .HasColumnType("TEXT"); + + b.Property("SyntaxId"); + + b.Property("UpdatedDateUtc"); + + b.Property("ViewUrl") + .HasColumnType("TEXT NOT NULL"); + + b.HasKey("Id"); + + b.HasIndex("LicenseId"); + + b.HasIndex("SyntaxId"); + + b.ToTable("filterlists"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.Junctions.FilterListLanguage", b => + { + b.Property("FilterListId"); + + b.Property("LanguageId"); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.HasKey("FilterListId", "LanguageId"); + + b.HasIndex("LanguageId"); + + b.ToTable("filterlists_languages"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.Junctions.FilterListMaintainer", b => + { + b.Property("FilterListId"); + + b.Property("MaintainerId"); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.HasKey("FilterListId", "MaintainerId"); + + b.HasIndex("MaintainerId"); + + b.ToTable("filterlists_maintainers"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.Junctions.FilterListRule", b => + { + b.Property("FilterListId"); + + b.Property("RuleId"); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.HasKey("FilterListId", "RuleId"); + + b.HasIndex("RuleId"); + + b.ToTable("filterlists_rules"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.Junctions.Fork", b => + { + b.Property("ForkFilterListId"); + + b.Property("UpstreamFilterListId"); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.HasKey("ForkFilterListId", "UpstreamFilterListId"); + + b.HasIndex("UpstreamFilterListId"); + + b.ToTable("forks"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.Junctions.Merge", b => + { + b.Property("MergeFilterListId"); + + b.Property("UpstreamFilterListId"); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.HasKey("MergeFilterListId", "UpstreamFilterListId"); + + b.HasIndex("UpstreamFilterListId"); + + b.ToTable("merges"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.Junctions.SoftwareSyntax", b => + { + b.Property("SoftwareId"); + + b.Property("SyntaxId"); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.HasKey("SoftwareId", "SyntaxId"); + + b.HasIndex("SyntaxId"); + + b.ToTable("software_syntaxes"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.Language", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("SMALLINT UNSIGNED"); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.Property("Iso6391") + .HasColumnType("NVARCHAR(2)"); + + b.Property("Iso6392") + .HasColumnType("NVARCHAR(3)"); + + b.Property("Iso6392B") + .HasColumnType("NVARCHAR(3)"); + + b.Property("Iso6392T") + .HasColumnType("NVARCHAR(3)"); + + b.Property("Iso6393") + .HasColumnType("NVARCHAR(3)"); + + b.Property("LocalName") + .HasColumnType("NVARCHAR(126)"); + + b.Property("ModifiedDateUtc") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("TIMESTAMP"); + + b.Property("Name") + .HasColumnType("NVARCHAR(126)"); + + b.HasKey("Id"); + + b.ToTable("languages"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.License", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("SMALLINT UNSIGNED"); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.Property("DescriptionUrl") + .HasColumnType("TEXT"); + + b.Property("ModifiedDateUtc") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("TIMESTAMP"); + + b.Property("Name") + .HasColumnType("NVARCHAR(126) NOT NULL"); + + b.Property("PermissiveAdaptation"); + + b.Property("PermissiveCommercial"); + + b.HasKey("Id"); + + b.ToTable("licenses"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.Maintainer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("SMALLINT UNSIGNED"); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.Property("EmailAddress") + .HasColumnType("NVARCHAR(126)"); + + b.Property("HomeUrl") + .HasColumnType("TEXT"); + + b.Property("ModifiedDateUtc") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("TIMESTAMP"); + + b.Property("Name") + .HasColumnType("NVARCHAR(126) NOT NULL"); + + b.Property("TwitterHandle") + .HasColumnType("NVARCHAR(126)"); + + b.HasKey("Id"); + + b.ToTable("maintainers"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.Rule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("BIGINT UNSIGNED"); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.Property("ModifiedDateUtc") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("TIMESTAMP"); + + b.Property("Raw") + .HasColumnType("NVARCHAR(2083) NOT NULL"); + + b.HasKey("Id"); + + b.ToTable("rules"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.Software", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("SMALLINT UNSIGNED"); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.Property("DownloadUrl") + .HasColumnType("TEXT"); + + b.Property("HomeUrl") + .HasColumnType("TEXT"); + + b.Property("ModifiedDateUtc") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("TIMESTAMP"); + + b.Property("Name") + .HasColumnType("NVARCHAR(126) NOT NULL"); + + b.HasKey("Id"); + + b.ToTable("software"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.Syntax", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("SMALLINT UNSIGNED"); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.Property("DefinitionUrl") + .HasColumnType("TEXT"); + + b.Property("ModifiedDateUtc") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("TIMESTAMP"); + + b.Property("Name") + .HasColumnType("NVARCHAR(126) NOT NULL"); + + b.HasKey("Id"); + + b.ToTable("syntaxes"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.FilterList", b => + { + b.HasOne("FilterLists.Data.Entities.License") + .WithMany("FilterLists") + .HasForeignKey("LicenseId"); + + b.HasOne("FilterLists.Data.Entities.Syntax") + .WithMany("FilterLists") + .HasForeignKey("SyntaxId"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.Junctions.FilterListLanguage", b => + { + b.HasOne("FilterLists.Data.Entities.FilterList", "FilterList") + .WithMany("FilterListLanguages") + .HasForeignKey("FilterListId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("FilterLists.Data.Entities.Language", "Language") + .WithMany("FilterListLanguages") + .HasForeignKey("LanguageId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.Junctions.FilterListMaintainer", b => + { + b.HasOne("FilterLists.Data.Entities.FilterList", "FilterList") + .WithMany("FilterListMaintainers") + .HasForeignKey("FilterListId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("FilterLists.Data.Entities.Maintainer", "Maintainer") + .WithMany("FilterListMaintainers") + .HasForeignKey("MaintainerId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.Junctions.FilterListRule", b => + { + b.HasOne("FilterLists.Data.Entities.FilterList", "FilterList") + .WithMany("FilterListRules") + .HasForeignKey("FilterListId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("FilterLists.Data.Entities.Rule", "Rule") + .WithMany("FilterListRules") + .HasForeignKey("RuleId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.Junctions.Fork", b => + { + b.HasOne("FilterLists.Data.Entities.FilterList", "ForkFilterList") + .WithMany() + .HasForeignKey("ForkFilterListId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("FilterLists.Data.Entities.FilterList", "UpstreamFilterList") + .WithMany() + .HasForeignKey("UpstreamFilterListId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.Junctions.Merge", b => + { + b.HasOne("FilterLists.Data.Entities.FilterList", "MergeFilterList") + .WithMany() + .HasForeignKey("MergeFilterListId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("FilterLists.Data.Entities.FilterList", "UpstreamFilterList") + .WithMany() + .HasForeignKey("UpstreamFilterListId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.Junctions.SoftwareSyntax", b => + { + b.HasOne("FilterLists.Data.Entities.Software", "Software") + .WithMany("SoftwareSyntaxes") + .HasForeignKey("SoftwareId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("FilterLists.Data.Entities.Syntax", "Syntax") + .WithMany("SoftwareSyntaxes") + .HasForeignKey("SyntaxId") + .OnDelete(DeleteBehavior.Cascade); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/FilterLists.Api/Migrations/20180128204000_ExtractBaseEntityTypes.cs b/src/FilterLists.Api/Migrations/20180128204000_ExtractBaseEntityTypes.cs new file mode 100644 index 000000000..603d0e473 --- /dev/null +++ b/src/FilterLists.Api/Migrations/20180128204000_ExtractBaseEntityTypes.cs @@ -0,0 +1,25 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace FilterLists.Api.Migrations +{ + public partial class ExtractBaseEntityTypes : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + "ModifiedDateUtc", + "rules", + "TIMESTAMP", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + "ModifiedDateUtc", + "rules"); + } + } +} \ No newline at end of file diff --git a/src/FilterLists.Api/Migrations/FilterListsDbContextModelSnapshot.cs b/src/FilterLists.Api/Migrations/FilterListsDbContextModelSnapshot.cs index 4c4d78ead..3e79adaf4 100644 --- a/src/FilterLists.Api/Migrations/FilterListsDbContextModelSnapshot.cs +++ b/src/FilterLists.Api/Migrations/FilterListsDbContextModelSnapshot.cs @@ -293,6 +293,10 @@ protected override void BuildModel(ModelBuilder modelBuilder) .ValueGeneratedOnAdd() .HasColumnType("TIMESTAMP"); + b.Property("ModifiedDateUtc") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("TIMESTAMP"); + b.Property("Raw") .HasColumnType("NVARCHAR(2083) NOT NULL"); diff --git a/src/FilterLists.Data/Entities/BaseEntity.cs b/src/FilterLists.Data/Entities/BaseEntity.cs new file mode 100644 index 000000000..cd3c7cca1 --- /dev/null +++ b/src/FilterLists.Data/Entities/BaseEntity.cs @@ -0,0 +1,11 @@ +using System; + +namespace FilterLists.Data.Entities +{ + public class BaseEntity + { + public int Id { get; set; } + public DateTime CreatedDateUtc { get; set; } + public DateTime ModifiedDateUtc { get; set; } + } +} \ No newline at end of file diff --git a/src/FilterLists.Data/Entities/FilterList.cs b/src/FilterLists.Data/Entities/FilterList.cs index b151e5d08..1bac029e0 100644 --- a/src/FilterLists.Data/Entities/FilterList.cs +++ b/src/FilterLists.Data/Entities/FilterList.cs @@ -4,12 +4,8 @@ namespace FilterLists.Data.Entities { - public class FilterList + public class FilterList : BaseEntity { - public int Id { get; set; } - public DateTime CreatedDateUtc { get; set; } - public DateTime ModifiedDateUtc { get; set; } - public string Description { get; set; } public string DescriptionSourceUrl { get; set; } public DateTime? DiscontinuedDate { get; set; } diff --git a/src/FilterLists.Data/Entities/Language.cs b/src/FilterLists.Data/Entities/Language.cs index 8ce4c8043..518344660 100644 --- a/src/FilterLists.Data/Entities/Language.cs +++ b/src/FilterLists.Data/Entities/Language.cs @@ -1,15 +1,10 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using FilterLists.Data.Entities.Junctions; namespace FilterLists.Data.Entities { - public class Language + public class Language : BaseEntity { - public int Id { get; set; } - public DateTime CreatedDateUtc { get; set; } - public DateTime ModifiedDateUtc { get; set; } - public string Iso6391 { get; set; } public string Iso6392 { get; set; } public string Iso6392B { get; set; } diff --git a/src/FilterLists.Data/Entities/License.cs b/src/FilterLists.Data/Entities/License.cs index d36f5e58a..fecc22fce 100644 --- a/src/FilterLists.Data/Entities/License.cs +++ b/src/FilterLists.Data/Entities/License.cs @@ -1,14 +1,9 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; namespace FilterLists.Data.Entities { - public class License + public class License : BaseEntity { - public int Id { get; set; } - public DateTime CreatedDateUtc { get; set; } - public DateTime ModifiedDateUtc { get; set; } - public string DescriptionUrl { get; set; } public ICollection FilterLists { get; set; } public string Name { get; set; } diff --git a/src/FilterLists.Data/Entities/Maintainer.cs b/src/FilterLists.Data/Entities/Maintainer.cs index ecf64541d..344cb9bd6 100644 --- a/src/FilterLists.Data/Entities/Maintainer.cs +++ b/src/FilterLists.Data/Entities/Maintainer.cs @@ -1,15 +1,10 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using FilterLists.Data.Entities.Junctions; namespace FilterLists.Data.Entities { - public class Maintainer + public class Maintainer : BaseEntity { - public int Id { get; set; } - public DateTime CreatedDateUtc { get; set; } - public DateTime ModifiedDateUtc { get; set; } - public string EmailAddress { get; set; } public string HomeUrl { get; set; } public string Name { get; set; } diff --git a/src/FilterLists.Data/Entities/Rule.cs b/src/FilterLists.Data/Entities/Rule.cs index 03c91ec22..f18f7e5c0 100644 --- a/src/FilterLists.Data/Entities/Rule.cs +++ b/src/FilterLists.Data/Entities/Rule.cs @@ -1,14 +1,10 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using FilterLists.Data.Entities.Junctions; namespace FilterLists.Data.Entities { - public class Rule + public class Rule : BaseEntity { - public int Id { get; set; } - public DateTime CreatedDateUtc { get; set; } - public string Raw { get; set; } public ICollection FilterListRules { get; set; } diff --git a/src/FilterLists.Data/Entities/Software.cs b/src/FilterLists.Data/Entities/Software.cs index 1651bad43..a4d75f64a 100644 --- a/src/FilterLists.Data/Entities/Software.cs +++ b/src/FilterLists.Data/Entities/Software.cs @@ -1,15 +1,10 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using FilterLists.Data.Entities.Junctions; namespace FilterLists.Data.Entities { - public class Software + public class Software : BaseEntity { - public int Id { get; set; } - public DateTime CreatedDateUtc { get; set; } - public DateTime ModifiedDateUtc { get; set; } - public string DownloadUrl { get; set; } public string HomeUrl { get; set; } public string Name { get; set; } diff --git a/src/FilterLists.Data/Entities/Syntax.cs b/src/FilterLists.Data/Entities/Syntax.cs index f9ca4ed21..89ab38e2b 100644 --- a/src/FilterLists.Data/Entities/Syntax.cs +++ b/src/FilterLists.Data/Entities/Syntax.cs @@ -1,15 +1,10 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using FilterLists.Data.Entities.Junctions; namespace FilterLists.Data.Entities { - public class Syntax + public class Syntax : BaseEntity { - public int Id { get; set; } - public DateTime CreatedDateUtc { get; set; } - public DateTime ModifiedDateUtc { get; set; } - public string DefinitionUrl { get; set; } public ICollection FilterLists { get; set; } public string Name { get; set; } diff --git a/src/FilterLists.Data/EntityTypeConfigurations/BaseEntityTypeConfiguration.cs b/src/FilterLists.Data/EntityTypeConfigurations/BaseEntityTypeConfiguration.cs new file mode 100644 index 000000000..255c3c0e0 --- /dev/null +++ b/src/FilterLists.Data/EntityTypeConfigurations/BaseEntityTypeConfiguration.cs @@ -0,0 +1,21 @@ +using FilterLists.Data.Entities; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; + +namespace FilterLists.Data.EntityTypeConfigurations +{ + public class BaseEntityTypeConfiguration : IEntityTypeConfiguration where TEntity : BaseEntity + { + public virtual void Configure(EntityTypeBuilder entityTypeBuilder) + { + entityTypeBuilder.Property(x => x.Id) + .HasColumnType("SMALLINT UNSIGNED"); + entityTypeBuilder.Property(x => x.CreatedDateUtc) + .HasColumnType("TIMESTAMP") + .ValueGeneratedOnAdd(); + entityTypeBuilder.Property(x => x.ModifiedDateUtc) + .HasColumnType("TIMESTAMP") + .ValueGeneratedOnAddOrUpdate(); + } + } +} \ No newline at end of file diff --git a/src/FilterLists.Data/EntityTypeConfigurations/FilterListTypeConfiguration.cs b/src/FilterLists.Data/EntityTypeConfigurations/FilterListTypeConfiguration.cs index a7896178f..903ec43cd 100644 --- a/src/FilterLists.Data/EntityTypeConfigurations/FilterListTypeConfiguration.cs +++ b/src/FilterLists.Data/EntityTypeConfigurations/FilterListTypeConfiguration.cs @@ -4,20 +4,13 @@ namespace FilterLists.Data.EntityTypeConfigurations { - public class FilterListTypeConfiguration : IEntityTypeConfiguration + public class FilterListTypeConfiguration : BaseEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entityTypeBuilder) + public override void Configure(EntityTypeBuilder entityTypeBuilder) { - entityTypeBuilder.ToTable("filterlists"); + base.Configure(entityTypeBuilder); - entityTypeBuilder.Property(x => x.Id) - .HasColumnType("SMALLINT UNSIGNED"); - entityTypeBuilder.Property(x => x.CreatedDateUtc) - .HasColumnType("TIMESTAMP") - .ValueGeneratedOnAdd(); - entityTypeBuilder.Property(x => x.ModifiedDateUtc) - .HasColumnType("TIMESTAMP") - .ValueGeneratedOnAddOrUpdate(); + entityTypeBuilder.ToTable("filterlists"); entityTypeBuilder.Property(x => x.Description) .HasColumnType("TEXT"); diff --git a/src/FilterLists.Data/EntityTypeConfigurations/Junctions/BaseJunctionTypeConfigurationBase.cs b/src/FilterLists.Data/EntityTypeConfigurations/Junctions/BaseJunctionTypeConfiguration.cs similarity index 89% rename from src/FilterLists.Data/EntityTypeConfigurations/Junctions/BaseJunctionTypeConfigurationBase.cs rename to src/FilterLists.Data/EntityTypeConfigurations/Junctions/BaseJunctionTypeConfiguration.cs index 9c9577815..56e871224 100644 --- a/src/FilterLists.Data/EntityTypeConfigurations/Junctions/BaseJunctionTypeConfigurationBase.cs +++ b/src/FilterLists.Data/EntityTypeConfigurations/Junctions/BaseJunctionTypeConfiguration.cs @@ -4,7 +4,7 @@ namespace FilterLists.Data.EntityTypeConfigurations.Junctions { - public class JunctionBaseTypeConfiguration : IEntityTypeConfiguration + public class BaseJunctionTypeConfiguration : IEntityTypeConfiguration where TJunction : BaseJunction { public virtual void Configure(EntityTypeBuilder entityTypeBuilder) diff --git a/src/FilterLists.Data/EntityTypeConfigurations/Junctions/FilterListLanguageTypeConfiguration.cs b/src/FilterLists.Data/EntityTypeConfigurations/Junctions/FilterListLanguageTypeConfiguration.cs index 354ef7b44..7d9b5b8d2 100644 --- a/src/FilterLists.Data/EntityTypeConfigurations/Junctions/FilterListLanguageTypeConfiguration.cs +++ b/src/FilterLists.Data/EntityTypeConfigurations/Junctions/FilterListLanguageTypeConfiguration.cs @@ -4,7 +4,7 @@ namespace FilterLists.Data.EntityTypeConfigurations.Junctions { - public class FilterListLanguageTypeConfiguration : JunctionBaseTypeConfiguration + public class FilterListLanguageTypeConfiguration : BaseJunctionTypeConfiguration { public override void Configure(EntityTypeBuilder entityTypeBuilder) { diff --git a/src/FilterLists.Data/EntityTypeConfigurations/Junctions/FilterListMaintainerTypeConfiguration.cs b/src/FilterLists.Data/EntityTypeConfigurations/Junctions/FilterListMaintainerTypeConfiguration.cs index 2437321c7..0e5df61bb 100644 --- a/src/FilterLists.Data/EntityTypeConfigurations/Junctions/FilterListMaintainerTypeConfiguration.cs +++ b/src/FilterLists.Data/EntityTypeConfigurations/Junctions/FilterListMaintainerTypeConfiguration.cs @@ -4,7 +4,7 @@ namespace FilterLists.Data.EntityTypeConfigurations.Junctions { - public class FilterListMaintainerTypeConfiguration : JunctionBaseTypeConfiguration + public class FilterListMaintainerTypeConfiguration : BaseJunctionTypeConfiguration { public override void Configure(EntityTypeBuilder entityTypeBuilder) { diff --git a/src/FilterLists.Data/EntityTypeConfigurations/Junctions/FilterListRuleTypeConfiguration.cs b/src/FilterLists.Data/EntityTypeConfigurations/Junctions/FilterListRuleTypeConfiguration.cs index d512577ab..debfa368b 100644 --- a/src/FilterLists.Data/EntityTypeConfigurations/Junctions/FilterListRuleTypeConfiguration.cs +++ b/src/FilterLists.Data/EntityTypeConfigurations/Junctions/FilterListRuleTypeConfiguration.cs @@ -4,7 +4,7 @@ namespace FilterLists.Data.EntityTypeConfigurations.Junctions { - public class FilterListRuleTypeConfiguration : JunctionBaseTypeConfiguration + public class FilterListRuleTypeConfiguration : BaseJunctionTypeConfiguration { public override void Configure(EntityTypeBuilder entityTypeBuilder) { diff --git a/src/FilterLists.Data/EntityTypeConfigurations/Junctions/ForkTypeConfiguration.cs b/src/FilterLists.Data/EntityTypeConfigurations/Junctions/ForkTypeConfiguration.cs index 010c4f12c..baf37eb72 100644 --- a/src/FilterLists.Data/EntityTypeConfigurations/Junctions/ForkTypeConfiguration.cs +++ b/src/FilterLists.Data/EntityTypeConfigurations/Junctions/ForkTypeConfiguration.cs @@ -4,7 +4,7 @@ namespace FilterLists.Data.EntityTypeConfigurations.Junctions { - public class ForkTypeConfiguration : JunctionBaseTypeConfiguration + public class ForkTypeConfiguration : BaseJunctionTypeConfiguration { public override void Configure(EntityTypeBuilder entityTypeBuilder) { diff --git a/src/FilterLists.Data/EntityTypeConfigurations/Junctions/MergeTypeConfiguration.cs b/src/FilterLists.Data/EntityTypeConfigurations/Junctions/MergeTypeConfiguration.cs index e5adfa706..a5b199801 100644 --- a/src/FilterLists.Data/EntityTypeConfigurations/Junctions/MergeTypeConfiguration.cs +++ b/src/FilterLists.Data/EntityTypeConfigurations/Junctions/MergeTypeConfiguration.cs @@ -4,7 +4,7 @@ namespace FilterLists.Data.EntityTypeConfigurations.Junctions { - public class MergeTypeConfiguration : JunctionBaseTypeConfiguration + public class MergeTypeConfiguration : BaseJunctionTypeConfiguration { public override void Configure(EntityTypeBuilder entityTypeBuilder) { diff --git a/src/FilterLists.Data/EntityTypeConfigurations/Junctions/SoftwareSyntaxTypeConfiguration.cs b/src/FilterLists.Data/EntityTypeConfigurations/Junctions/SoftwareSyntaxTypeConfiguration.cs index 6f773e25e..b7b14638f 100644 --- a/src/FilterLists.Data/EntityTypeConfigurations/Junctions/SoftwareSyntaxTypeConfiguration.cs +++ b/src/FilterLists.Data/EntityTypeConfigurations/Junctions/SoftwareSyntaxTypeConfiguration.cs @@ -4,7 +4,7 @@ namespace FilterLists.Data.EntityTypeConfigurations.Junctions { - public class SoftwareSyntaxTypeConfiguration : JunctionBaseTypeConfiguration + public class SoftwareSyntaxTypeConfiguration : BaseJunctionTypeConfiguration { public override void Configure(EntityTypeBuilder entityTypeBuilder) { diff --git a/src/FilterLists.Data/EntityTypeConfigurations/LanguageTypeConfiguration.cs b/src/FilterLists.Data/EntityTypeConfigurations/LanguageTypeConfiguration.cs index b149c042d..d5b26c02c 100644 --- a/src/FilterLists.Data/EntityTypeConfigurations/LanguageTypeConfiguration.cs +++ b/src/FilterLists.Data/EntityTypeConfigurations/LanguageTypeConfiguration.cs @@ -4,20 +4,13 @@ namespace FilterLists.Data.EntityTypeConfigurations { - public class LanguageTypeConfiguration : IEntityTypeConfiguration + public class LanguageTypeConfiguration : BaseEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entityTypeBuilder) + public override void Configure(EntityTypeBuilder entityTypeBuilder) { - entityTypeBuilder.ToTable("languages"); + base.Configure(entityTypeBuilder); - entityTypeBuilder.Property(x => x.Id) - .HasColumnType("SMALLINT UNSIGNED"); - entityTypeBuilder.Property(x => x.CreatedDateUtc) - .HasColumnType("TIMESTAMP") - .ValueGeneratedOnAdd(); - entityTypeBuilder.Property(x => x.ModifiedDateUtc) - .HasColumnType("TIMESTAMP") - .ValueGeneratedOnAddOrUpdate(); + entityTypeBuilder.ToTable("languages"); entityTypeBuilder.Property(x => x.Iso6391) .HasColumnType("NVARCHAR(2)"); diff --git a/src/FilterLists.Data/EntityTypeConfigurations/LicenseTypeConfiguration.cs b/src/FilterLists.Data/EntityTypeConfigurations/LicenseTypeConfiguration.cs index cdbbb3ae3..060d80dc5 100644 --- a/src/FilterLists.Data/EntityTypeConfigurations/LicenseTypeConfiguration.cs +++ b/src/FilterLists.Data/EntityTypeConfigurations/LicenseTypeConfiguration.cs @@ -4,20 +4,13 @@ namespace FilterLists.Data.EntityTypeConfigurations { - public class LicenseTypeConfiguration : IEntityTypeConfiguration + public class LicenseTypeConfiguration : BaseEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entityTypeBuilder) + public override void Configure(EntityTypeBuilder entityTypeBuilder) { - entityTypeBuilder.ToTable("licenses"); + base.Configure(entityTypeBuilder); - entityTypeBuilder.Property(x => x.Id) - .HasColumnType("SMALLINT UNSIGNED"); - entityTypeBuilder.Property(x => x.CreatedDateUtc) - .HasColumnType("TIMESTAMP") - .ValueGeneratedOnAdd(); - entityTypeBuilder.Property(x => x.ModifiedDateUtc) - .HasColumnType("TIMESTAMP") - .ValueGeneratedOnAddOrUpdate(); + entityTypeBuilder.ToTable("licenses"); entityTypeBuilder.Property(x => x.DescriptionUrl) .HasColumnType("TEXT"); diff --git a/src/FilterLists.Data/EntityTypeConfigurations/MaintainerTypeConfiguration.cs b/src/FilterLists.Data/EntityTypeConfigurations/MaintainerTypeConfiguration.cs index 35f2c4a24..037645572 100644 --- a/src/FilterLists.Data/EntityTypeConfigurations/MaintainerTypeConfiguration.cs +++ b/src/FilterLists.Data/EntityTypeConfigurations/MaintainerTypeConfiguration.cs @@ -4,20 +4,13 @@ namespace FilterLists.Data.EntityTypeConfigurations { - public class MaintainerTypeConfiguration : IEntityTypeConfiguration + public class MaintainerTypeConfiguration : BaseEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entityTypeBuilder) + public override void Configure(EntityTypeBuilder entityTypeBuilder) { - entityTypeBuilder.ToTable("maintainers"); + base.Configure(entityTypeBuilder); - entityTypeBuilder.Property(x => x.Id) - .HasColumnType("SMALLINT UNSIGNED"); - entityTypeBuilder.Property(x => x.CreatedDateUtc) - .HasColumnType("TIMESTAMP") - .ValueGeneratedOnAdd(); - entityTypeBuilder.Property(x => x.ModifiedDateUtc) - .HasColumnType("TIMESTAMP") - .ValueGeneratedOnAddOrUpdate(); + entityTypeBuilder.ToTable("maintainers"); entityTypeBuilder.Property(x => x.EmailAddress) .HasColumnType("NVARCHAR(126)"); diff --git a/src/FilterLists.Data/EntityTypeConfigurations/RuleTypeConfiguration.cs b/src/FilterLists.Data/EntityTypeConfigurations/RuleTypeConfiguration.cs index 9d80b1a52..1a32bbee4 100644 --- a/src/FilterLists.Data/EntityTypeConfigurations/RuleTypeConfiguration.cs +++ b/src/FilterLists.Data/EntityTypeConfigurations/RuleTypeConfiguration.cs @@ -4,17 +4,16 @@ namespace FilterLists.Data.EntityTypeConfigurations { - public class RuleTypeConfiguration : IEntityTypeConfiguration + public class RuleTypeConfiguration : BaseEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entityTypeBuilder) + public override void Configure(EntityTypeBuilder entityTypeBuilder) { + base.Configure(entityTypeBuilder); + entityTypeBuilder.ToTable("rules"); entityTypeBuilder.Property(x => x.Id) .HasColumnType("BIGINT UNSIGNED"); - entityTypeBuilder.Property(x => x.CreatedDateUtc) - .HasColumnType("TIMESTAMP") - .ValueGeneratedOnAdd(); entityTypeBuilder.Property(x => x.Raw) .HasColumnType("NVARCHAR(2083) NOT NULL"); diff --git a/src/FilterLists.Data/EntityTypeConfigurations/SoftwareTypeConfiguration.cs b/src/FilterLists.Data/EntityTypeConfigurations/SoftwareTypeConfiguration.cs index fc07b2dd5..a382e9e62 100644 --- a/src/FilterLists.Data/EntityTypeConfigurations/SoftwareTypeConfiguration.cs +++ b/src/FilterLists.Data/EntityTypeConfigurations/SoftwareTypeConfiguration.cs @@ -4,20 +4,13 @@ namespace FilterLists.Data.EntityTypeConfigurations { - public class SoftwareTypeConfiguration : IEntityTypeConfiguration + public class SoftwareTypeConfiguration : BaseEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entityTypeBuilder) + public override void Configure(EntityTypeBuilder entityTypeBuilder) { - entityTypeBuilder.ToTable("software"); + base.Configure(entityTypeBuilder); - entityTypeBuilder.Property(x => x.Id) - .HasColumnType("SMALLINT UNSIGNED"); - entityTypeBuilder.Property(x => x.CreatedDateUtc) - .HasColumnType("TIMESTAMP") - .ValueGeneratedOnAdd(); - entityTypeBuilder.Property(x => x.ModifiedDateUtc) - .HasColumnType("TIMESTAMP") - .ValueGeneratedOnAddOrUpdate(); + entityTypeBuilder.ToTable("software"); entityTypeBuilder.Property(x => x.DownloadUrl) .HasColumnType("TEXT"); diff --git a/src/FilterLists.Data/EntityTypeConfigurations/SyntaxTypeConfiguration.cs b/src/FilterLists.Data/EntityTypeConfigurations/SyntaxTypeConfiguration.cs index 2e76c03d2..512543c6f 100644 --- a/src/FilterLists.Data/EntityTypeConfigurations/SyntaxTypeConfiguration.cs +++ b/src/FilterLists.Data/EntityTypeConfigurations/SyntaxTypeConfiguration.cs @@ -4,20 +4,13 @@ namespace FilterLists.Data.EntityTypeConfigurations { - public class SyntaxTypeConfiguration : IEntityTypeConfiguration + public class SyntaxTypeConfiguration : BaseEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entityTypeBuilder) + public override void Configure(EntityTypeBuilder entityTypeBuilder) { - entityTypeBuilder.ToTable("syntaxes"); + base.Configure(entityTypeBuilder); - entityTypeBuilder.Property(x => x.Id) - .HasColumnType("SMALLINT UNSIGNED"); - entityTypeBuilder.Property(x => x.CreatedDateUtc) - .HasColumnType("TIMESTAMP") - .ValueGeneratedOnAdd(); - entityTypeBuilder.Property(x => x.ModifiedDateUtc) - .HasColumnType("TIMESTAMP") - .ValueGeneratedOnAddOrUpdate(); + entityTypeBuilder.ToTable("syntaxes"); entityTypeBuilder.Property(x => x.DefinitionUrl) .HasColumnType("TEXT");