1- using System . Reflection ;
2- using AuditTrail . Abstractions ;
3- using AuditTrail . Extensions ;
1+ using EFCore . Audit . Extensions ;
2+ using EFCore . AuditBase . Extensions ;
43using EFCore . PostgresExtensions . Extensions ;
54using EntityFramework . Exceptions . PostgreSQL ;
65using Microsoft . AspNetCore . Builder ;
76using Microsoft . EntityFrameworkCore ;
87using Microsoft . Extensions . DependencyInjection ;
9- using SharedKernel . Postgres . AuditTrail ;
108
119namespace SharedKernel . Postgres . Extensions ;
1210
@@ -16,40 +14,52 @@ public static WebApplicationBuilder AddPostgresContext<TContext>(this WebApplica
1614 string connectionString )
1715 where TContext : DbContext
1816 {
19- builder . Services . AddDbContextPool < TContext > ( options =>
17+ builder . Services . AddDbContext < TContext > ( options =>
2018 {
2119 options
22- . UseNpgsql ( connectionString )
23- . UseQueryLocks ( )
24- . UseSnakeCaseNamingConvention ( )
25- . UseExceptionProcessor ( ) ;
20+ . AddStandardOptions ( connectionString ) ;
2621 } ) ;
2722
2823 builder . AddPostgresHealthCheck ( connectionString ) ;
2924
3025 return builder ;
3126 }
3227
33- public static WebApplicationBuilder AddPostgresContextWithAuditTrail < TContext , TPermission , TConsumer > (
34- this WebApplicationBuilder builder ,
35- string connectionString ,
36- params Assembly [ ] assemblies )
28+ public static WebApplicationBuilder AddPostgresContextPool < TContext > ( this WebApplicationBuilder builder ,
29+ string connectionString )
3730 where TContext : DbContext
38- where TConsumer : class , IAuditTrailConsumer < TPermission , TContext >
31+ {
32+ builder . Services . AddDbContextPool < TContext > ( options =>
33+ {
34+ options . AddStandardOptions ( connectionString ) ;
35+ } ) ;
3936
37+ builder . AddPostgresHealthCheck ( connectionString ) ;
38+
39+ return builder ;
40+ }
41+
42+ public static WebApplicationBuilder AddPostgresContextWithAuditTrail < TContext > ( this WebApplicationBuilder builder ,
43+ string connectionString ) where TContext : DbContext
4044 {
41- builder . Services . AddAuditTrail < TPermission , TConsumer , AuditTrailDecryption , TContext > ( assemblies ,
42- s => s . AutoOpenTransaction = true ) ;
45+ builder . Services . AddDbContext < TContext > ( ( sp , options ) =>
46+ {
47+ options . AddStandardOptions ( connectionString )
48+ . AddAuditTrailInterceptors ( sp ) ;
49+ } ) ;
50+
51+ builder . AddPostgresHealthCheck ( connectionString ) ;
4352
53+ return builder ;
54+ }
4455
56+ public static WebApplicationBuilder AddPostgresContextPoolWithAuditTrail < TContext > ( this WebApplicationBuilder builder ,
57+ string connectionString ) where TContext : DbContext
58+ {
4559 builder . Services . AddDbContextPool < TContext > ( ( sp , options ) =>
4660 {
47- options
48- . UseNpgsql ( connectionString )
49- . UseQueryLocks ( )
50- . UseSnakeCaseNamingConvention ( )
51- . UseExceptionProcessor ( )
52- . UseAuditTrail < TPermission , TContext > ( sp ) ;
61+ options . AddStandardOptions ( connectionString )
62+ . AddAuditTrailInterceptors ( sp ) ;
5363 } ) ;
5464
5565 builder . AddPostgresHealthCheck ( connectionString ) ;
@@ -65,4 +75,15 @@ public static WebApplication MigrateDatabase<TContext>(this WebApplication app)
6575 dbContext . Database . Migrate ( ) ;
6676 return app ;
6777 }
78+
79+ private static DbContextOptionsBuilder AddStandardOptions ( this DbContextOptionsBuilder optionsBuilder ,
80+ string connectionString )
81+ {
82+ return optionsBuilder
83+ . UseNpgsql ( connectionString )
84+ . UseQueryLocks ( )
85+ . UseAuditBaseValidatorInterceptor ( )
86+ . UseSnakeCaseNamingConvention ( )
87+ . UseExceptionProcessor ( ) ;
88+ }
6889}
0 commit comments