From 442b7f74519dc03bbc2418faa5aa1b5e41b7f673 Mon Sep 17 00:00:00 2001 From: TekH Date: Mon, 8 Sep 2025 13:03:12 +0200 Subject: [PATCH] refactor(EGDbContext): split to regions --- .../EGDbContext.cs | 40 ++++++++++++------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/EnvelopeGenerator.Infrastructure/EGDbContext.cs b/EnvelopeGenerator.Infrastructure/EGDbContext.cs index 6f83103f..5f009a05 100644 --- a/EnvelopeGenerator.Infrastructure/EGDbContext.cs +++ b/EnvelopeGenerator.Infrastructure/EGDbContext.cs @@ -90,6 +90,7 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext { modelBuilder.Entity().HasNoKey(); + #region EnvelopeReceiver modelBuilder.Entity() .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(); - modelBuilder.Entity(); - modelBuilder.Entity(); - modelBuilder.Entity(); + #region Envelope modelBuilder.Entity() .HasIndex(e => e.Uuid) .IsUnique(); - modelBuilder.Entity(); - modelBuilder.Entity(); - modelBuilder.Entity() - .HasIndex(e => e.Signature) - .IsUnique(); - modelBuilder.Entity() - .HasIndex(e => e.EmailAddress) - .IsUnique(); - modelBuilder.Entity(); - // Configure the one-to-many relationship of Envelope modelBuilder.Entity() .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() + .HasIndex(e => e.Signature) + .IsUnique(); + + modelBuilder.Entity() + .HasIndex(e => e.EmailAddress) + .IsUnique(); + #endregion Receiver + + #region EnvelopeDocument modelBuilder.Entity() .HasMany(ed => ed.Elements) .WithOne(e => e.Document) .HasForeignKey(e => e.DocumentId); + #endregion EnvelopeDocument + #region DocumentReceiverElement modelBuilder.Entity() .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() .HasOne(erro => erro.Receiver) .WithMany() .HasForeignKey(erro => erro.AddedWho) .HasPrincipalKey(r => r.EmailAddress); + #endregion EnvelopeReceiverReadOnly + #region DocumentStatus modelBuilder.Entity() .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() where T : class => _triggers .Where(t => t.Key == typeof(T).Name) @@ -186,7 +195,7 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext modelBuilder.Entity().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(); AddTrigger(); @@ -200,6 +209,7 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext AddTrigger(); AddTrigger(); AddTrigger(); + #endregion Trigger //configure model builder for user manager tables modelBuilder.ConfigureUserManager();