diff --git a/PostFundManagement.Infrastructure/Database/Migrations/20260816082045_StandardisedFieldSizes.Designer.cs b/PostFundManagement.Infrastructure/Database/Migrations/20260816082045_StandardisedFieldSizes.Designer.cs
new file mode 100644
index 0000000..e801bea
--- /dev/null
+++ b/PostFundManagement.Infrastructure/Database/Migrations/20260816082045_StandardisedFieldSizes.Designer.cs
@@ -0,0 +1,1624 @@
+//
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+using PostFundManagement.Infrastructure.Database;
+
+#nullable disable
+
+namespace PostFundManagement.Infrastructure.Database.Migrations
+{
+ [DbContext(typeof(ApplicationDbContext))]
+ [Migration("20260816082045_StandardisedFieldSizes")]
+ partial class StandardisedFieldSizes
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "10.0.11")
+ .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+ NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.AuditLog", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Action")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("character varying(100)");
+
+ b.PrimitiveCollection("Changes")
+ .HasColumnType("jsonb");
+
+ b.Property("EntityId")
+ .HasColumnType("bigint");
+
+ b.Property("EntityName")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("PerformedBy")
+ .HasColumnType("uuid");
+
+ b.Property("Timestamp")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("timestamp with time zone")
+ .HasDefaultValueSql("now()");
+
+ b.HasKey("Id");
+
+ b.HasIndex("PerformedBy");
+
+ b.ToTable("AuditLogs", (string)null);
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Award", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Amount")
+ .HasPrecision(18, 2)
+ .HasColumnType("numeric(18,2)");
+
+ b.Property("ApprovedBy")
+ .HasColumnType("uuid");
+
+ b.Property("CreatedAt")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("timestamp with time zone")
+ .HasDefaultValueSql("now()");
+
+ b.Property("CreatedBy")
+ .HasColumnType("uuid");
+
+ b.Property("OrganisationId")
+ .HasColumnType("bigint");
+
+ b.Property("ProgrammeId")
+ .HasColumnType("bigint");
+
+ b.Property("ProjectId")
+ .HasColumnType("bigint");
+
+ b.Property("Status")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasDefaultValueSql("1");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("UpdatedBy")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ApprovedBy");
+
+ b.HasIndex("CreatedBy");
+
+ b.HasIndex("OrganisationId");
+
+ b.HasIndex("ProgrammeId");
+
+ b.HasIndex("ProjectId");
+
+ b.HasIndex("UpdatedBy");
+
+ b.ToTable("Awards", (string)null);
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Beneficiary", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Category")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("character varying(100)");
+
+ b.Property("CreatedAt")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("timestamp with time zone")
+ .HasDefaultValueSql("now()");
+
+ b.Property("CreatedBy")
+ .HasColumnType("uuid");
+
+ b.Property("Location")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("ProjectId")
+ .HasColumnType("bigint");
+
+ b.Property("ReachedCount")
+ .HasColumnType("integer");
+
+ b.Property("TargetCount")
+ .HasColumnType("integer");
+
+ b.Property("UserId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreatedBy");
+
+ b.HasIndex("ProjectId");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Beneficiaries", (string)null);
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Budget", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Amount")
+ .HasPrecision(18, 2)
+ .HasColumnType("numeric(18,2)");
+
+ b.Property("ApprovedBy")
+ .HasColumnType("uuid");
+
+ b.Property("CreatedAt")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("timestamp with time zone")
+ .HasDefaultValueSql("now()");
+
+ b.Property("CreatedBy")
+ .HasColumnType("uuid");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("ProjectId")
+ .HasColumnType("bigint");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ApprovedBy");
+
+ b.HasIndex("CreatedBy");
+
+ b.HasIndex("ProjectId");
+
+ b.ToTable("Budgets", (string)null);
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.ChangeRequest", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("ApprovedBy")
+ .HasColumnType("uuid");
+
+ b.Property("CreatedAt")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("timestamp with time zone")
+ .HasDefaultValueSql("now()");
+
+ b.Property("CreatedBy")
+ .HasColumnType("uuid");
+
+ b.Property("Justification")
+ .IsRequired()
+ .HasMaxLength(1024)
+ .HasColumnType("character varying(1024)");
+
+ b.Property("ProjectId")
+ .HasColumnType("bigint");
+
+ b.Property("RevisedBudget")
+ .HasPrecision(18, 2)
+ .HasColumnType("numeric(18,2)");
+
+ b.Property("RevisedEndedAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Status")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasDefaultValueSql("1");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ApprovedBy");
+
+ b.HasIndex("CreatedBy");
+
+ b.HasIndex("ProjectId");
+
+ b.ToTable("ChangeRequests", (string)null);
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.ComplianceItem", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("CreatedAt")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("timestamp with time zone")
+ .HasDefaultValueSql("now()");
+
+ b.Property("CreatedBy")
+ .HasColumnType("uuid");
+
+ b.Property("ProjectId")
+ .HasColumnType("bigint");
+
+ b.Property("Requirements")
+ .IsRequired()
+ .HasMaxLength(2048)
+ .HasColumnType("character varying(2048)");
+
+ b.Property("Status")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasDefaultValueSql("1");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("VerifiedBy")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreatedBy");
+
+ b.HasIndex("ProjectId");
+
+ b.HasIndex("VerifiedBy");
+
+ b.ToTable("ComplianceItems", (string)null);
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Contract", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("AwardId")
+ .HasColumnType("bigint");
+
+ b.Property("CreatedAt")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("timestamp with time zone")
+ .HasDefaultValueSql("now()");
+
+ b.Property("CreatedBy")
+ .HasColumnType("uuid");
+
+ b.Property("EffectiveAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("ExpiresAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("ExternalSignatureId")
+ .HasColumnType("text");
+
+ b.Property("SignedDocumentUrl")
+ .HasColumnType("text");
+
+ b.Property("Status")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasDefaultValueSql("1");
+
+ b.Property("TotalValue")
+ .HasPrecision(18, 2)
+ .HasColumnType("numeric(18,2)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("AwardId")
+ .IsUnique();
+
+ b.HasIndex("CreatedBy");
+
+ b.ToTable("Contracts", (string)null);
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Disbursement", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Amount")
+ .HasPrecision(18, 2)
+ .HasColumnType("numeric(18,2)");
+
+ b.Property("CreatedAt")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("timestamp with time zone")
+ .HasDefaultValueSql("now()");
+
+ b.Property("CreatedBy")
+ .HasColumnType("uuid");
+
+ b.Property("MilestoneId")
+ .HasColumnType("bigint");
+
+ b.Property("ProjectId")
+ .HasColumnType("bigint");
+
+ b.Property("Status")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasDefaultValueSql("1");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("UpdatedBy")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreatedBy");
+
+ b.HasIndex("MilestoneId");
+
+ b.HasIndex("ProjectId");
+
+ b.HasIndex("UpdatedBy");
+
+ b.ToTable("Disbursements", (string)null);
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Evidence", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("CreatedAt")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("timestamp with time zone")
+ .HasDefaultValueSql("now()");
+
+ b.Property("CreatedBy")
+ .HasColumnType("uuid");
+
+ b.Property("DocumentUrl")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("IndicatorId")
+ .HasColumnType("bigint");
+
+ b.Property("MilestoneId")
+ .HasColumnType("bigint");
+
+ b.Property("ProjectId")
+ .HasColumnType("bigint");
+
+ b.Property("Status")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasDefaultValueSql("1");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("UpdatedBy")
+ .HasColumnType("uuid");
+
+ b.Property("Version")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasDefaultValue(1);
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreatedBy");
+
+ b.HasIndex("IndicatorId");
+
+ b.HasIndex("MilestoneId");
+
+ b.HasIndex("ProjectId");
+
+ b.HasIndex("UpdatedBy");
+
+ b.ToTable("Evidences", (string)null);
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Indicator", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("ActualAmount")
+ .HasPrecision(18, 2)
+ .HasColumnType("numeric(18,2)");
+
+ b.Property("BaselineAmount")
+ .HasPrecision(18, 2)
+ .HasColumnType("numeric(18,2)");
+
+ b.Property("CreatedAt")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("timestamp with time zone")
+ .HasDefaultValueSql("now()");
+
+ b.Property("CreatedBy")
+ .HasColumnType("uuid");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("ProjectId")
+ .HasColumnType("bigint");
+
+ b.Property("TargetAmount")
+ .HasPrecision(18, 2)
+ .HasColumnType("numeric(18,2)");
+
+ b.Property("UnitOfMeasure")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasDefaultValueSql("2");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreatedBy");
+
+ b.HasIndex("ProjectId");
+
+ b.ToTable("Indicators", (string)null);
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Instrument", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Code")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("character varying(100)");
+
+ b.Property("CreatedAt")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("timestamp with time zone")
+ .HasDefaultValueSql("now()");
+
+ b.Property("CreatedBy")
+ .HasColumnType("uuid");
+
+ b.Property("Description")
+ .HasMaxLength(1024)
+ .HasColumnType("character varying(1024)");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("Status")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasDefaultValueSql("2");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreatedBy");
+
+ b.ToTable("Instruments", (string)null);
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Issue", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("CreatedAt")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("timestamp with time zone")
+ .HasDefaultValueSql("now()");
+
+ b.Property("CreatedBy")
+ .HasColumnType("uuid");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasMaxLength(1024)
+ .HasColumnType("character varying(1024)");
+
+ b.Property("Priority")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasDefaultValueSql("1");
+
+ b.Property("ProjectId")
+ .HasColumnType("bigint");
+
+ b.Property("ResolvedAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Status")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasDefaultValueSql("1");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreatedBy");
+
+ b.HasIndex("ProjectId");
+
+ b.ToTable("Issues", (string)null);
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Milestone", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("CreatedAt")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("timestamp with time zone")
+ .HasDefaultValueSql("now()");
+
+ b.Property("CreatedBy")
+ .HasColumnType("uuid");
+
+ b.Property("DueAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("ProjectId")
+ .HasColumnType("bigint");
+
+ b.Property("Status")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasDefaultValueSql("1");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("UpdatedBy")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreatedBy");
+
+ b.HasIndex("ProjectId");
+
+ b.HasIndex("UpdatedBy");
+
+ b.ToTable("Milestones", (string)null);
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Organisation", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("CreatedAt")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("timestamp with time zone")
+ .HasDefaultValueSql("now()");
+
+ b.Property("CreatedBy")
+ .HasColumnType("uuid");
+
+ b.Property("Email")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("RegistrationNo")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("Status")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasDefaultValueSql("1");
+
+ b.Property("Type")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasDefaultValueSql("5");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreatedBy");
+
+ b.ToTable("Organisations", (string)null);
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Outcome", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("BeneficiaryId")
+ .HasColumnType("bigint");
+
+ b.Property("CreatedAt")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("timestamp with time zone")
+ .HasDefaultValueSql("now()");
+
+ b.Property("CreatedBy")
+ .HasColumnType("uuid");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasMaxLength(1024)
+ .HasColumnType("character varying(1024)");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("BeneficiaryId");
+
+ b.HasIndex("CreatedBy");
+
+ b.ToTable("Outcomes", (string)null);
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Portfolio", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("CreatedAt")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("timestamp with time zone")
+ .HasDefaultValueSql("now()");
+
+ b.Property("CreatedBy")
+ .HasColumnType("uuid");
+
+ b.Property("Description")
+ .HasMaxLength(1024)
+ .HasColumnType("character varying(1024)");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("OwnedBy")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreatedBy");
+
+ b.HasIndex("OwnedBy");
+
+ b.ToTable("Portfolios", (string)null);
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Programme", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("CreatedAt")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("timestamp with time zone")
+ .HasDefaultValueSql("now()");
+
+ b.Property("CreatedBy")
+ .HasColumnType("uuid");
+
+ b.Property("InstrumentId")
+ .HasColumnType("bigint");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("OwnedBy")
+ .HasColumnType("uuid");
+
+ b.Property("PortfolioId")
+ .HasColumnType("bigint");
+
+ b.Property("Status")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasDefaultValueSql("1");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("UpdatedBy")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreatedBy");
+
+ b.HasIndex("InstrumentId");
+
+ b.HasIndex("OwnedBy");
+
+ b.HasIndex("PortfolioId");
+
+ b.ToTable("Programmes", (string)null);
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Project", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("CreatedAt")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("timestamp with time zone")
+ .HasDefaultValueSql("now()");
+
+ b.Property("CreatedBy")
+ .HasColumnType("uuid");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasMaxLength(1024)
+ .HasColumnType("character varying(1024)");
+
+ b.Property("EndedAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("ProgrammeId")
+ .HasColumnType("bigint");
+
+ b.Property("StartedAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Status")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasDefaultValueSql("1");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("UpdatedBy")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreatedBy");
+
+ b.HasIndex("ProgrammeId");
+
+ b.HasIndex("UpdatedBy");
+
+ b.ToTable("Projects", (string)null);
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Risk", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("CreatedAt")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("timestamp with time zone")
+ .HasDefaultValueSql("now()");
+
+ b.Property("CreatedBy")
+ .HasColumnType("uuid");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasMaxLength(1024)
+ .HasColumnType("character varying(1024)");
+
+ b.Property("Impact")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasDefaultValueSql("1");
+
+ b.Property("Likelihood")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasDefaultValueSql("3");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("ProjectId")
+ .HasColumnType("bigint");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreatedBy");
+
+ b.HasIndex("ProjectId");
+
+ b.ToTable("Risks", (string)null);
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Rule", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("CreatedAt")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("timestamp with time zone")
+ .HasDefaultValueSql("now()");
+
+ b.Property("CreatedBy")
+ .HasColumnType("uuid");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("ProgrammeId")
+ .HasColumnType("bigint");
+
+ b.Property("Status")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasDefaultValueSql("2");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("UpdatedBy")
+ .HasColumnType("uuid");
+
+ b.Property("Version")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasDefaultValue(1);
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreatedBy");
+
+ b.HasIndex("ProgrammeId");
+
+ b.HasIndex("UpdatedBy");
+
+ b.ToTable("Rules", (string)null);
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.SiteVisit", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("CreatedAt")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("timestamp with time zone")
+ .HasDefaultValueSql("now()");
+
+ b.Property("CreatedBy")
+ .HasColumnType("uuid");
+
+ b.Property("Findings")
+ .HasMaxLength(4096)
+ .HasColumnType("character varying(4096)");
+
+ b.Property("InspectorName")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("ProjectId")
+ .HasColumnType("bigint");
+
+ b.Property("Status")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasDefaultValueSql("1");
+
+ b.Property("VisitedAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreatedBy");
+
+ b.HasIndex("ProjectId");
+
+ b.ToTable("SiteVisits", (string)null);
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.User", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("Email")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("LastLoginAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Status")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasDefaultValueSql("2");
+
+ b.HasKey("Id");
+
+ b.ToTable("Users", (string)null);
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.AuditLog", b =>
+ {
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Performer")
+ .WithMany()
+ .HasForeignKey("PerformedBy")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Performer");
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Award", b =>
+ {
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Approver")
+ .WithMany()
+ .HasForeignKey("ApprovedBy")
+ .OnDelete(DeleteBehavior.NoAction);
+
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Creator")
+ .WithMany()
+ .HasForeignKey("CreatedBy")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.Organisation", "Organisation")
+ .WithMany()
+ .HasForeignKey("OrganisationId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.Programme", "Programme")
+ .WithMany("Awards")
+ .HasForeignKey("ProgrammeId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.Project", "Project")
+ .WithMany("Awards")
+ .HasForeignKey("ProjectId")
+ .OnDelete(DeleteBehavior.SetNull);
+
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Updator")
+ .WithMany()
+ .HasForeignKey("UpdatedBy")
+ .OnDelete(DeleteBehavior.NoAction);
+
+ b.Navigation("Approver");
+
+ b.Navigation("Creator");
+
+ b.Navigation("Organisation");
+
+ b.Navigation("Programme");
+
+ b.Navigation("Project");
+
+ b.Navigation("Updator");
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Beneficiary", b =>
+ {
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Creator")
+ .WithMany()
+ .HasForeignKey("CreatedBy")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.Project", "Project")
+ .WithMany()
+ .HasForeignKey("ProjectId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.User", "User")
+ .WithMany()
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.Navigation("Creator");
+
+ b.Navigation("Project");
+
+ b.Navigation("User");
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Budget", b =>
+ {
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Approver")
+ .WithMany()
+ .HasForeignKey("ApprovedBy")
+ .OnDelete(DeleteBehavior.NoAction);
+
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Creator")
+ .WithMany()
+ .HasForeignKey("CreatedBy")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.Project", "Project")
+ .WithMany()
+ .HasForeignKey("ProjectId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Approver");
+
+ b.Navigation("Creator");
+
+ b.Navigation("Project");
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.ChangeRequest", b =>
+ {
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Approver")
+ .WithMany()
+ .HasForeignKey("ApprovedBy")
+ .OnDelete(DeleteBehavior.NoAction);
+
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Creator")
+ .WithMany()
+ .HasForeignKey("CreatedBy")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.Project", "Project")
+ .WithMany()
+ .HasForeignKey("ProjectId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Approver");
+
+ b.Navigation("Creator");
+
+ b.Navigation("Project");
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.ComplianceItem", b =>
+ {
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Creator")
+ .WithMany()
+ .HasForeignKey("CreatedBy")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.Project", "Project")
+ .WithMany()
+ .HasForeignKey("ProjectId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Verifier")
+ .WithMany()
+ .HasForeignKey("VerifiedBy")
+ .OnDelete(DeleteBehavior.NoAction);
+
+ b.Navigation("Creator");
+
+ b.Navigation("Project");
+
+ b.Navigation("Verifier");
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Contract", b =>
+ {
+ b.HasOne("PostFundManagement.Domain.Entities.Award", "Award")
+ .WithOne("Contract")
+ .HasForeignKey("PostFundManagement.Domain.Entities.Contract", "AwardId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Creator")
+ .WithMany()
+ .HasForeignKey("CreatedBy")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.Navigation("Award");
+
+ b.Navigation("Creator");
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Disbursement", b =>
+ {
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Creator")
+ .WithMany()
+ .HasForeignKey("CreatedBy")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.Milestone", "Milestone")
+ .WithMany()
+ .HasForeignKey("MilestoneId")
+ .OnDelete(DeleteBehavior.Restrict);
+
+ b.HasOne("PostFundManagement.Domain.Entities.Project", "Project")
+ .WithMany()
+ .HasForeignKey("ProjectId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Updator")
+ .WithMany()
+ .HasForeignKey("UpdatedBy")
+ .OnDelete(DeleteBehavior.NoAction);
+
+ b.Navigation("Creator");
+
+ b.Navigation("Milestone");
+
+ b.Navigation("Project");
+
+ b.Navigation("Updator");
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Evidence", b =>
+ {
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Creator")
+ .WithMany()
+ .HasForeignKey("CreatedBy")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.Indicator", "Indicator")
+ .WithMany()
+ .HasForeignKey("IndicatorId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.Milestone", "Milestone")
+ .WithMany()
+ .HasForeignKey("MilestoneId")
+ .OnDelete(DeleteBehavior.Restrict);
+
+ b.HasOne("PostFundManagement.Domain.Entities.Project", "Project")
+ .WithMany()
+ .HasForeignKey("ProjectId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Updator")
+ .WithMany()
+ .HasForeignKey("UpdatedBy")
+ .OnDelete(DeleteBehavior.NoAction);
+
+ b.Navigation("Creator");
+
+ b.Navigation("Indicator");
+
+ b.Navigation("Milestone");
+
+ b.Navigation("Project");
+
+ b.Navigation("Updator");
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Indicator", b =>
+ {
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Creator")
+ .WithMany()
+ .HasForeignKey("CreatedBy")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.Project", "Project")
+ .WithMany()
+ .HasForeignKey("ProjectId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Creator");
+
+ b.Navigation("Project");
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Instrument", b =>
+ {
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Creator")
+ .WithMany()
+ .HasForeignKey("CreatedBy")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.Navigation("Creator");
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Issue", b =>
+ {
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Creator")
+ .WithMany()
+ .HasForeignKey("CreatedBy")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.Project", "Project")
+ .WithMany()
+ .HasForeignKey("ProjectId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Creator");
+
+ b.Navigation("Project");
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Milestone", b =>
+ {
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Creator")
+ .WithMany()
+ .HasForeignKey("CreatedBy")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.Project", "Project")
+ .WithMany()
+ .HasForeignKey("ProjectId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Updator")
+ .WithMany()
+ .HasForeignKey("UpdatedBy")
+ .OnDelete(DeleteBehavior.NoAction);
+
+ b.Navigation("Creator");
+
+ b.Navigation("Project");
+
+ b.Navigation("Updator");
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Organisation", b =>
+ {
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Creator")
+ .WithMany()
+ .HasForeignKey("CreatedBy")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.Navigation("Creator");
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Outcome", b =>
+ {
+ b.HasOne("PostFundManagement.Domain.Entities.Beneficiary", "Beneficiary")
+ .WithMany()
+ .HasForeignKey("BeneficiaryId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Creator")
+ .WithMany()
+ .HasForeignKey("CreatedBy")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.Navigation("Beneficiary");
+
+ b.Navigation("Creator");
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Portfolio", b =>
+ {
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Creator")
+ .WithMany()
+ .HasForeignKey("CreatedBy")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Owner")
+ .WithMany()
+ .HasForeignKey("OwnedBy")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.Navigation("Creator");
+
+ b.Navigation("Owner");
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Programme", b =>
+ {
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Creator")
+ .WithMany()
+ .HasForeignKey("CreatedBy")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.Instrument", "Instrument")
+ .WithMany("Programmes")
+ .HasForeignKey("InstrumentId")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Owner")
+ .WithMany()
+ .HasForeignKey("OwnedBy")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.Portfolio", "Portfolio")
+ .WithMany("Programmes")
+ .HasForeignKey("PortfolioId")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.Navigation("Creator");
+
+ b.Navigation("Instrument");
+
+ b.Navigation("Owner");
+
+ b.Navigation("Portfolio");
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Project", b =>
+ {
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Creator")
+ .WithMany()
+ .HasForeignKey("CreatedBy")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.Programme", "Programme")
+ .WithMany("Projects")
+ .HasForeignKey("ProgrammeId")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Updator")
+ .WithMany()
+ .HasForeignKey("UpdatedBy")
+ .OnDelete(DeleteBehavior.NoAction);
+
+ b.Navigation("Creator");
+
+ b.Navigation("Programme");
+
+ b.Navigation("Updator");
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Risk", b =>
+ {
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Creator")
+ .WithMany()
+ .HasForeignKey("CreatedBy")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.Project", "Project")
+ .WithMany()
+ .HasForeignKey("ProjectId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Creator");
+
+ b.Navigation("Project");
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Rule", b =>
+ {
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Creator")
+ .WithMany()
+ .HasForeignKey("CreatedBy")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.Programme", "Programme")
+ .WithMany("Rules")
+ .HasForeignKey("ProgrammeId")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Updator")
+ .WithMany()
+ .HasForeignKey("UpdatedBy")
+ .OnDelete(DeleteBehavior.NoAction);
+
+ b.Navigation("Creator");
+
+ b.Navigation("Programme");
+
+ b.Navigation("Updator");
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.SiteVisit", b =>
+ {
+ b.HasOne("PostFundManagement.Domain.Entities.User", "Creator")
+ .WithMany()
+ .HasForeignKey("CreatedBy")
+ .OnDelete(DeleteBehavior.NoAction)
+ .IsRequired();
+
+ b.HasOne("PostFundManagement.Domain.Entities.Project", "Project")
+ .WithMany()
+ .HasForeignKey("ProjectId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Creator");
+
+ b.Navigation("Project");
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Award", b =>
+ {
+ b.Navigation("Contract");
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Instrument", b =>
+ {
+ b.Navigation("Programmes");
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Portfolio", b =>
+ {
+ b.Navigation("Programmes");
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Programme", b =>
+ {
+ b.Navigation("Awards");
+
+ b.Navigation("Projects");
+
+ b.Navigation("Rules");
+ });
+
+ modelBuilder.Entity("PostFundManagement.Domain.Entities.Project", b =>
+ {
+ b.Navigation("Awards");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/PostFundManagement.Infrastructure/Database/Migrations/20260816082045_StandardisedFieldSizes.cs b/PostFundManagement.Infrastructure/Database/Migrations/20260816082045_StandardisedFieldSizes.cs
new file mode 100644
index 0000000..5c038da
--- /dev/null
+++ b/PostFundManagement.Infrastructure/Database/Migrations/20260816082045_StandardisedFieldSizes.cs
@@ -0,0 +1,98 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace PostFundManagement.Infrastructure.Database.Migrations
+{
+ ///
+ public partial class StandardisedFieldSizes : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AlterColumn(
+ name: "Code",
+ table: "Instruments",
+ type: "character varying(100)",
+ maxLength: 100,
+ nullable: false,
+ oldClrType: typeof(string),
+ oldType: "character varying(50)",
+ oldMaxLength: 50);
+
+ migrationBuilder.AlterColumn(
+ name: "Category",
+ table: "Beneficiaries",
+ type: "character varying(100)",
+ maxLength: 100,
+ nullable: false,
+ oldClrType: typeof(string),
+ oldType: "character varying(50)",
+ oldMaxLength: 50);
+
+ migrationBuilder.AlterColumn(
+ name: "EntityName",
+ table: "AuditLogs",
+ type: "character varying(256)",
+ maxLength: 256,
+ nullable: false,
+ oldClrType: typeof(string),
+ oldType: "character varying(128)",
+ oldMaxLength: 128);
+
+ migrationBuilder.AlterColumn(
+ name: "Action",
+ table: "AuditLogs",
+ type: "character varying(100)",
+ maxLength: 100,
+ nullable: false,
+ oldClrType: typeof(string),
+ oldType: "character varying(64)",
+ oldMaxLength: 64);
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AlterColumn(
+ name: "Code",
+ table: "Instruments",
+ type: "character varying(50)",
+ maxLength: 50,
+ nullable: false,
+ oldClrType: typeof(string),
+ oldType: "character varying(100)",
+ oldMaxLength: 100);
+
+ migrationBuilder.AlterColumn(
+ name: "Category",
+ table: "Beneficiaries",
+ type: "character varying(50)",
+ maxLength: 50,
+ nullable: false,
+ oldClrType: typeof(string),
+ oldType: "character varying(100)",
+ oldMaxLength: 100);
+
+ migrationBuilder.AlterColumn(
+ name: "EntityName",
+ table: "AuditLogs",
+ type: "character varying(128)",
+ maxLength: 128,
+ nullable: false,
+ oldClrType: typeof(string),
+ oldType: "character varying(256)",
+ oldMaxLength: 256);
+
+ migrationBuilder.AlterColumn(
+ name: "Action",
+ table: "AuditLogs",
+ type: "character varying(64)",
+ maxLength: 64,
+ nullable: false,
+ oldClrType: typeof(string),
+ oldType: "character varying(100)",
+ oldMaxLength: 100);
+ }
+ }
+}
diff --git a/PostFundManagement.Infrastructure/Database/Migrations/ApplicationDbContextModelSnapshot.cs b/PostFundManagement.Infrastructure/Database/Migrations/ApplicationDbContextModelSnapshot.cs
index 03bd61f..b90e527 100644
--- a/PostFundManagement.Infrastructure/Database/Migrations/ApplicationDbContextModelSnapshot.cs
+++ b/PostFundManagement.Infrastructure/Database/Migrations/ApplicationDbContextModelSnapshot.cs
@@ -32,8 +32,8 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
b.Property("Action")
.IsRequired()
- .HasMaxLength(64)
- .HasColumnType("character varying(64)");
+ .HasMaxLength(100)
+ .HasColumnType("character varying(100)");
b.PrimitiveCollection("Changes")
.HasColumnType("jsonb");
@@ -43,8 +43,8 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
b.Property("EntityName")
.IsRequired()
- .HasMaxLength(128)
- .HasColumnType("character varying(128)");
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
b.Property("PerformedBy")
.HasColumnType("uuid");
@@ -131,8 +131,8 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
b.Property("Category")
.IsRequired()
- .HasMaxLength(50)
- .HasColumnType("character varying(50)");
+ .HasMaxLength(100)
+ .HasColumnType("character varying(100)");
b.Property("CreatedAt")
.ValueGeneratedOnAdd()
@@ -548,8 +548,8 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
b.Property("Code")
.IsRequired()
- .HasMaxLength(50)
- .HasColumnType("character varying(50)");
+ .HasMaxLength(100)
+ .HasColumnType("character varying(100)");
b.Property("CreatedAt")
.ValueGeneratedOnAdd()