refactor(directory): ♻ rm unnecessary generic param on mappings to simplify mapping registration

This commit is contained in:
Collin M. Barrett 2020-08-23 08:50:05 -05:00
parent e288908ed6
commit 17a1ade6b7
18 changed files with 74 additions and 70 deletions

View file

@ -1,19 +1,20 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities
{
[SuppressMessage("ReSharper", "AutoPropertyCanBeMadeGetOnly.Local")]
public class Dependent
{
public FilterList DependencyFilterList { get; private set; } = null!;
public FilterList DependentFilterList { get; private set; } = null!;
}
internal class DependentTypeConfiguration<TEntity> : IEntityTypeConfiguration<TEntity> where TEntity : Dependent
internal class DependentTypeConfiguration : IEntityTypeConfiguration<Dependent>
{
public virtual void Configure(EntityTypeBuilder<TEntity> builder)
public virtual void Configure(EntityTypeBuilder<Dependent> builder)
{
_ = builder ?? throw new ArgumentNullException(nameof(builder));
@ -23,10 +24,10 @@ public virtual void Configure(EntityTypeBuilder<TEntity> builder)
builder.Property<int>(dependentFilterListId);
builder.HasKey(dependencyFilterListId, dependentFilterListId);
builder.HasOne(d => d.DependencyFilterList)
.WithMany(f => (IEnumerable<TEntity>)f.DependencyFilterLists)
.WithMany(f => f.DependencyFilterLists)
.HasForeignKey(dependencyFilterListId);
builder.HasOne(d => d.DependentFilterList)
.WithMany(f => (IEnumerable<TEntity>)f.DependentFilterLists)
.WithMany(f => f.DependentFilterLists)
.HasForeignKey(dependentFilterListId);
}
}

View file

@ -1,10 +1,12 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities
{
[SuppressMessage("ReSharper", "AutoPropertyCanBeMadeGetOnly.Local")]
public class FilterList
{
public string Name { get; private set; } = null!;
@ -34,9 +36,9 @@ public class FilterList
public IReadOnlyCollection<Dependent> DependentFilterLists { get; private set; } = new HashSet<Dependent>();
}
internal class FilterListTypeConfiguration<TEntity> : IEntityTypeConfiguration<TEntity> where TEntity : FilterList
internal class FilterListTypeConfiguration : IEntityTypeConfiguration<FilterList>
{
public virtual void Configure(EntityTypeBuilder<TEntity> builder)
public virtual void Configure(EntityTypeBuilder<FilterList> builder)
{
_ = builder ?? throw new ArgumentNullException(nameof(builder));

View file

@ -1,19 +1,20 @@
using System;
using System.Diagnostics.CodeAnalysis;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities
{
[SuppressMessage("ReSharper", "AutoPropertyCanBeMadeGetOnly.Local")]
public class FilterListLanguage
{
public FilterList FilterList { get; private set; } = null!;
public Language Language { get; private set; } = null!;
}
internal class FilterListLanguageTypeConfiguration<TEntity> : IEntityTypeConfiguration<TEntity>
where TEntity : FilterListLanguage
internal class FilterListLanguageTypeConfiguration : IEntityTypeConfiguration<FilterListLanguage>
{
public virtual void Configure(EntityTypeBuilder<TEntity> builder)
public virtual void Configure(EntityTypeBuilder<FilterListLanguage> builder)
{
_ = builder ?? throw new ArgumentNullException(nameof(builder));

View file

@ -1,19 +1,20 @@
using System;
using System.Diagnostics.CodeAnalysis;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities
{
[SuppressMessage("ReSharper", "AutoPropertyCanBeMadeGetOnly.Local")]
public class FilterListMaintainer
{
public FilterList FilterList { get; private set; } = null!;
public Maintainer Maintainer { get; private set; } = null!;
}
internal class FilterListMaintainerTypeConfiguration<TEntity> : IEntityTypeConfiguration<TEntity>
where TEntity : FilterListMaintainer
internal class FilterListMaintainerTypeConfiguration : IEntityTypeConfiguration<FilterListMaintainer>
{
public virtual void Configure(EntityTypeBuilder<TEntity> builder)
public virtual void Configure(EntityTypeBuilder<FilterListMaintainer> builder)
{
_ = builder ?? throw new ArgumentNullException(nameof(builder));

View file

@ -1,19 +1,20 @@
using System;
using System.Diagnostics.CodeAnalysis;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities
{
[SuppressMessage("ReSharper", "AutoPropertyCanBeMadeGetOnly.Local")]
public class FilterListSyntax
{
public FilterList FilterList { get; private set; } = null!;
public Syntax Syntax { get; private set; } = null!;
}
internal class FilterListSyntaxTypeConfiguration<TEntity> : IEntityTypeConfiguration<TEntity>
where TEntity : FilterListSyntax
internal class FilterListSyntaxTypeConfiguration : IEntityTypeConfiguration<FilterListSyntax>
{
public virtual void Configure(EntityTypeBuilder<TEntity> builder)
public virtual void Configure(EntityTypeBuilder<FilterListSyntax> builder)
{
_ = builder ?? throw new ArgumentNullException(nameof(builder));

View file

@ -1,19 +1,20 @@
using System;
using System.Diagnostics.CodeAnalysis;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities
{
[SuppressMessage("ReSharper", "AutoPropertyCanBeMadeGetOnly.Local")]
public class FilterListTag
{
public FilterList FilterList { get; private set; } = null!;
public Tag Tag { get; private set; } = null!;
}
internal class FilterListTagTypeConfiguration<TEntity> : IEntityTypeConfiguration<TEntity>
where TEntity : FilterListTag
internal class FilterListTagTypeConfiguration : IEntityTypeConfiguration<FilterListTag>
{
public virtual void Configure(EntityTypeBuilder<TEntity> builder)
public virtual void Configure(EntityTypeBuilder<FilterListTag> builder)
{
_ = builder ?? throw new ArgumentNullException(nameof(builder));

View file

@ -1,19 +1,20 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities
{
[SuppressMessage("ReSharper", "AutoPropertyCanBeMadeGetOnly.Local")]
public class Fork
{
public FilterList UpstreamFilterList { get; private set; } = null!;
public FilterList ForkFilterList { get; private set; } = null!;
}
internal class ForkTypeConfiguration<TEntity> : IEntityTypeConfiguration<TEntity> where TEntity : Fork
internal class ForkTypeConfiguration : IEntityTypeConfiguration<Fork>
{
public virtual void Configure(EntityTypeBuilder<TEntity> builder)
public virtual void Configure(EntityTypeBuilder<Fork> builder)
{
_ = builder ?? throw new ArgumentNullException(nameof(builder));
@ -23,10 +24,10 @@ public virtual void Configure(EntityTypeBuilder<TEntity> builder)
builder.Property<int>(forkFilterListId);
builder.HasKey(upstreamFilterListId, forkFilterListId);
builder.HasOne(f => f.UpstreamFilterList)
.WithMany(f => (IEnumerable<TEntity>)f.UpstreamFilterLists)
.WithMany(f => f.UpstreamFilterLists)
.HasForeignKey(upstreamFilterListId);
builder.HasOne(f => f.ForkFilterList)
.WithMany(f => (IEnumerable<TEntity>)f.ForkFilterLists)
.WithMany(f => f.ForkFilterLists)
.HasForeignKey(forkFilterListId);
}
}

View file

@ -1,10 +1,12 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities
{
[SuppressMessage("ReSharper", "AutoPropertyCanBeMadeGetOnly.Local")]
public class Language
{
public string Iso6391 { get; private set; } = null!;
@ -12,10 +14,9 @@ public class Language
public IReadOnlyCollection<FilterListLanguage> FilterListLanguages { get; private set; } = new HashSet<FilterListLanguage>();
}
internal class LanguageTypeConfiguration<TEntity> : IEntityTypeConfiguration<TEntity>
where TEntity : Language
internal class LanguageTypeConfiguration : IEntityTypeConfiguration<Language>
{
public virtual void Configure(EntityTypeBuilder<TEntity> builder)
public virtual void Configure(EntityTypeBuilder<Language> builder)
{
_ = builder ?? throw new ArgumentNullException(nameof(builder));

View file

@ -1,10 +1,12 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities
{
[SuppressMessage("ReSharper", "AutoPropertyCanBeMadeGetOnly.Local")]
public class License
{
public string Name { get; private set; } = null!;
@ -13,9 +15,9 @@ public class License
public IReadOnlyCollection<FilterList> FilterLists { get; private set; } = new HashSet<FilterList>();
}
internal class LicenseTypeConfiguration<TEntity> : IEntityTypeConfiguration<TEntity> where TEntity : License
internal class LicenseTypeConfiguration : IEntityTypeConfiguration<License>
{
public virtual void Configure(EntityTypeBuilder<TEntity> builder)
public virtual void Configure(EntityTypeBuilder<License> builder)
{
_ = builder ?? throw new ArgumentNullException(nameof(builder));

View file

@ -1,10 +1,12 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities
{
[SuppressMessage("ReSharper", "AutoPropertyCanBeMadeGetOnly.Local")]
public class Maintainer
{
public string Name { get; private set; } = null!;
@ -14,9 +16,9 @@ public class Maintainer
public IReadOnlyCollection<FilterListMaintainer> FilterListMaintainers { get; private set; } = new HashSet<FilterListMaintainer>();
}
internal class MaintainerTypeConfiguration<TEntity> : IEntityTypeConfiguration<TEntity> where TEntity : Maintainer
internal class MaintainerTypeConfiguration : IEntityTypeConfiguration<Maintainer>
{
public virtual void Configure(EntityTypeBuilder<TEntity> builder)
public virtual void Configure(EntityTypeBuilder<Maintainer> builder)
{
_ = builder ?? throw new ArgumentNullException(nameof(builder));

View file

@ -1,19 +1,20 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities
{
[SuppressMessage("ReSharper", "AutoPropertyCanBeMadeGetOnly.Local")]
public class Merge
{
public FilterList IncludedInFilterList { get; private set; } = null!;
public FilterList IncludesFilterList { get; private set; } = null!;
}
internal class MergeTypeConfiguration<TEntity> : IEntityTypeConfiguration<TEntity> where TEntity : Merge
internal class MergeTypeConfiguration : IEntityTypeConfiguration<Merge>
{
public virtual void Configure(EntityTypeBuilder<TEntity> builder)
public virtual void Configure(EntityTypeBuilder<Merge> builder)
{
_ = builder ?? throw new ArgumentNullException(nameof(builder));
@ -23,10 +24,10 @@ public virtual void Configure(EntityTypeBuilder<TEntity> builder)
builder.Property<int>(includesFilterListId);
builder.HasKey(includedInFilterListId, includesFilterListId);
builder.HasOne(m => m.IncludedInFilterList)
.WithMany(f => (IEnumerable<TEntity>)f.IncludedInFilterLists)
.WithMany(f => f.IncludedInFilterLists)
.HasForeignKey(includedInFilterListId);
builder.HasOne(m => m.IncludesFilterList)
.WithMany(f => (IEnumerable<TEntity>)f.IncludesFilterLists)
.WithMany(f => f.IncludesFilterLists)
.HasForeignKey(includesFilterListId);
}
}

View file

@ -1,10 +1,12 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities
{
[SuppressMessage("ReSharper", "AutoPropertyCanBeMadeGetOnly.Local")]
public class Software
{
public string Name { get; private set; } = null!;
@ -15,9 +17,9 @@ public class Software
public IReadOnlyCollection<SoftwareSyntax> SoftwareSyntaxes { get; private set; } = new HashSet<SoftwareSyntax>();
}
internal class SoftwareTypeConfiguration<TEntity> : IEntityTypeConfiguration<TEntity> where TEntity : Software
internal class SoftwareTypeConfiguration : IEntityTypeConfiguration<Software>
{
public virtual void Configure(EntityTypeBuilder<TEntity> builder)
public virtual void Configure(EntityTypeBuilder<Software> builder)
{
_ = builder ?? throw new ArgumentNullException(nameof(builder));

View file

@ -1,19 +1,20 @@
using System;
using System.Diagnostics.CodeAnalysis;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities
{
[SuppressMessage("ReSharper", "AutoPropertyCanBeMadeGetOnly.Local")]
public class SoftwareSyntax
{
public Software Software { get; private set; } = null!;
public Syntax Syntax { get; private set; } = null!;
}
internal class SoftwareSyntaxTypeConfiguration<TEntity> : IEntityTypeConfiguration<TEntity>
where TEntity : SoftwareSyntax
internal class SoftwareSyntaxTypeConfiguration : IEntityTypeConfiguration<SoftwareSyntax>
{
public virtual void Configure(EntityTypeBuilder<TEntity> builder)
public virtual void Configure(EntityTypeBuilder<SoftwareSyntax> builder)
{
_ = builder ?? throw new ArgumentNullException(nameof(builder));

View file

@ -1,10 +1,12 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities
{
[SuppressMessage("ReSharper", "AutoPropertyCanBeMadeGetOnly.Local")]
public class Syntax
{
public string Name { get; private set; } = null!;
@ -14,9 +16,9 @@ public class Syntax
public IReadOnlyCollection<SoftwareSyntax> SoftwareSyntaxes { get; private set; } = new HashSet<SoftwareSyntax>();
}
internal class SyntaxTypeConfiguration<TEntity> : IEntityTypeConfiguration<TEntity> where TEntity : Syntax
internal class SyntaxTypeConfiguration : IEntityTypeConfiguration<Syntax>
{
public virtual void Configure(EntityTypeBuilder<TEntity> builder)
public virtual void Configure(EntityTypeBuilder<Syntax> builder)
{
_ = builder ?? throw new ArgumentNullException(nameof(builder));

View file

@ -1,10 +1,12 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities
{
[SuppressMessage("ReSharper", "AutoPropertyCanBeMadeGetOnly.Local")]
public class Tag
{
public string Name { get; private set; } = null!;
@ -12,9 +14,9 @@ public class Tag
public IReadOnlyCollection<FilterListTag> FilterListTags { get; private set; } = new HashSet<FilterListTag>();
}
internal class TagTypeConfiguration<TEntity> : IEntityTypeConfiguration<TEntity> where TEntity : Tag
internal class TagTypeConfiguration : IEntityTypeConfiguration<Tag>
{
public virtual void Configure(EntityTypeBuilder<TEntity> builder)
public virtual void Configure(EntityTypeBuilder<Tag> builder)
{
_ = builder ?? throw new ArgumentNullException(nameof(builder));

View file

@ -1,19 +1,20 @@
using System;
using System.Diagnostics.CodeAnalysis;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities
{
[SuppressMessage("ReSharper", "AutoPropertyCanBeMadeGetOnly.Local")]
public class ViewUrlMirror
{
public FilterList FilterList { get; private set; } = null!;
public Uri Url { get; private set; } = null!;
}
internal class ViewUrlMirrorTypeConfiguration<TEntity> : IEntityTypeConfiguration<TEntity>
where TEntity : ViewUrlMirror
internal class ViewUrlMirrorTypeConfiguration : IEntityTypeConfiguration<ViewUrlMirror>
{
public virtual void Configure(EntityTypeBuilder<TEntity> builder)
public virtual void Configure(EntityTypeBuilder<ViewUrlMirror> builder)
{
_ = builder ?? throw new ArgumentNullException(nameof(builder));

View file

@ -1,9 +1,11 @@
using System;
using System.Diagnostics.CodeAnalysis;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities
{
[SuppressMessage("ReSharper", "AutoPropertyCanBeMadeGetOnly.Local")]
public class ViewUrlPartial
{
public FilterList FilterList { get; private set; } = null!;
@ -11,10 +13,9 @@ public class ViewUrlPartial
public Uri Url { get; private set; } = null!;
}
internal class ViewUrlPartialTypeConfiguration<TEntity> : IEntityTypeConfiguration<TEntity>
where TEntity : ViewUrlPartial
internal class ViewUrlPartialTypeConfiguration : IEntityTypeConfiguration<ViewUrlPartial>
{
public virtual void Configure(EntityTypeBuilder<TEntity> builder)
public virtual void Configure(EntityTypeBuilder<ViewUrlPartial> builder)
{
_ = builder ?? throw new ArgumentNullException(nameof(builder));

View file

@ -36,25 +36,6 @@ protected override void OnModelCreating(ModelBuilder modelBuilder)
_ = modelBuilder ?? throw new ArgumentNullException(nameof(modelBuilder));
modelBuilder.ApplyConfigurationsFromAssembly(GetType().Assembly);
// TODO: rm explicit below once ApplyConfigurationsFromAssembly() works properly
modelBuilder.ApplyConfiguration(new DependentTypeConfiguration<Dependent>());
modelBuilder.ApplyConfiguration(new FilterListTypeConfiguration<FilterList>());
modelBuilder.ApplyConfiguration(new FilterListLanguageTypeConfiguration<FilterListLanguage>());
modelBuilder.ApplyConfiguration(new FilterListMaintainerTypeConfiguration<FilterListMaintainer>());
modelBuilder.ApplyConfiguration(new FilterListSyntaxTypeConfiguration<FilterListSyntax>());
modelBuilder.ApplyConfiguration(new FilterListTagTypeConfiguration<FilterListTag>());
modelBuilder.ApplyConfiguration(new ForkTypeConfiguration<Fork>());
modelBuilder.ApplyConfiguration(new LanguageTypeConfiguration<Language>());
modelBuilder.ApplyConfiguration(new LicenseTypeConfiguration<License>());
modelBuilder.ApplyConfiguration(new MaintainerTypeConfiguration<Maintainer>());
modelBuilder.ApplyConfiguration(new MergeTypeConfiguration<Merge>());
modelBuilder.ApplyConfiguration(new SoftwareTypeConfiguration<Software>());
modelBuilder.ApplyConfiguration(new SoftwareSyntaxTypeConfiguration<SoftwareSyntax>());
modelBuilder.ApplyConfiguration(new SyntaxTypeConfiguration<Syntax>());
modelBuilder.ApplyConfiguration(new TagTypeConfiguration<Tag>());
modelBuilder.ApplyConfiguration(new ViewUrlMirrorTypeConfiguration<ViewUrlMirror>());
modelBuilder.ApplyConfiguration(new ViewUrlPartialTypeConfiguration<ViewUrlPartial>());
}
}
}