diff --git a/EnvelopeGenerator.Application/Common/Configurations/DbTriggerParams.cs b/EnvelopeGenerator.Application/Common/Configurations/DbTriggerParams.cs
deleted file mode 100644
index ce01836b..00000000
--- a/EnvelopeGenerator.Application/Common/Configurations/DbTriggerParams.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace EnvelopeGenerator.Application.Common.Configurations;
-
-///
-///
-///
-public class DbTriggerParams : Dictionary>
-{
-}
\ No newline at end of file
diff --git a/EnvelopeGenerator.Application/DependencyInjection.cs b/EnvelopeGenerator.Application/DependencyInjection.cs
index 0cff0c7a..ef9838a1 100644
--- a/EnvelopeGenerator.Application/DependencyInjection.cs
+++ b/EnvelopeGenerator.Application/DependencyInjection.cs
@@ -46,7 +46,6 @@ public static class DependencyInjection
services.Configure(config.GetSection(nameof(MailParams)));
services.Configure(config.GetSection(nameof(AuthenticatorParams)));
services.Configure(config.GetSection(nameof(TotpSmsParams)));
- services.Configure(config.GetSection(nameof(DbTriggerParams)));
services.AddHttpClientService(config.GetSection(nameof(GtxMessagingParams)));
services.TryAddSingleton();
diff --git a/EnvelopeGenerator.Infrastructure/DbTriggerParams.cs b/EnvelopeGenerator.Infrastructure/DbTriggerParams.cs
new file mode 100644
index 00000000..9b8ff967
--- /dev/null
+++ b/EnvelopeGenerator.Infrastructure/DbTriggerParams.cs
@@ -0,0 +1,18 @@
+#if NETFRAMEWORK
+using System.Collections.Generic;
+#endif
+
+namespace EnvelopeGenerator.Infrastructure
+#if NET
+ ;
+#elif NETFRAMEWORK
+{
+#endif
+
+public class DbTriggerParams : Dictionary>
+{
+}
+
+#if NETFRAMEWORK
+}
+#endif
\ No newline at end of file
diff --git a/EnvelopeGenerator.Infrastructure/DependencyExtensions.cs b/EnvelopeGenerator.Infrastructure/DependencyExtensions.cs
index 88fba5ab..c25bc014 100644
--- a/EnvelopeGenerator.Infrastructure/DependencyExtensions.cs
+++ b/EnvelopeGenerator.Infrastructure/DependencyExtensions.cs
@@ -9,6 +9,7 @@ using System.ComponentModel.DataAnnotations.Schema;
using System.Reflection;
using DigitalData.UserManager.Domain.Entities;
#if NET
+using CommandDotNet.Execution;
using EnvelopeGenerator.Infrastructure.Repositories;
using EnvelopeGenerator.Infrastructure.Executor;
using EnvelopeGenerator.Application.Common.Interfaces.Repositories;
@@ -38,6 +39,7 @@ namespace EnvelopeGenerator.Infrastructure
///
[Obsolete("Use IRepository")]
public static IServiceCollection AddEnvelopeGeneratorInfrastructureServices(this IServiceCollection services,
+ Action options,
Action
#if NET
?
@@ -49,6 +51,9 @@ namespace EnvelopeGenerator.Infrastructure
#endif
)
{
+ // configure custom options
+ options(new Config(services));
+
if (dbContextOptions != null)
services.AddDbContext(dbContextOptions);
@@ -173,5 +178,25 @@ namespace EnvelopeGenerator.Infrastructure
return services;
}
#endif
+
+ public class Config
+ {
+ private readonly IServiceCollection _services;
+
+ internal Config(IServiceCollection services)
+ {
+ _services = services;
+ }
+
+ public void ConfigureDbTriggerParams(IConfiguration configuration)
+ {
+ _services.Configure(configuration.GetSection(nameof(DbTriggerParams)));
+ }
+
+ public void ConfigureDbTriggerParams(Action configureOptions)
+ {
+ _services.Configure(configureOptions);
+ }
+ }
}
}
\ No newline at end of file
diff --git a/EnvelopeGenerator.Infrastructure/EGDbContext.cs b/EnvelopeGenerator.Infrastructure/EGDbContext.cs
index cba16fe5..8a103a00 100644
--- a/EnvelopeGenerator.Infrastructure/EGDbContext.cs
+++ b/EnvelopeGenerator.Infrastructure/EGDbContext.cs
@@ -13,6 +13,7 @@ using DigitalData.UserManager.Infrastructure.Contracts;
using DigitalData.Core.Client;
using EnvelopeGenerator.Application.Common.Configurations;
#elif NETFRAMEWORK
+using System.Linq;
#endif
namespace EnvelopeGenerator.Infrastructure
@@ -35,7 +36,7 @@ public abstract class EGDbContextBase : DbContext
, IUserManagerDbContext, IMailDbContext
#endif
{
- public DbSet Configs { get; set; }
+ public DbSet Configs { get; set; }
public DbSet EnvelopeReceivers { get; set; }
@@ -85,7 +86,11 @@ public abstract class EGDbContextBase : DbContext
public bool IsMigration { get; set; } = false;
- public EGDbContextBase(DbContextOptions options, IOptions triggerParamOptions, ILogger? logger = null) : base(options)
+ public EGDbContextBase(DbContextOptions options, IOptions triggerParamOptions, ILogger
+#if NET
+ ?
+#endif
+ logger = null) : base(options)
{
_triggers = triggerParamOptions.Value;
_logger = logger;
@@ -213,7 +218,9 @@ public abstract class EGDbContextBase : DbContext
.SelectMany(t => t.Value)
.ForEach(tName =>
{
+#if NET
modelBuilder.Entity().ToTable(tb => tb.HasTrigger(tName));
+#endif
_logger?.LogInformation("Trigger '{triggerName}' has been added to the '{entityName}' entity.", tName, typeof(T).Name);
});
diff --git a/EnvelopeGenerator.Infrastructure/EnumerableExtensions.cs b/EnvelopeGenerator.Infrastructure/EnumerableExtensions.cs
new file mode 100644
index 00000000..668b5815
--- /dev/null
+++ b/EnvelopeGenerator.Infrastructure/EnumerableExtensions.cs
@@ -0,0 +1,20 @@
+#if NETFRAMEWORK
+using System.Collections.Generic;
+using System;
+#endif
+
+namespace EnvelopeGenerator.Infrastructure
+{
+ public static class EnumerableExtensions
+ {
+#if NETFRAMEWORK
+ public static void ForEach(this IEnumerable values, Action action)
+ {
+ foreach (T value in values)
+ {
+ action(value);
+ }
+ }
+#endif
+ }
+}
\ No newline at end of file
diff --git a/EnvelopeGenerator.Infrastructure/Repositories/ConfigRepository.cs b/EnvelopeGenerator.Infrastructure/Repositories/ConfigRepository.cs
index 9fd8a76b..c3d088ee 100644
--- a/EnvelopeGenerator.Infrastructure/Repositories/ConfigRepository.cs
+++ b/EnvelopeGenerator.Infrastructure/Repositories/ConfigRepository.cs
@@ -1,19 +1,18 @@
#if NET
using DigitalData.Core.Infrastructure;
-using EnvelopeGenerator.Domain.Entities;
using Microsoft.EntityFrameworkCore;
using EnvelopeGenerator.Application.Common.Interfaces.Repositories;
namespace EnvelopeGenerator.Infrastructure.Repositories;
[Obsolete("Use IRepository")]
-public class ConfigRepository : CRUDRepository, IConfigRepository
+public class ConfigRepository : CRUDRepository, IConfigRepository
{
public ConfigRepository(EGDbContext dbContext) : base(dbContext, dbContext.Configs)
{
}
- public async Task ReadFirstAsync()
+ public async Task ReadFirstAsync()
{
var configs = await _dbSet.ToListAsync();
return configs.Count > 0 ? configs[0] : default;
diff --git a/EnvelopeGenerator.Web/Program.cs b/EnvelopeGenerator.Web/Program.cs
index 9c79ffe8..7904c7ea 100644
--- a/EnvelopeGenerator.Web/Program.cs
+++ b/EnvelopeGenerator.Web/Program.cs
@@ -103,14 +103,16 @@ try
// Add envelope generator services
#pragma warning disable CS0618 // Type or member is obsolete
- builder.Services.AddEnvelopeGeneratorInfrastructureServices((provider, options) =>
- {
- var logger = provider.GetRequiredService>();
- options.UseSqlServer(connStr)
- .LogTo(log => logger.LogInformation("{log}", log), Microsoft.Extensions.Logging.LogLevel.Trace)
- .EnableSensitiveDataLogging()
- .EnableDetailedErrors();
- });
+ builder.Services.AddEnvelopeGeneratorInfrastructureServices(
+ opt => opt.ConfigureDbTriggerParams(config),
+ (provider, options) =>
+ {
+ var logger = provider.GetRequiredService>();
+ options.UseSqlServer(connStr)
+ .LogTo(log => logger.LogInformation("{log}", log), Microsoft.Extensions.Logging.LogLevel.Trace)
+ .EnableSensitiveDataLogging()
+ .EnableDetailedErrors();
+ });
#pragma warning restore CS0618 // Type or member is obsolete
#pragma warning disable CS0618 // Type or member is obsolete