Implemented centralised audit logging

This commit is contained in:
2026-09-21 16:32:56 +02:00
parent 78b03b6996
commit f4024d563a
41 changed files with 5751 additions and 54 deletions
@@ -17,7 +17,7 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "10.0.11")
.HasAnnotation("ProductVersion", "10.0.12")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
@@ -111,8 +111,9 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
b.PrimitiveCollection<string>("Changes")
.HasColumnType("jsonb");
b.Property<long>("EntityId")
.HasColumnType("bigint");
b.Property<string>("EntityId")
.IsRequired()
.HasColumnType("text");
b.Property<string>("EntityName")
.IsRequired()
@@ -122,6 +123,9 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
b.Property<Guid>("PerformedBy")
.HasColumnType("uuid");
b.Property<long?>("TenantId")
.HasColumnType("bigint");
b.Property<DateTime>("Timestamp")
.ValueGeneratedOnAdd()
.HasColumnType("timestamp with time zone")
@@ -131,6 +135,8 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
b.HasIndex("PerformedBy");
b.HasIndex("TenantId");
b.ToTable("AuditLogs", (string)null);
});
@@ -171,6 +177,9 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
.HasColumnType("integer")
.HasDefaultValueSql("1");
b.Property<long>("TenantId")
.HasColumnType("bigint");
b.Property<DateTime?>("UpdatedAt")
.HasColumnType("timestamp with time zone");
@@ -189,6 +198,8 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
b.HasIndex("ProjectId");
b.HasIndex("TenantId");
b.HasIndex("UpdatedBy");
b.ToTable("Awards", (string)null);
@@ -883,6 +894,9 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
.HasMaxLength(256)
.HasColumnType("character varying(256)");
b.Property<long>("TenantId")
.HasColumnType("bigint");
b.Property<DateTime?>("UpdatedAt")
.HasColumnType("timestamp with time zone");
@@ -892,6 +906,8 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
b.HasIndex("Recipient");
b.HasIndex("TenantId");
b.ToTable("Notifications", (string)null);
});
@@ -1012,6 +1028,9 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
b.Property<Guid>("OwnedBy")
.HasColumnType("uuid");
b.Property<long>("TenantId")
.HasColumnType("bigint");
b.HasKey("Id");
b.HasIndex("CreatedBy");
@@ -1020,6 +1039,8 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
b.HasIndex("OwnedBy");
b.HasIndex("TenantId");
b.ToTable("Portfolios", (string)null);
});
@@ -1055,6 +1076,9 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
.HasColumnType("integer")
.HasDefaultValueSql("1");
b.Property<long>("TenantId")
.HasColumnType("bigint");
b.Property<DateTime?>("UpdatedAt")
.HasColumnType("timestamp with time zone");
@@ -1069,6 +1093,8 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
b.HasIndex("PortfolioId");
b.HasIndex("TenantId");
b.ToTable("Programmes", (string)null);
});
@@ -1122,6 +1148,9 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
.HasColumnType("integer")
.HasDefaultValueSql("1");
b.Property<long>("TenantId")
.HasColumnType("bigint");
b.Property<DateTime?>("UpdatedAt")
.HasColumnType("timestamp with time zone");
@@ -1134,6 +1163,8 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
b.HasIndex("ProgrammeId");
b.HasIndex("TenantId");
b.HasIndex("UpdatedBy");
b.ToTable("Projects", (string)null);
@@ -1282,6 +1313,123 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
b.ToTable("SiteVisits", (string)null);
});
modelBuilder.Entity("PostFundManagement.Domain.Entities.Tenant", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
b.Property<DateTime>("CreatedAt")
.ValueGeneratedOnAdd()
.HasColumnType("timestamp with time zone")
.HasDefaultValueSql("now()");
b.Property<Guid>("CreatedBy")
.HasColumnType("uuid");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("character varying(256)");
b.Property<int>("Status")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasDefaultValueSql("1");
b.Property<DateTime?>("UpdatedAt")
.HasColumnType("timestamp with time zone");
b.Property<Guid?>("UpdatedBy")
.HasColumnType("uuid");
b.HasKey("Id");
b.HasIndex("CreatedBy");
b.HasIndex("UpdatedBy");
b.ToTable("Tenants", (string)null);
});
modelBuilder.Entity("PostFundManagement.Domain.Entities.TenantOrganisation", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
b.Property<DateTime>("CreatedAt")
.ValueGeneratedOnAdd()
.HasColumnType("timestamp with time zone")
.HasDefaultValueSql("now()");
b.Property<Guid>("CreatedBy")
.HasColumnType("uuid");
b.Property<long>("OrganisationId")
.HasColumnType("bigint");
b.Property<int>("Status")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasDefaultValueSql("1");
b.Property<long>("TenantId")
.HasColumnType("bigint");
b.HasKey("Id");
b.HasIndex("CreatedBy");
b.HasIndex("OrganisationId");
b.HasIndex("TenantId");
b.ToTable("TenantOrganisations", (string)null);
});
modelBuilder.Entity("PostFundManagement.Domain.Entities.TenantUser", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
b.Property<DateTime>("CreatedAt")
.ValueGeneratedOnAdd()
.HasColumnType("timestamp with time zone")
.HasDefaultValueSql("now()");
b.Property<Guid>("CreatedBy")
.HasColumnType("uuid");
b.Property<int>("Status")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasDefaultValueSql("1");
b.Property<long>("TenantId")
.HasColumnType("bigint");
b.Property<Guid>("UserId")
.HasColumnType("uuid");
b.HasKey("Id");
b.HasIndex("CreatedBy");
b.HasIndex("TenantId");
b.HasIndex("UserId");
b.ToTable("TenantUsers", (string)null);
});
modelBuilder.Entity("PostFundManagement.Domain.Entities.User", b =>
{
b.Property<Guid>("Id")
@@ -1355,7 +1503,14 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("PostFundManagement.Domain.Entities.Tenant", "Tenant")
.WithMany()
.HasForeignKey("TenantId")
.OnDelete(DeleteBehavior.NoAction);
b.Navigation("Performer");
b.Navigation("Tenant");
});
modelBuilder.Entity("PostFundManagement.Domain.Entities.Award", b =>
@@ -1388,6 +1543,12 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
.HasForeignKey("ProjectId")
.OnDelete(DeleteBehavior.SetNull);
b.HasOne("PostFundManagement.Domain.Entities.Tenant", "Tenant")
.WithMany()
.HasForeignKey("TenantId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("PostFundManagement.Domain.Entities.User", "Updator")
.WithMany()
.HasForeignKey("UpdatedBy")
@@ -1403,6 +1564,8 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
b.Navigation("Project");
b.Navigation("Tenant");
b.Navigation("Updator");
});
@@ -1761,9 +1924,17 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("PostFundManagement.Domain.Entities.Tenant", "Tenant")
.WithMany()
.HasForeignKey("TenantId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Organisation");
b.Navigation("RecipientUser");
b.Navigation("Tenant");
});
modelBuilder.Entity("PostFundManagement.Domain.Entities.Organisation", b =>
@@ -1816,11 +1987,19 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
.OnDelete(DeleteBehavior.NoAction)
.IsRequired();
b.HasOne("PostFundManagement.Domain.Entities.Tenant", "Tenant")
.WithMany()
.HasForeignKey("TenantId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Creator");
b.Navigation("Organisation");
b.Navigation("Owner");
b.Navigation("Tenant");
});
modelBuilder.Entity("PostFundManagement.Domain.Entities.Programme", b =>
@@ -1843,11 +2022,19 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
.OnDelete(DeleteBehavior.NoAction)
.IsRequired();
b.HasOne("PostFundManagement.Domain.Entities.Tenant", "Tenant")
.WithMany()
.HasForeignKey("TenantId")
.OnDelete(DeleteBehavior.NoAction)
.IsRequired();
b.Navigation("Creator");
b.Navigation("Owner");
b.Navigation("Portfolio");
b.Navigation("Tenant");
});
modelBuilder.Entity("PostFundManagement.Domain.Entities.Project", b =>
@@ -1864,6 +2051,12 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("PostFundManagement.Domain.Entities.Tenant", "Tenant")
.WithMany()
.HasForeignKey("TenantId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("PostFundManagement.Domain.Entities.User", "Updator")
.WithMany()
.HasForeignKey("UpdatedBy")
@@ -1873,6 +2066,8 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
b.Navigation("Programme");
b.Navigation("Tenant");
b.Navigation("Updator");
});
@@ -1940,6 +2135,78 @@ namespace PostFundManagement.Infrastructure.Database.Migrations
b.Navigation("Project");
});
modelBuilder.Entity("PostFundManagement.Domain.Entities.Tenant", b =>
{
b.HasOne("PostFundManagement.Domain.Entities.User", "Creator")
.WithMany()
.HasForeignKey("CreatedBy")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("PostFundManagement.Domain.Entities.User", "Updator")
.WithMany()
.HasForeignKey("UpdatedBy")
.OnDelete(DeleteBehavior.Restrict);
b.Navigation("Creator");
b.Navigation("Updator");
});
modelBuilder.Entity("PostFundManagement.Domain.Entities.TenantOrganisation", b =>
{
b.HasOne("PostFundManagement.Domain.Entities.User", "Creator")
.WithMany()
.HasForeignKey("CreatedBy")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("PostFundManagement.Domain.Entities.Organisation", "Organisation")
.WithMany()
.HasForeignKey("OrganisationId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("PostFundManagement.Domain.Entities.Tenant", "Tenant")
.WithMany()
.HasForeignKey("TenantId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Creator");
b.Navigation("Organisation");
b.Navigation("Tenant");
});
modelBuilder.Entity("PostFundManagement.Domain.Entities.TenantUser", b =>
{
b.HasOne("PostFundManagement.Domain.Entities.User", "Creator")
.WithMany()
.HasForeignKey("CreatedBy")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("PostFundManagement.Domain.Entities.Tenant", "Tenant")
.WithMany()
.HasForeignKey("TenantId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("PostFundManagement.Domain.Entities.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Creator");
b.Navigation("Tenant");
b.Navigation("User");
});
modelBuilder.Entity("PostFundManagement.Domain.Entities.Activity", b =>
{
b.Navigation("Evidences");