refactor(EGDbContext): split to regions

This commit is contained in:
tekh 2025-09-08 13:03:12 +02:00
parent beada59593
commit 442b7f7451

View File

@ -90,6 +90,7 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
{
modelBuilder.Entity<Config>().HasNoKey();
#region EnvelopeReceiver
modelBuilder.Entity<EnvelopeReceiver>()
.HasKey(er => new { er.EnvelopeId, er.ReceiverId });
@ -102,25 +103,13 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
.HasOne(er => er.Receiver)
.WithMany(r => r.EnvelopeReceivers)
.HasForeignKey(er => er.ReceiverId);
#endregion EnvelopeReceiver
modelBuilder.Entity<EnvelopeDocument>();
modelBuilder.Entity<DocumentReceiverElement>();
modelBuilder.Entity<DocumentStatus>();
modelBuilder.Entity<EmailTemplate>();
#region Envelope
modelBuilder.Entity<Envelope>()
.HasIndex(e => e.Uuid)
.IsUnique();
modelBuilder.Entity<EnvelopeHistory>();
modelBuilder.Entity<EnvelopeType>();
modelBuilder.Entity<Receiver>()
.HasIndex(e => e.Signature)
.IsUnique();
modelBuilder.Entity<Receiver>()
.HasIndex(e => e.EmailAddress)
.IsUnique();
modelBuilder.Entity<EmailOut>();
// Configure the one-to-many relationship of Envelope
modelBuilder.Entity<Envelope>()
.HasMany(e => e.Documents)
.WithOne()
@ -130,16 +119,31 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
.HasMany(e => e.History)
.WithOne()
.HasForeignKey(eh => eh.EnvelopeId);
#endregion Envelope
#region Receiver
modelBuilder.Entity<Receiver>()
.HasIndex(e => e.Signature)
.IsUnique();
modelBuilder.Entity<Receiver>()
.HasIndex(e => e.EmailAddress)
.IsUnique();
#endregion Receiver
#region EnvelopeDocument
modelBuilder.Entity<EnvelopeDocument>()
.HasMany(ed => ed.Elements)
.WithOne(e => e.Document)
.HasForeignKey(e => e.DocumentId);
#endregion EnvelopeDocument
#region DocumentReceiverElement
modelBuilder.Entity<DocumentReceiverElement>()
.HasOne(dre => dre.Document)
.WithMany(ed => ed.Elements)
.HasForeignKey(dre => dre.DocumentId);
#endregion DocumentReceiverElement
if (!IsMigration)
{
@ -156,12 +160,15 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
.HasPrincipalKey(e => e.Email);
}
#region EnvelopeReceiverReadOnly
modelBuilder.Entity<EnvelopeReceiverReadOnly>()
.HasOne(erro => erro.Receiver)
.WithMany()
.HasForeignKey(erro => erro.AddedWho)
.HasPrincipalKey(r => r.EmailAddress);
#endregion EnvelopeReceiverReadOnly
#region DocumentStatus
modelBuilder.Entity<DocumentStatus>()
.HasOne(ds => ds.Envelope)
.WithMany()
@ -176,7 +183,9 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
.HasOne(ds => ds.Receiver)
.WithMany()
.HasForeignKey(ds => ds.ReceiverId);
#endregion DocumentStatus
#region Trigger
// Configure entities to handle database triggers
void AddTrigger<T>() where T : class => _triggers
.Where(t => t.Key == typeof(T).Name)
@ -186,7 +195,7 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
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>();
@ -200,6 +209,7 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
AddTrigger<EnvelopeType>();
AddTrigger<Receiver>();
AddTrigger<EmailOut>();
#endregion Trigger
//configure model builder for user manager tables
modelBuilder.ConfigureUserManager();