From 68ffad06a6cfd2cd2015ab03fb82bf69629dd7ec Mon Sep 17 00:00:00 2001 From: ivar Date: Tue, 2 Dec 2025 22:38:23 +0100 Subject: Move off razor pages --- api/WhatApi/Database.cs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'api/WhatApi/Database.cs') diff --git a/api/WhatApi/Database.cs b/api/WhatApi/Database.cs index 8e8ed07..8aeffed 100644 --- a/api/WhatApi/Database.cs +++ b/api/WhatApi/Database.cs @@ -1,13 +1,14 @@ using System.Security.Claims; +using WhatApi.Extras; using WhatApi.Tables; namespace WhatApi; -public class Database(DbContextOptions options, IHttpContextAccessor httpContextAccessor) : DbContext(options) +public class Database(DbContextOptions options, IHttpContextAccessor httpContextAccessor, IConfiguration configuration) : DbContext(options) { public DbSet Content => Set(); public DbSet Places => Set(); - public DbSet Users => Set(); + public DbSet Users => Set(); public DbSet AuditTrails => Set(); protected override void OnModelCreating(ModelBuilder b) { @@ -20,22 +21,24 @@ public class Database(DbContextOptions options, IHttpContextAccessor h } public override int SaveChanges() { + if (configuration.GetValue("DISABLE_AUDIT_TRAILS")) return base.SaveChanges(); SetAuditableProperties(); - var auditEntries = HandleAuditingBeforeSaveChanges(); + var auditEntries = GetActiveAuditTrails(); if (auditEntries.Count != 0) AuditTrails.AddRange(auditEntries); return base.SaveChanges(); } public override async Task SaveChangesAsync(CancellationToken cancellationToken = default) { + if (configuration.GetValue("DISABLE_AUDIT_TRAILS")) return await base.SaveChangesAsync(cancellationToken); SetAuditableProperties(); - var auditEntries = HandleAuditingBeforeSaveChanges(); + var auditEntries = GetActiveAuditTrails(); if (auditEntries.Count != 0) await AuditTrails.AddRangeAsync(auditEntries, cancellationToken); return await base.SaveChangesAsync(cancellationToken); } - private List HandleAuditingBeforeSaveChanges() { + private List GetActiveAuditTrails() { var userId = GetUserId(); var entries = ChangeTracker.Entries() .Where(e => e.State is EntityState.Added or EntityState.Modified or EntityState.Deleted); @@ -56,7 +59,8 @@ public class Database(DbContextOptions options, IHttpContextAccessor h continue; } - if (prop.Metadata.Name.Equals("Password")) continue; + if (prop.Metadata.PropertyInfo?.CustomAttributes.FirstOrDefault(c => c.AttributeType == typeof(AuditTrailIgnoreAttribute)) != null) + continue; var name = prop.Metadata.Name; -- cgit v1.3