refactor(EGDbContext): AddTrigger zur Konfiguration von Triggern über appsettings.json erstellt und implementiert
This commit is contained in:
parent
4615205aa5
commit
f9c34ef8fd
@ -7,9 +7,13 @@ using Microsoft.EntityFrameworkCore;
|
|||||||
using Group = DigitalData.UserManager.Domain.Entities.Group;
|
using Group = DigitalData.UserManager.Domain.Entities.Group;
|
||||||
using Module = DigitalData.UserManager.Domain.Entities.Module;
|
using Module = DigitalData.UserManager.Domain.Entities.Module;
|
||||||
using DigitalData.EmailProfilerDispatcher;
|
using DigitalData.EmailProfilerDispatcher;
|
||||||
|
using Microsoft.Extensions.Options;
|
||||||
|
using EnvelopeGenerator.Application.Configurations;
|
||||||
|
using DigitalData.Core.Client;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Infrastructure;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Infrastructure
|
|
||||||
{
|
|
||||||
//TODO: Adding EmailOut instead of EmailOut.Abst is not correct for the arch. Re-design EmailPut consedering this. IMailDbContext shoud move to Abstraction layer (hint: in this case using DBSet in abst. will be problem because entity framework will have to be added.
|
//TODO: Adding EmailOut instead of EmailOut.Abst is not correct for the arch. Re-design EmailPut consedering this. IMailDbContext shoud move to Abstraction layer (hint: in this case using DBSet in abst. will be problem because entity framework will have to be added.
|
||||||
public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
|
public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
|
||||||
{
|
{
|
||||||
@ -53,8 +57,15 @@ namespace EnvelopeGenerator.Infrastructure
|
|||||||
|
|
||||||
public DbSet<EnvelopeReceiverReadOnly> EnvelopeReceiverReadOnlys { get; set; }
|
public DbSet<EnvelopeReceiverReadOnly> EnvelopeReceiverReadOnlys { get; set; }
|
||||||
|
|
||||||
public EGDbContext(DbContextOptions<EGDbContext> options) : base(options)
|
private readonly DbTriggerParams _triggers;
|
||||||
|
|
||||||
|
private readonly ILogger<EGDbContext> _logger;
|
||||||
|
|
||||||
|
public EGDbContext(DbContextOptions<EGDbContext> options, IOptions<DbTriggerParams> triggerParamOptions, ILogger<EGDbContext> logger) : base(options)
|
||||||
{
|
{
|
||||||
|
_triggers = triggerParamOptions.Value;
|
||||||
|
_logger = logger;
|
||||||
|
|
||||||
UserReceivers = Set<UserReceiver>();
|
UserReceivers = Set<UserReceiver>();
|
||||||
Configs = Set<Config>();
|
Configs = Set<Config>();
|
||||||
EnvelopeReceivers = Set<EnvelopeReceiver>();
|
EnvelopeReceivers = Set<EnvelopeReceiver>();
|
||||||
@ -142,10 +153,34 @@ namespace EnvelopeGenerator.Infrastructure
|
|||||||
modelBuilder.Entity<EmailOut>().ToTable(tb => tb.HasTrigger("TBEMLP_EMAIL_OUT_AFT_UPD"));
|
modelBuilder.Entity<EmailOut>().ToTable(tb => tb.HasTrigger("TBEMLP_EMAIL_OUT_AFT_UPD"));
|
||||||
modelBuilder.Entity<EnvelopeReceiverReadOnly>().ToTable(tb => tb.HasTrigger("TBSIG_ENVELOPE_RECEIVER_READ_ONLY_UPD"));
|
modelBuilder.Entity<EnvelopeReceiverReadOnly>().ToTable(tb => tb.HasTrigger("TBSIG_ENVELOPE_RECEIVER_READ_ONLY_UPD"));
|
||||||
|
|
||||||
|
void AddTrigger<T>() where T : class => _triggers
|
||||||
|
.Where(t => t.Key == typeof(T).Name)
|
||||||
|
.SelectMany(t => t.Value)
|
||||||
|
.ForEach(tName =>
|
||||||
|
{
|
||||||
|
modelBuilder.Entity<T>().ToTable(tb => tb.HasTrigger(tName));
|
||||||
|
_logger.LogInformation("Trigger '{triggerName}' has been added to the '{entityName}' entity.", tName, typeof(T).Name);
|
||||||
|
});
|
||||||
|
|
||||||
|
// TODO: call add trigger methods with attributes and reflection
|
||||||
|
AddTrigger<Config>();
|
||||||
|
AddTrigger<DocumentReceiverElement>();
|
||||||
|
AddTrigger<DocumentStatus>();
|
||||||
|
AddTrigger<EmailTemplate>();
|
||||||
|
AddTrigger<Envelope>();
|
||||||
|
AddTrigger<EnvelopeCertificate>();
|
||||||
|
AddTrigger<EnvelopeDocument>();
|
||||||
|
AddTrigger<EnvelopeHistory>();
|
||||||
|
AddTrigger<EnvelopeReceiver>();
|
||||||
|
AddTrigger<EnvelopeReceiverReadOnly>();
|
||||||
|
AddTrigger<EnvelopeType>();
|
||||||
|
AddTrigger<Receiver>();
|
||||||
|
AddTrigger<UserReceiver>();
|
||||||
|
AddTrigger<EmailOut>();
|
||||||
|
|
||||||
//configure model builder for user manager tables
|
//configure model builder for user manager tables
|
||||||
modelBuilder.ConfigureUserManager();
|
modelBuilder.ConfigureUserManager();
|
||||||
|
|
||||||
base.OnModelCreating(modelBuilder);
|
base.OnModelCreating(modelBuilder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
Loading…
x
Reference in New Issue
Block a user