Added entity-model mappers

Added and applied field size constants
This commit is contained in:
2026-08-16 10:08:33 +02:00
parent f7b30f89ea
commit 109fa0602e
20 changed files with 350 additions and 31 deletions
@@ -1,3 +1,5 @@
using static PostFundManagement.Domain.Extensions.Constants;
namespace PostFundManagement.Domain.Configuration;
public sealed class AuditLog : IEntityTypeConfiguration<Entities.AuditLog>
@@ -7,9 +9,9 @@ public sealed class AuditLog : IEntityTypeConfiguration<Entities.AuditLog>
builder.ToTable(nameof(Entities.AuditLog).Pluralize());
builder.HasKey(pk => pk.Id);
builder.Property(f => f.EntityName).IsRequired().HasMaxLength(128);
builder.Property(f => f.EntityName).IsRequired().HasMaxLength(LabelLength);
builder.Property(f => f.EntityId).IsRequired();
builder.Property(f => f.Action).IsRequired().HasMaxLength(64);
builder.Property(f => f.Action).IsRequired().HasMaxLength(ShortLabelLength);
builder.Property(f => f.Changes).IsRequired(false).HasColumnType("jsonb");
builder.Property(f => f.PerformedBy).IsRequired();
builder.Property(f => f.Timestamp).IsRequired().HasDefaultValueSql("now()");
@@ -1,3 +1,5 @@
using static PostFundManagement.Domain.Extensions.Constants;
namespace PostFundManagement.Domain.Configuration;
public sealed class Beneficiary : IEntityTypeConfiguration<Entities.Beneficiary>
@@ -11,8 +13,8 @@ public sealed class Beneficiary : IEntityTypeConfiguration<Entities.Beneficiary>
builder.Property(f => f.CreatedBy).IsRequired();
builder.Property(f => f.UserId).IsRequired();
builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()");
builder.Property(f => f.Name).IsRequired().HasMaxLength(256);
builder.Property(f => f.Category).IsRequired().HasMaxLength(50);
builder.Property(f => f.Name).IsRequired().HasMaxLength(LabelLength);
builder.Property(f => f.Category).IsRequired().HasMaxLength(ShortLabelLength);
builder.Property(f => f.TargetCount).IsRequired();
builder.Property(f => f.ReachedCount).IsRequired();
builder.Property(f => f.Location).IsRequired();
@@ -1,3 +1,5 @@
using static PostFundManagement.Domain.Extensions.Constants;
namespace PostFundManagement.Domain.Configuration;
public sealed class Budget : IEntityTypeConfiguration<Entities.Budget>
@@ -12,7 +14,7 @@ public sealed class Budget : IEntityTypeConfiguration<Entities.Budget>
builder.Property(f => f.ApprovedBy).IsRequired(false);
builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()");
builder.Property(f => f.UpdatedAt).IsRequired(false);
builder.Property(f => f.Name).IsRequired().HasMaxLength(256);
builder.Property(f => f.Name).IsRequired().HasMaxLength(LabelLength);
builder.Property(f => f.Amount).IsRequired().HasPrecision(18, 2);
builder.HasOne(f => f.Project)
@@ -1,3 +1,5 @@
using static PostFundManagement.Domain.Extensions.Constants;
namespace PostFundManagement.Domain.Configuration;
public sealed class ChangeRequest : IEntityTypeConfiguration<Entities.ChangeRequest>
@@ -12,8 +14,8 @@ public sealed class ChangeRequest : IEntityTypeConfiguration<Entities.ChangeRequ
builder.Property(f => f.ApprovedBy).IsRequired(false);
builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()");
builder.Property(f => f.UpdatedAt).IsRequired(false);
builder.Property(f => f.Title).IsRequired().HasMaxLength(256);
builder.Property(f => f.Justification).IsRequired().HasMaxLength(1024);
builder.Property(f => f.Title).IsRequired().HasMaxLength(LabelLength);
builder.Property(f => f.Justification).IsRequired().HasMaxLength(TextLength);
builder.Property(f => f.RevisedBudget).IsRequired(false).HasPrecision(18, 2);
builder.Property(f => f.RevisedEndedAt).IsRequired(false);
builder.Property(f => f.Status).IsRequired().HasConversion<int>().HasDefaultValueSql("1");
@@ -1,3 +1,5 @@
using static PostFundManagement.Domain.Extensions.Constants;
namespace PostFundManagement.Domain.Configuration;
public sealed class ComplianceItem : IEntityTypeConfiguration<Entities.ComplianceItem>
@@ -12,8 +14,8 @@ public sealed class ComplianceItem : IEntityTypeConfiguration<Entities.Complianc
builder.Property(f => f.VerifiedBy).IsRequired(false);
builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()");
builder.Property(f => f.UpdatedAt).IsRequired(false);
builder.Property(f => f.Title).IsRequired().HasMaxLength(256);
builder.Property(f => f.Requirements).IsRequired().HasMaxLength(2048);
builder.Property(f => f.Title).IsRequired().HasMaxLength(LabelLength);
builder.Property(f => f.Requirements).IsRequired().HasMaxLength(MediumTextLength);
builder.Property(f => f.Status).IsRequired().HasConversion<int>().HasDefaultValueSql("1");
builder.HasOne(f => f.Project)
@@ -1,3 +1,5 @@
using static PostFundManagement.Domain.Extensions.Constants;
namespace PostFundManagement.Domain.Configuration;
public sealed class Indicator : IEntityTypeConfiguration<Entities.Indicator>
@@ -10,7 +12,7 @@ public sealed class Indicator : IEntityTypeConfiguration<Entities.Indicator>
builder.Property(f => f.ProjectId).IsRequired();
builder.Property(f => f.CreatedBy).IsRequired();
builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()");
builder.Property(f => f.Name).IsRequired().HasMaxLength(256);
builder.Property(f => f.Name).IsRequired().HasMaxLength(LabelLength);
builder.Property(f => f.UnitOfMeasure).IsRequired().HasConversion<int>().HasDefaultValueSql("2");
builder.Property(f => f.BaselineAmount).IsRequired().HasPrecision(18, 2);
builder.Property(f => f.TargetAmount).IsRequired().HasPrecision(18, 2);
@@ -1,3 +1,5 @@
using static PostFundManagement.Domain.Extensions.Constants;
namespace PostFundManagement.Domain.Configuration;
public sealed class Instrument : IEntityTypeConfiguration<Entities.Instrument>
@@ -7,9 +9,9 @@ public sealed class Instrument : IEntityTypeConfiguration<Entities.Instrument>
builder.ToTable(nameof(Entities.Instrument).Pluralize());
builder.HasKey(pk => pk.Id);
builder.Property(f => f.Code).IsRequired().HasMaxLength(50);
builder.Property(f => f.Name).IsRequired().HasMaxLength(256);
builder.Property(f => f.Description).IsRequired(false).HasMaxLength(1024);
builder.Property(f => f.Code).IsRequired().HasMaxLength(ShortLabelLength);
builder.Property(f => f.Name).IsRequired().HasMaxLength(LabelLength);
builder.Property(f => f.Description).IsRequired(false).HasMaxLength(TextLength);
builder.Property(f => f.Status).IsRequired().HasConversion<int>().HasDefaultValueSql("2");
builder.Property(f => f.CreatedBy).IsRequired();
builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()");
@@ -1,3 +1,5 @@
using static PostFundManagement.Domain.Extensions.Constants;
namespace PostFundManagement.Domain.Configuration;
public sealed class Issue : IEntityTypeConfiguration<Entities.Issue>
@@ -11,8 +13,8 @@ public sealed class Issue : IEntityTypeConfiguration<Entities.Issue>
builder.Property(f => f.CreatedBy).IsRequired();
builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()");
builder.Property(f => f.ResolvedAt).IsRequired(false);
builder.Property(f => f.Title).IsRequired().HasMaxLength(256);
builder.Property(f => f.Description).IsRequired().HasMaxLength(1024);
builder.Property(f => f.Title).IsRequired().HasMaxLength(LabelLength);
builder.Property(f => f.Description).IsRequired().HasMaxLength(TextLength);
builder.Property(f => f.Priority).IsRequired().HasConversion<int>().HasDefaultValueSql("1");
builder.Property(f => f.Status).IsRequired().HasConversion<int>().HasDefaultValueSql("1");
@@ -1,3 +1,5 @@
using static PostFundManagement.Domain.Extensions.Constants;
namespace PostFundManagement.Domain.Configuration;
public sealed class Milestone : IEntityTypeConfiguration<Entities.Milestone>
@@ -13,7 +15,7 @@ public sealed class Milestone : IEntityTypeConfiguration<Entities.Milestone>
builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()");
builder.Property(f => f.UpdatedAt).IsRequired(false);
builder.Property(f => f.DueAt).IsRequired();
builder.Property(f => f.Name).IsRequired().HasMaxLength(256);
builder.Property(f => f.Name).IsRequired().HasMaxLength(LabelLength);
builder.Property(f => f.Status).IsRequired().HasConversion<int>().HasDefaultValueSql("1");
builder.HasOne(f => f.Project)
@@ -1,3 +1,5 @@
using static PostFundManagement.Domain.Extensions.Constants;
namespace PostFundManagement.Domain.Configuration;
public sealed class Organisation : IEntityTypeConfiguration<Entities.Organisation>
@@ -9,9 +11,9 @@ public sealed class Organisation : IEntityTypeConfiguration<Entities.Organisatio
builder.HasKey(pk => pk.Id);
builder.Property(f => f.CreatedBy).IsRequired();
builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()");
builder.Property(f => f.RegistrationNo).IsRequired().HasMaxLength(256);
builder.Property(f => f.Name).IsRequired().HasMaxLength(256);
builder.Property(f => f.Email).IsRequired().HasMaxLength(256);
builder.Property(f => f.RegistrationNo).IsRequired().HasMaxLength(LabelLength);
builder.Property(f => f.Name).IsRequired().HasMaxLength(LabelLength);
builder.Property(f => f.Email).IsRequired().HasMaxLength(LabelLength);
builder.Property(f => f.Type).IsRequired().HasConversion<int>().HasDefaultValueSql("5");
builder.Property(f => f.Status).IsRequired().HasConversion<int>().HasDefaultValueSql("1");
@@ -1,3 +1,5 @@
using static PostFundManagement.Domain.Extensions.Constants;
namespace PostFundManagement.Domain.Configuration;
public sealed class Outcome : IEntityTypeConfiguration<Entities.Outcome>
@@ -10,8 +12,8 @@ public sealed class Outcome : IEntityTypeConfiguration<Entities.Outcome>
builder.Property(f => f.BeneficiaryId).IsRequired();
builder.Property(f => f.CreatedBy).IsRequired();
builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()");
builder.Property(f => f.Name).IsRequired().HasMaxLength(256);
builder.Property(f => f.Description).IsRequired().HasMaxLength(1024);
builder.Property(f => f.Name).IsRequired().HasMaxLength(LabelLength);
builder.Property(f => f.Description).IsRequired().HasMaxLength(TextLength);
builder.HasOne(f => f.Beneficiary)
.WithMany()
@@ -1,3 +1,5 @@
using static PostFundManagement.Domain.Extensions.Constants;
namespace PostFundManagement.Domain.Configuration;
public sealed class Portfolio : IEntityTypeConfiguration<Entities.Portfolio>
@@ -10,8 +12,8 @@ public sealed class Portfolio : IEntityTypeConfiguration<Entities.Portfolio>
builder.Property(f => f.CreatedBy).IsRequired();
builder.Property(f => f.OwnedBy).IsRequired();
builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()");
builder.Property(f => f.Name).IsRequired().HasMaxLength(256);
builder.Property(f => f.Description).IsRequired(false).HasMaxLength(1024);
builder.Property(f => f.Name).IsRequired().HasMaxLength(LabelLength);
builder.Property(f => f.Description).IsRequired(false).HasMaxLength(TextLength);
builder.HasOne(f => f.Creator)
.WithMany()
@@ -1,3 +1,5 @@
using static PostFundManagement.Domain.Extensions.Constants;
namespace PostFundManagement.Domain.Configuration;
public sealed class Programme : IEntityTypeConfiguration<Entities.Programme>
@@ -14,7 +16,7 @@ public sealed class Programme : IEntityTypeConfiguration<Entities.Programme>
builder.Property(f => f.UpdatedBy).IsRequired(false);
builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()");
builder.Property(f => f.UpdatedAt).IsRequired(false);
builder.Property(f => f.Name).IsRequired().HasMaxLength(256);
builder.Property(f => f.Name).IsRequired().HasMaxLength(LabelLength);
builder.Property(f => f.Status).IsRequired().HasConversion<int>().HasDefaultValueSql("1");
builder.HasOne(f => f.Portfolio)
@@ -1,3 +1,5 @@
using static PostFundManagement.Domain.Extensions.Constants;
namespace PostFundManagement.Domain.Configuration;
public sealed class Project : IEntityTypeConfiguration<Entities.Project>
@@ -14,8 +16,8 @@ public sealed class Project : IEntityTypeConfiguration<Entities.Project>
builder.Property(f => f.UpdatedAt).IsRequired(false);
builder.Property(f => f.StartedAt).IsRequired(false);
builder.Property(f => f.EndedAt).IsRequired(false);
builder.Property(f => f.Name).IsRequired().HasMaxLength(256);
builder.Property(f => f.Description).IsRequired().HasMaxLength(1024);
builder.Property(f => f.Name).IsRequired().HasMaxLength(LabelLength);
builder.Property(f => f.Description).IsRequired().HasMaxLength(TextLength);
builder.Property(f => f.Status).IsRequired().HasConversion<int>().HasDefaultValueSql("1");
builder.HasOne(f => f.Programme)
@@ -1,3 +1,5 @@
using static PostFundManagement.Domain.Extensions.Constants;
namespace PostFundManagement.Domain.Configuration;
public sealed class Risk : IEntityTypeConfiguration<Entities.Risk>
@@ -12,8 +14,8 @@ public sealed class Risk : IEntityTypeConfiguration<Entities.Risk>
builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()");
builder.Property(f => f.Likelihood).IsRequired().HasConversion<int>().HasDefaultValueSql("3");
builder.Property(f => f.Impact).IsRequired().HasConversion<int>().HasDefaultValueSql("1");
builder.Property(f => f.Name).IsRequired().HasMaxLength(256);
builder.Property(f => f.Description).IsRequired().HasMaxLength(1024);
builder.Property(f => f.Name).IsRequired().HasMaxLength(LabelLength);
builder.Property(f => f.Description).IsRequired().HasMaxLength(TextLength);
builder.HasOne(f => f.Project)
.WithMany()
@@ -1,3 +1,5 @@
using static PostFundManagement.Domain.Extensions.Constants;
namespace PostFundManagement.Domain.Configuration;
public sealed class Rule : IEntityTypeConfiguration<Entities.Rule>
@@ -12,7 +14,7 @@ public sealed class Rule : IEntityTypeConfiguration<Entities.Rule>
builder.Property(f => f.UpdatedBy).IsRequired(false);
builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()");
builder.Property(f => f.UpdatedAt).IsRequired(false);
builder.Property(f => f.Name).IsRequired().HasMaxLength(256);
builder.Property(f => f.Name).IsRequired().HasMaxLength(LabelLength);
builder.Property(f => f.Version).IsRequired().HasDefaultValue(1);
builder.Property(f => f.Status).IsRequired().HasConversion<int>().HasDefaultValueSql("2");
@@ -1,3 +1,5 @@
using static PostFundManagement.Domain.Extensions.Constants;
namespace PostFundManagement.Domain.Configuration;
public sealed class SiteVisit : IEntityTypeConfiguration<Entities.SiteVisit>
@@ -12,7 +14,7 @@ public sealed class SiteVisit : IEntityTypeConfiguration<Entities.SiteVisit>
builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()");
builder.Property(f => f.VisitedAt).IsRequired();
builder.Property(f => f.InspectorName).IsRequired();
builder.Property(f => f.Findings).IsRequired(false).HasMaxLength(4096);
builder.Property(f => f.Findings).IsRequired(false).HasMaxLength(LargeTextLength);
builder.Property(f => f.Status).IsRequired().HasConversion<int>().HasDefaultValueSql("1");
builder.HasOne(f => f.Project)
@@ -1,3 +1,5 @@
using static PostFundManagement.Domain.Extensions.Constants;
namespace PostFundManagement.Domain.Configuration;
public sealed class User : IEntityTypeConfiguration<Entities.User>
@@ -7,7 +9,7 @@ public sealed class User : IEntityTypeConfiguration<Entities.User>
builder.ToTable(nameof(Entities.User).Pluralize());
builder.HasKey(pk => pk.Id);
builder.Property(f => f.Email).IsRequired().HasMaxLength(256);
builder.Property(f => f.Email).IsRequired().HasMaxLength(LabelLength);
builder.Property(f => f.Status).IsRequired().HasConversion<int>().HasDefaultValueSql("2");
builder.Property(f => f.LastLoginAt).IsRequired(false);
}