1
- using System . Reflection ;
2
- using AuditTrail . Abstractions ;
3
- using AuditTrail . Extensions ;
1
+ using EFCore . Audit . Extensions ;
2
+ using EFCore . AuditBase . Extensions ;
4
3
using EFCore . PostgresExtensions . Extensions ;
5
4
using EntityFramework . Exceptions . PostgreSQL ;
6
5
using Microsoft . AspNetCore . Builder ;
7
6
using Microsoft . EntityFrameworkCore ;
8
7
using Microsoft . Extensions . DependencyInjection ;
9
- using SharedKernel . Postgres . AuditTrail ;
10
8
11
9
namespace SharedKernel . Postgres . Extensions ;
12
10
@@ -16,40 +14,52 @@ public static WebApplicationBuilder AddPostgresContext<TContext>(this WebApplica
16
14
string connectionString )
17
15
where TContext : DbContext
18
16
{
19
- builder . Services . AddDbContextPool < TContext > ( options =>
17
+ builder . Services . AddDbContext < TContext > ( options =>
20
18
{
21
19
options
22
- . UseNpgsql ( connectionString )
23
- . UseQueryLocks ( )
24
- . UseSnakeCaseNamingConvention ( )
25
- . UseExceptionProcessor ( ) ;
20
+ . AddStandardOptions ( connectionString ) ;
26
21
} ) ;
27
22
28
23
builder . AddPostgresHealthCheck ( connectionString ) ;
29
24
30
25
return builder ;
31
26
}
32
27
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 )
37
30
where TContext : DbContext
38
- where TConsumer : class , IAuditTrailConsumer < TPermission , TContext >
31
+ {
32
+ builder . Services . AddDbContextPool < TContext > ( options =>
33
+ {
34
+ options . AddStandardOptions ( connectionString ) ;
35
+ } ) ;
39
36
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
40
44
{
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 ) ;
43
52
53
+ return builder ;
54
+ }
44
55
56
+ public static WebApplicationBuilder AddPostgresContextPoolWithAuditTrail < TContext > ( this WebApplicationBuilder builder ,
57
+ string connectionString ) where TContext : DbContext
58
+ {
45
59
builder . Services . AddDbContextPool < TContext > ( ( sp , options ) =>
46
60
{
47
- options
48
- . UseNpgsql ( connectionString )
49
- . UseQueryLocks ( )
50
- . UseSnakeCaseNamingConvention ( )
51
- . UseExceptionProcessor ( )
52
- . UseAuditTrail < TPermission , TContext > ( sp ) ;
61
+ options . AddStandardOptions ( connectionString )
62
+ . AddAuditTrailInterceptors ( sp ) ;
53
63
} ) ;
54
64
55
65
builder . AddPostgresHealthCheck ( connectionString ) ;
@@ -65,4 +75,15 @@ public static WebApplication MigrateDatabase<TContext>(this WebApplication app)
65
75
dbContext . Database . Migrate ( ) ;
66
76
return app ;
67
77
}
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
+ }
68
89
}
0 commit comments