diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Context/QueryDbContext.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Context/QueryDbContext.cs index d4e210368..7d49f6b68 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Context/QueryDbContext.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Context/QueryDbContext.cs @@ -27,6 +27,7 @@ public override Task SaveChangesAsync( protected override void OnModelCreating(ModelBuilder modelBuilder) { + modelBuilder.UseCollation("Latin1_General_100_CI_AS_SC"); modelBuilder.ApplyConfigurationsFromAssembly( GetType().Assembly, type => type.Namespace == typeof(FilterListTypeConfiguration).Namespace); diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Dependent.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Dependent.cs index 3be02abf9..4d3d266ed 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Dependent.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Dependent.cs @@ -5,10 +5,10 @@ namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities; public record Dependent { - public long DependencyFilterListId { get; init; } - public FilterList DependencyFilterList { get; init; } = default!; - public long DependentFilterListId { get; init; } - public FilterList DependentFilterList { get; init; } = default!; + public int DependencyFilterListId { get; init; } + public FilterList DependencyFilterList { get; init; } = null!; + public int DependentFilterListId { get; init; } + public FilterList DependentFilterList { get; init; } = null!; } internal class DependentTypeConfiguration : IEntityTypeConfiguration @@ -21,7 +21,8 @@ public virtual void Configure(EntityTypeBuilder builder) .HasForeignKey(d => d.DependencyFilterListId); builder.HasOne(d => d.DependentFilterList) .WithMany(fl => fl.DependencyFilterLists) - .HasForeignKey(d => d.DependentFilterListId); + .HasForeignKey(d => d.DependentFilterListId) + .OnDelete(DeleteBehavior.NoAction); builder.HasDataJsonFile(); } } \ No newline at end of file diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Entity.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Entity.cs deleted file mode 100644 index 7c8fa089b..000000000 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Entity.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities; - -public abstract record Entity -{ - public long Id { get; init; } -} \ No newline at end of file diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterList.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterList.cs index 0702586b2..98f0bcd36 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterList.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterList.cs @@ -3,16 +3,17 @@ namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities; -public record FilterList : Entity +public record FilterList { - public string Name { get; init; } = default!; + public int Id { get; init; } + public string Name { get; init; } = null!; public string? Description { get; init; } - public long LicenseId { get; init; } - public License License { get; init; } = default!; - public IEnumerable FilterListSyntaxes { get; init; } = new HashSet(); - public IEnumerable FilterListLanguages { get; init; } = new HashSet(); - public IEnumerable FilterListTags { get; init; } = new HashSet(); - public IEnumerable ViewUrls { get; init; } = new HashSet(); + public int LicenseId { get; init; } + public License License { get; init; } = null!; + public IEnumerable FilterListSyntaxes { get; init; } = new List(); + public IEnumerable FilterListLanguages { get; init; } = new List(); + public IEnumerable FilterListTags { get; init; } = new List(); + public IEnumerable ViewUrls { get; init; } = new List(); public Uri? HomeUrl { get; init; } public Uri? OnionUrl { get; init; } public Uri? PolicyUrl { get; init; } @@ -22,19 +23,21 @@ public record FilterList : Entity public Uri? ChatUrl { get; init; } public string? EmailAddress { get; init; } public Uri? DonateUrl { get; init; } - public IEnumerable FilterListMaintainers { get; init; } = new HashSet(); - public IEnumerable UpstreamFilterLists { get; init; } = new HashSet(); - public IEnumerable ForkFilterLists { get; init; } = new HashSet(); - public IEnumerable IncludedInFilterLists { get; init; } = new HashSet(); - public IEnumerable IncludesFilterLists { get; init; } = new HashSet(); - public IEnumerable DependencyFilterLists { get; init; } = new HashSet(); - public IEnumerable DependentFilterLists { get; init; } = new HashSet(); + public IEnumerable FilterListMaintainers { get; init; } = new List(); + public IEnumerable UpstreamFilterLists { get; init; } = new List(); + public IEnumerable ForkFilterLists { get; init; } = new List(); + public IEnumerable IncludedInFilterLists { get; init; } = new List(); + public IEnumerable IncludesFilterLists { get; init; } = new List(); + public IEnumerable DependencyFilterLists { get; init; } = new List(); + public IEnumerable DependentFilterLists { get; init; } = new List(); } internal class FilterListTypeConfiguration : IEntityTypeConfiguration { public virtual void Configure(EntityTypeBuilder builder) { + builder.Property(f => f.Name) + .HasMaxLength(256); builder.HasIndex(f => f.Name) .IsUnique(); builder.Property(f => f.LicenseId) @@ -42,6 +45,24 @@ public virtual void Configure(EntityTypeBuilder builder) builder.HasOne(f => f.License) .WithMany(l => l.FilterLists) .OnDelete(DeleteBehavior.Restrict); + builder.Property(f => f.HomeUrl) + .HasMaxLength(512); + builder.Property(f => f.OnionUrl) + .HasMaxLength(512); + builder.Property(f => f.PolicyUrl) + .HasMaxLength(512); + builder.Property(f => f.SubmissionUrl) + .HasMaxLength(512); + builder.Property(f => f.IssuesUrl) + .HasMaxLength(512); + builder.Property(f => f.ForumUrl) + .HasMaxLength(512); + builder.Property(f => f.ChatUrl) + .HasMaxLength(512); + builder.Property(f => f.EmailAddress) + .HasMaxLength(256); + builder.Property(f => f.DonateUrl) + .HasMaxLength(512); builder.OwnsMany( f => f.ViewUrls, b => @@ -50,6 +71,8 @@ public virtual void Configure(EntityTypeBuilder builder) .HasDefaultValue(1); b.Property(u => u.Primariness) .HasDefaultValue(1); + b.Property(u => u.Url) + .HasMaxLength(512); b.HasIndex(u => new { u.FilterListId, u.SegmentNumber, u.Primariness }) .IsUnique(); b.HasDataJsonFile(); diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterListLanguage.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterListLanguage.cs index 46275e725..1d2f3d932 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterListLanguage.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterListLanguage.cs @@ -5,10 +5,10 @@ namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities; public record FilterListLanguage { - public long FilterListId { get; init; } - public FilterList FilterList { get; init; } = default!; - public long LanguageId { get; init; } - public Language Language { get; init; } = default!; + public int FilterListId { get; init; } + public FilterList FilterList { get; init; } = null!; + public short LanguageId { get; init; } + public Language Language { get; init; } = null!; } internal class FilterListLanguageTypeConfiguration : IEntityTypeConfiguration diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterListMaintainer.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterListMaintainer.cs index 8769d8e8d..fee8e2634 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterListMaintainer.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterListMaintainer.cs @@ -5,10 +5,10 @@ namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities; public record FilterListMaintainer { - public long FilterListId { get; init; } - public FilterList FilterList { get; init; } = default!; - public long MaintainerId { get; init; } - public Maintainer Maintainer { get; init; } = default!; + public int FilterListId { get; init; } + public FilterList FilterList { get; init; } = null!; + public int MaintainerId { get; init; } + public Maintainer Maintainer { get; init; } = null!; } internal class FilterListMaintainerTypeConfiguration : IEntityTypeConfiguration diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterListSyntax.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterListSyntax.cs index f984ff38f..75552655e 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterListSyntax.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterListSyntax.cs @@ -5,10 +5,10 @@ namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities; public record FilterListSyntax { - public long FilterListId { get; init; } - public FilterList FilterList { get; init; } = default!; - public long SyntaxId { get; init; } - public Syntax Syntax { get; init; } = default!; + public int FilterListId { get; init; } + public FilterList FilterList { get; init; } = null!; + public short SyntaxId { get; init; } + public Syntax Syntax { get; init; } = null!; } internal class FilterListSyntaxTypeConfiguration : IEntityTypeConfiguration diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterListTag.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterListTag.cs index 4577b7502..7771ae31a 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterListTag.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterListTag.cs @@ -5,10 +5,10 @@ namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities; public record FilterListTag { - public long FilterListId { get; init; } - public FilterList FilterList { get; init; } = default!; - public long TagId { get; init; } - public Tag Tag { get; init; } = default!; + public int FilterListId { get; init; } + public FilterList FilterList { get; init; } = null!; + public int TagId { get; init; } + public Tag Tag { get; init; } = null!; } internal class FilterListTagTypeConfiguration : IEntityTypeConfiguration diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterListViewUrl.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterListViewUrl.cs index cf389aa89..49d918f3f 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterListViewUrl.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterListViewUrl.cs @@ -1,10 +1,11 @@ namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities; -public record FilterListViewUrl : Entity +public record FilterListViewUrl { - public long FilterListId { get; init; } - public FilterList FilterList { get; init; } = default!; + public int Id { get; init; } + public int FilterListId { get; init; } + public FilterList FilterList { get; init; } = null!; public short SegmentNumber { get; init; } public short Primariness { get; init; } - public Uri Url { get; init; } = default!; + public Uri Url { get; init; } = null!; } \ No newline at end of file diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Fork.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Fork.cs index 16fc98ad4..55de65e39 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Fork.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Fork.cs @@ -5,10 +5,10 @@ namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities; public record Fork { - public long UpstreamFilterListId { get; init; } - public FilterList UpstreamFilterList { get; init; } = default!; - public long ForkFilterListId { get; init; } - public FilterList ForkFilterList { get; init; } = default!; + public int UpstreamFilterListId { get; init; } + public FilterList UpstreamFilterList { get; init; } = null!; + public int ForkFilterListId { get; init; } + public FilterList ForkFilterList { get; init; } = null!; } internal class ForkTypeConfiguration : IEntityTypeConfiguration @@ -21,7 +21,8 @@ public virtual void Configure(EntityTypeBuilder builder) .HasForeignKey(f => f.UpstreamFilterListId); builder.HasOne(f => f.ForkFilterList) .WithMany(fl => fl.UpstreamFilterLists) - .HasForeignKey(f => f.ForkFilterListId); + .HasForeignKey(f => f.ForkFilterListId) + .OnDelete(DeleteBehavior.NoAction); builder.HasDataJsonFile(); } } \ No newline at end of file diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Language.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Language.cs index 9e44680ee..2674f6ac5 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Language.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Language.cs @@ -3,11 +3,12 @@ namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities; -public record Language : Entity +public record Language { - public string Iso6391 { get; init; } = default!; - public string Name { get; init; } = default!; - public IEnumerable FilterListLanguages { get; init; } = new HashSet(); + public short Id { get; init; } + public string Iso6391 { get; init; } = null!; + public string Name { get; init; } = null!; + public IEnumerable FilterListLanguages { get; init; } = new List(); } internal class LanguageTypeConfiguration : IEntityTypeConfiguration @@ -19,6 +20,8 @@ public virtual void Configure(EntityTypeBuilder builder) .HasMaxLength(2); builder.HasIndex(l => l.Iso6391) .IsUnique(); + builder.Property(l => l.Name) + .HasMaxLength(64); builder.HasIndex(l => l.Name) .IsUnique(); builder.HasDataJsonFile(); diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/License.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/License.cs index 3abdbf8ec..36f50d2bc 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/License.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/License.cs @@ -3,22 +3,27 @@ namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities; -public record License : Entity +public record License { - public string Name { get; init; } = default!; + public int Id { get; init; } + public string Name { get; init; } = null!; public Uri? Url { get; init; } public bool PermitsModification { get; init; } public bool PermitsDistribution { get; init; } public bool PermitsCommercialUse { get; init; } - public IEnumerable FilterLists { get; init; } = new HashSet(); + public IEnumerable FilterLists { get; init; } = new List(); } internal class LicenseTypeConfiguration : IEntityTypeConfiguration { public virtual void Configure(EntityTypeBuilder builder) { + builder.Property(l => l.Name) + .HasMaxLength(64); builder.HasIndex(l => l.Name) .IsUnique(); + builder.Property(l => l.Url) + .HasMaxLength(512); builder.Property(l => l.PermitsModification) .HasDefaultValue(false); builder.Property(l => l.PermitsDistribution) diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Maintainer.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Maintainer.cs index 17c64d82b..451441e2e 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Maintainer.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Maintainer.cs @@ -3,21 +3,30 @@ namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities; -public record Maintainer : Entity +public record Maintainer { - public string Name { get; init; } = default!; + public int Id { get; init; } + public string Name { get; init; } = null!; public Uri? Url { get; init; } public string? EmailAddress { get; init; } public string? TwitterHandle { get; init; } - public IEnumerable FilterListMaintainers { get; init; } = new HashSet(); + public IEnumerable FilterListMaintainers { get; init; } = new List(); } internal class MaintainerTypeConfiguration : IEntityTypeConfiguration { public virtual void Configure(EntityTypeBuilder builder) { + builder.Property(m => m.Name) + .HasMaxLength(64); builder.HasIndex(m => m.Name) .IsUnique(); + builder.Property(m => m.Url) + .HasMaxLength(512); + builder.Property(m => m.EmailAddress) + .HasMaxLength(256); + builder.Property(m => m.TwitterHandle) + .HasMaxLength(32); builder.HasDataJsonFile(); } } \ No newline at end of file diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Merge.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Merge.cs index 3ade4b6ee..9ab2510cf 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Merge.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Merge.cs @@ -5,10 +5,10 @@ namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities; public record Merge { - public long IncludedInFilterListId { get; init; } - public FilterList IncludedInFilterList { get; init; } = default!; - public long IncludesFilterListId { get; init; } - public FilterList IncludesFilterList { get; init; } = default!; + public int IncludedInFilterListId { get; init; } + public FilterList IncludedInFilterList { get; init; } = null!; + public int IncludesFilterListId { get; init; } + public FilterList IncludesFilterList { get; init; } = null!; } internal class MergeTypeConfiguration : IEntityTypeConfiguration @@ -21,7 +21,8 @@ public virtual void Configure(EntityTypeBuilder builder) .HasForeignKey(m => m.IncludedInFilterListId); builder.HasOne(m => m.IncludesFilterList) .WithMany(fl => fl.IncludedInFilterLists) - .HasForeignKey(m => m.IncludesFilterListId); + .HasForeignKey(m => m.IncludesFilterListId) + .OnDelete(DeleteBehavior.NoAction); builder.HasDataJsonFile(); } } \ No newline at end of file diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Software.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Software.cs index b39478c99..d3a8a7714 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Software.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Software.cs @@ -3,22 +3,29 @@ namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities; -public record Software : Entity +public record Software { - public string Name { get; init; } = default!; + public short Id { get; init; } + public string Name { get; init; } = null!; public string? Description { get; init; } public Uri? HomeUrl { get; init; } public Uri? DownloadUrl { get; init; } public bool SupportsAbpUrlScheme { get; init; } - public IEnumerable SoftwareSyntaxes { get; init; } = new HashSet(); + public IEnumerable SoftwareSyntaxes { get; init; } = new List(); } internal class SoftwareTypeConfiguration : IEntityTypeConfiguration { public virtual void Configure(EntityTypeBuilder builder) { + builder.Property(s => s.Name) + .HasMaxLength(64); builder.HasIndex(s => s.Name) .IsUnique(); + builder.Property(s => s.HomeUrl) + .HasMaxLength(512); + builder.Property(s => s.DownloadUrl) + .HasMaxLength(512); builder.Property(s => s.SupportsAbpUrlScheme) .HasDefaultValue(false); builder.HasDataJsonFile(); diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/SoftwareSyntax.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/SoftwareSyntax.cs index 1af337dcc..b3326153e 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/SoftwareSyntax.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/SoftwareSyntax.cs @@ -5,10 +5,10 @@ namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities; public record SoftwareSyntax { - public long SoftwareId { get; init; } - public Software Software { get; init; } = default!; - public long SyntaxId { get; init; } - public Syntax Syntax { get; init; } = default!; + public short SoftwareId { get; init; } + public Software Software { get; init; } = null!; + public short SyntaxId { get; init; } + public Syntax Syntax { get; init; } = null!; } internal class SoftwareSyntaxTypeConfiguration : IEntityTypeConfiguration diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Syntax.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Syntax.cs index dd70fac6c..f32ecc035 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Syntax.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Syntax.cs @@ -3,21 +3,26 @@ namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities; -public record Syntax : Entity +public record Syntax { - public string Name { get; init; } = default!; + public short Id { get; init; } + public string Name { get; init; } = null!; public string? Description { get; init; } public Uri? Url { get; init; } - public IEnumerable FilterListSyntaxes { get; init; } = new HashSet(); - public IEnumerable SoftwareSyntaxes { get; init; } = new HashSet(); + public IEnumerable FilterListSyntaxes { get; init; } = new List(); + public IEnumerable SoftwareSyntaxes { get; init; } = new List(); } internal class SyntaxTypeConfiguration : IEntityTypeConfiguration { public virtual void Configure(EntityTypeBuilder builder) { + builder.Property(s => s.Name) + .HasMaxLength(64); builder.HasIndex(s => s.Name) .IsUnique(); + builder.Property(s => s.Url) + .HasMaxLength(512); builder.HasDataJsonFile(); } } \ No newline at end of file diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Tag.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Tag.cs index 04349024a..25ea916bb 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Tag.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Tag.cs @@ -3,17 +3,20 @@ namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities; -public record Tag : Entity +public record Tag { - public string Name { get; init; } = default!; + public int Id { get; init; } + public string Name { get; init; } = null!; public string? Description { get; init; } - public IEnumerable FilterListTags { get; init; } = new HashSet(); + public IEnumerable FilterListTags { get; init; } = new List(); } internal class TagTypeConfiguration : IEntityTypeConfiguration { public virtual void Configure(EntityTypeBuilder builder) { + builder.Property(t => t.Name) + .HasMaxLength(32); builder.HasIndex(t => t.Name) .IsUnique(); builder.HasDataJsonFile();