refactor(dir): ♻ snake_case tables that require manual pluralization to match EF convention

This commit is contained in:
Collin M. Barrett 2021-11-18 11:32:50 -06:00
parent 1e04803760
commit 85312ba4a0
9 changed files with 63 additions and 18 deletions

View file

@ -1,4 +1,6 @@
using Microsoft.EntityFrameworkCore;
using System.Globalization;
using EFCore.NamingConventions.Internal;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities;
@ -15,7 +17,10 @@ internal class DependentTypeConfiguration : IEntityTypeConfiguration<Dependent>
{
public virtual void Configure(EntityTypeBuilder<Dependent> builder)
{
builder.ToTable(nameof(Dependent) + "s");
// TODO: register and resolve INameRewriter
var nr = new SnakeCaseNameRewriter(CultureInfo.InvariantCulture);
builder.ToTable($"{nr.RewriteName(nameof(Dependent))}s");
builder.HasKey(d => new { d.DependencyFilterListId, d.DependentFilterListId });
builder.HasOne(d => d.DependencyFilterList)
.WithMany(fl => fl.DependentFilterLists)

View file

@ -1,4 +1,6 @@
using Microsoft.EntityFrameworkCore;
using System.Globalization;
using EFCore.NamingConventions.Internal;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities;
@ -15,7 +17,10 @@ internal class FilterListLanguageTypeConfiguration : IEntityTypeConfiguration<Fi
{
public virtual void Configure(EntityTypeBuilder<FilterListLanguage> builder)
{
builder.ToTable(nameof(FilterListLanguage) + "s");
// TODO: register and resolve INameRewriter
var nr = new SnakeCaseNameRewriter(CultureInfo.InvariantCulture);
builder.ToTable($"{nr.RewriteName(nameof(FilterListLanguage))}s");
builder.HasKey(fll => new { fll.FilterListId, fll.Iso6391 });
builder.HasDataJsonFile<FilterListLanguage>();
}

View file

@ -1,4 +1,6 @@
using Microsoft.EntityFrameworkCore;
using System.Globalization;
using EFCore.NamingConventions.Internal;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities;
@ -15,7 +17,10 @@ internal class FilterListMaintainerTypeConfiguration : IEntityTypeConfiguration<
{
public virtual void Configure(EntityTypeBuilder<FilterListMaintainer> builder)
{
builder.ToTable(nameof(FilterListMaintainer) + "s");
// TODO: register and resolve INameRewriter
var nr = new SnakeCaseNameRewriter(CultureInfo.InvariantCulture);
builder.ToTable($"{nr.RewriteName(nameof(FilterListMaintainer))}s");
builder.HasKey(flm => new { flm.FilterListId, flm.MaintainerId });
builder.HasDataJsonFile<FilterListMaintainer>();
}

View file

@ -1,4 +1,6 @@
using Microsoft.EntityFrameworkCore;
using System.Globalization;
using EFCore.NamingConventions.Internal;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities;
@ -15,7 +17,10 @@ internal class FilterListSyntaxTypeConfiguration : IEntityTypeConfiguration<Filt
{
public virtual void Configure(EntityTypeBuilder<FilterListSyntax> builder)
{
builder.ToTable(nameof(FilterListSyntax) + "es");
// TODO: register and resolve INameRewriter
var nr = new SnakeCaseNameRewriter(CultureInfo.InvariantCulture);
builder.ToTable($"{nr.RewriteName(nameof(FilterListSyntax))}es");
builder.HasKey(fls => new { fls.FilterListId, fls.SyntaxId });
builder.HasDataJsonFile<FilterListSyntax>();
}

View file

@ -1,4 +1,6 @@
using Microsoft.EntityFrameworkCore;
using System.Globalization;
using EFCore.NamingConventions.Internal;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities;
@ -15,7 +17,10 @@ internal class FilterListTagTypeConfiguration : IEntityTypeConfiguration<FilterL
{
public virtual void Configure(EntityTypeBuilder<FilterListTag> builder)
{
builder.ToTable(nameof(FilterListTag) + "s");
// TODO: register and resolve INameRewriter
var nr = new SnakeCaseNameRewriter(CultureInfo.InvariantCulture);
builder.ToTable($"{nr.RewriteName(nameof(FilterListTag))}s");
builder.HasKey(flt => new { flt.FilterListId, flt.TagId });
builder.HasDataJsonFile<FilterListTag>();
}

View file

@ -1,4 +1,6 @@
using Microsoft.EntityFrameworkCore;
using System.Globalization;
using EFCore.NamingConventions.Internal;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities;
@ -17,7 +19,10 @@ internal class FilterListViewUrlConfiguration : IEntityTypeConfiguration<FilterL
{
public virtual void Configure(EntityTypeBuilder<FilterListViewUrl> builder)
{
builder.ToTable(nameof(FilterListViewUrl) + "s");
// TODO: register and resolve INameRewriter
var nr = new SnakeCaseNameRewriter(CultureInfo.InvariantCulture);
builder.ToTable($"{nr.RewriteName(nameof(FilterListViewUrl))}s");
builder.Property(u => u.SegmentNumber)
.HasDefaultValue(1);
builder.Property(u => u.Primariness)

View file

@ -1,4 +1,6 @@
using Microsoft.EntityFrameworkCore;
using System.Globalization;
using EFCore.NamingConventions.Internal;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities;
@ -15,7 +17,10 @@ internal class ForkTypeConfiguration : IEntityTypeConfiguration<Fork>
{
public virtual void Configure(EntityTypeBuilder<Fork> builder)
{
builder.ToTable(nameof(Fork) + "s");
// TODO: register and resolve INameRewriter
var nr = new SnakeCaseNameRewriter(CultureInfo.InvariantCulture);
builder.ToTable($"{nr.RewriteName(nameof(Fork))}s");
builder.HasKey(f => new { f.UpstreamFilterListId, f.ForkFilterListId });
builder.HasOne(f => f.UpstreamFilterList)
.WithMany(fl => fl.ForkFilterLists)

View file

@ -1,4 +1,6 @@
using Microsoft.EntityFrameworkCore;
using System.Globalization;
using EFCore.NamingConventions.Internal;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities;
@ -15,7 +17,10 @@ internal class MergeTypeConfiguration : IEntityTypeConfiguration<Merge>
{
public virtual void Configure(EntityTypeBuilder<Merge> builder)
{
builder.ToTable(nameof(Merge) + "s");
// TODO: register and resolve INameRewriter
var nr = new SnakeCaseNameRewriter(CultureInfo.InvariantCulture);
builder.ToTable($"{nr.RewriteName(nameof(Merge))}s");
builder.HasKey(m => new { m.IncludedInFilterListId, m.IncludesFilterListId });
builder.HasOne(m => m.IncludedInFilterList)
.WithMany(fl => fl.IncludesFilterLists)

View file

@ -1,4 +1,6 @@
using Microsoft.EntityFrameworkCore;
using System.Globalization;
using EFCore.NamingConventions.Internal;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities;
@ -15,7 +17,10 @@ internal class SoftwareSyntaxTypeConfiguration : IEntityTypeConfiguration<Softwa
{
public virtual void Configure(EntityTypeBuilder<SoftwareSyntax> builder)
{
builder.ToTable(nameof(SoftwareSyntax) + "es");
// TODO: register and resolve INameRewriter
var nr = new SnakeCaseNameRewriter(CultureInfo.InvariantCulture);
builder.ToTable($"{nr.RewriteName(nameof(SoftwareSyntax))}s");
builder.HasKey(ss => new { ss.SoftwareId, ss.SyntaxId });
builder.HasDataJsonFile<SoftwareSyntax>();
}