extract BaseJunction superclass

This commit is contained in:
Collin Barrett 2018-01-28 12:58:05 -06:00
parent 2fdb11ddcf
commit 1711171110
15 changed files with 58 additions and 66 deletions

View file

@ -0,0 +1,9 @@
using System;
namespace FilterLists.Data.Entities.Junctions
{
public class BaseJunction
{
public DateTime CreatedDateUtc { get; set; }
}
}

View file

@ -1,11 +1,7 @@
using System;
namespace FilterLists.Data.Entities.Junctions
namespace FilterLists.Data.Entities.Junctions
{
public class FilterListLanguage
public class FilterListLanguage : BaseJunction
{
public DateTime CreatedDateUtc { get; set; }
public int FilterListId { get; set; }
public FilterList FilterList { get; set; }

View file

@ -1,11 +1,7 @@
using System;
namespace FilterLists.Data.Entities.Junctions
namespace FilterLists.Data.Entities.Junctions
{
public class FilterListMaintainer
public class FilterListMaintainer : BaseJunction
{
public DateTime CreatedDateUtc { get; set; }
public int FilterListId { get; set; }
public FilterList FilterList { get; set; }

View file

@ -1,11 +1,7 @@
using System;
namespace FilterLists.Data.Entities.Junctions
namespace FilterLists.Data.Entities.Junctions
{
public class FilterListRule
public class FilterListRule : BaseJunction
{
public DateTime CreatedDateUtc { get; set; }
public int FilterListId { get; set; }
public FilterList FilterList { get; set; }

View file

@ -1,11 +1,7 @@
using System;
namespace FilterLists.Data.Entities.Junctions
namespace FilterLists.Data.Entities.Junctions
{
public class Fork
public class Fork : BaseJunction
{
public DateTime CreatedDateUtc { get; set; }
public int ForkFilterListId { get; set; }
public FilterList ForkFilterList { get; set; }

View file

@ -1,11 +1,7 @@
using System;
namespace FilterLists.Data.Entities.Junctions
namespace FilterLists.Data.Entities.Junctions
{
public class Merge
public class Merge : BaseJunction
{
public DateTime CreatedDateUtc { get; set; }
public int MergeFilterListId { get; set; }
public FilterList MergeFilterList { get; set; }

View file

@ -1,11 +1,7 @@
using System;
namespace FilterLists.Data.Entities.Junctions
namespace FilterLists.Data.Entities.Junctions
{
public class SoftwareSyntax
public class SoftwareSyntax : BaseJunction
{
public DateTime CreatedDateUtc { get; set; }
public int SoftwareId { get; set; }
public Software Software { get; set; }

View file

@ -0,0 +1,17 @@
using FilterLists.Data.Entities.Junctions;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Data.EntityTypeConfigurations.Junctions
{
public class JunctionBaseTypeConfiguration<TJunction> : IEntityTypeConfiguration<TJunction>
where TJunction : BaseJunction
{
public virtual void Configure(EntityTypeBuilder<TJunction> entityTypeBuilder)
{
entityTypeBuilder.Property(x => x.CreatedDateUtc)
.HasColumnType("TIMESTAMP")
.ValueGeneratedOnAdd();
}
}
}

View file

@ -4,15 +4,13 @@
namespace FilterLists.Data.EntityTypeConfigurations.Junctions
{
public class FilterListLanguageTypeConfiguration : IEntityTypeConfiguration<FilterListLanguage>
public class FilterListLanguageTypeConfiguration : JunctionBaseTypeConfiguration<FilterListLanguage>
{
public void Configure(EntityTypeBuilder<FilterListLanguage> entityTypeBuilder)
public override void Configure(EntityTypeBuilder<FilterListLanguage> entityTypeBuilder)
{
base.Configure(entityTypeBuilder);
entityTypeBuilder.ToTable("filterlists_languages");
entityTypeBuilder.HasKey(x => new {x.FilterListId, x.LanguageId});
entityTypeBuilder.Property(x => x.CreatedDateUtc)
.HasColumnType("TIMESTAMP")
.ValueGeneratedOnAdd();
}
}
}

View file

@ -4,15 +4,13 @@
namespace FilterLists.Data.EntityTypeConfigurations.Junctions
{
public class FilterListMaintainerTypeConfiguration : IEntityTypeConfiguration<FilterListMaintainer>
public class FilterListMaintainerTypeConfiguration : JunctionBaseTypeConfiguration<FilterListMaintainer>
{
public void Configure(EntityTypeBuilder<FilterListMaintainer> entityTypeBuilder)
public override void Configure(EntityTypeBuilder<FilterListMaintainer> entityTypeBuilder)
{
base.Configure(entityTypeBuilder);
entityTypeBuilder.ToTable("filterlists_maintainers");
entityTypeBuilder.HasKey(x => new {x.FilterListId, x.MaintainerId});
entityTypeBuilder.Property(x => x.CreatedDateUtc)
.HasColumnType("TIMESTAMP")
.ValueGeneratedOnAdd();
}
}
}

View file

@ -4,15 +4,13 @@
namespace FilterLists.Data.EntityTypeConfigurations.Junctions
{
public class FilterListRuleTypeConfiguration : IEntityTypeConfiguration<FilterListRule>
public class FilterListRuleTypeConfiguration : JunctionBaseTypeConfiguration<FilterListRule>
{
public void Configure(EntityTypeBuilder<FilterListRule> entityTypeBuilder)
public override void Configure(EntityTypeBuilder<FilterListRule> entityTypeBuilder)
{
base.Configure(entityTypeBuilder);
entityTypeBuilder.ToTable("filterlists_rules");
entityTypeBuilder.HasKey(x => new {x.FilterListId, x.RuleId});
entityTypeBuilder.Property(x => x.CreatedDateUtc)
.HasColumnType("TIMESTAMP")
.ValueGeneratedOnAdd();
}
}
}

View file

@ -4,15 +4,13 @@
namespace FilterLists.Data.EntityTypeConfigurations.Junctions
{
public class ForkTypeConfiguration : IEntityTypeConfiguration<Fork>
public class ForkTypeConfiguration : JunctionBaseTypeConfiguration<Fork>
{
public void Configure(EntityTypeBuilder<Fork> entityTypeBuilder)
public override void Configure(EntityTypeBuilder<Fork> entityTypeBuilder)
{
base.Configure(entityTypeBuilder);
entityTypeBuilder.ToTable("forks");
entityTypeBuilder.HasKey(x => new {x.ForkFilterListId, x.UpstreamFilterListId});
entityTypeBuilder.Property(x => x.CreatedDateUtc)
.HasColumnType("TIMESTAMP")
.ValueGeneratedOnAdd();
}
}
}

View file

@ -4,15 +4,13 @@
namespace FilterLists.Data.EntityTypeConfigurations.Junctions
{
public class MergeTypeConfiguration : IEntityTypeConfiguration<Merge>
public class MergeTypeConfiguration : JunctionBaseTypeConfiguration<Merge>
{
public void Configure(EntityTypeBuilder<Merge> entityTypeBuilder)
public override void Configure(EntityTypeBuilder<Merge> entityTypeBuilder)
{
base.Configure(entityTypeBuilder);
entityTypeBuilder.ToTable("merges");
entityTypeBuilder.HasKey(x => new {x.MergeFilterListId, x.UpstreamFilterListId});
entityTypeBuilder.Property(x => x.CreatedDateUtc)
.HasColumnType("TIMESTAMP")
.ValueGeneratedOnAdd();
}
}
}

View file

@ -4,15 +4,13 @@
namespace FilterLists.Data.EntityTypeConfigurations.Junctions
{
public class SoftwareSyntaxTypeConfiguration : IEntityTypeConfiguration<SoftwareSyntax>
public class SoftwareSyntaxTypeConfiguration : JunctionBaseTypeConfiguration<SoftwareSyntax>
{
public void Configure(EntityTypeBuilder<SoftwareSyntax> entityTypeBuilder)
public override void Configure(EntityTypeBuilder<SoftwareSyntax> entityTypeBuilder)
{
base.Configure(entityTypeBuilder);
entityTypeBuilder.ToTable("software_syntaxes");
entityTypeBuilder.HasKey(x => new {x.SoftwareId, x.SyntaxId});
entityTypeBuilder.Property(x => x.CreatedDateUtc)
.HasColumnType("TIMESTAMP")
.ValueGeneratedOnAdd();
}
}
}

View file

@ -85,6 +85,8 @@ private async Task AddOrUpdateRules(Snapshot snapshot)
.Where(x => deletedRules.Select(y => y.Id).Contains(x.RuleId))
.Where(x => x.FilterListId == snapshot.FilterListId));
//TODO: consider never removing FilterListsRules but rather marking a flag as deprecated to expose when rule was removed
if (newCurrentRules.Any() || deletedRules.Any())
{
var list = filterListsDbContext.FilterLists.FindAsync(snapshot.FilterListId).Result;