diff --git a/HrynCo.NotificationService.DAL.EF/Migrations/20260502154249_PendingChanges.Designer.cs b/HrynCo.NotificationService.DAL.EF/Migrations/20260502154249_PendingChanges.Designer.cs
new file mode 100644
index 0000000..7886d9c
--- /dev/null
+++ b/HrynCo.NotificationService.DAL.EF/Migrations/20260502154249_PendingChanges.Designer.cs
@@ -0,0 +1,225 @@
+//
+using System;
+using HrynCo.NotificationService.DAL.EF;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+namespace HrynCo.NotificationService.DAL.EF.Migrations
+{
+ [DbContext(typeof(NotificationDbContext))]
+ [Migration("20260502154249_PendingChanges")]
+ partial class PendingChanges
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "9.0.5")
+ .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+ NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+ modelBuilder.Entity("HrynCo.NotificationService.DAL.EF.Entities.EmailChannelEntity", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("Created")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("created");
+
+ b.Property("DailyLimit")
+ .HasColumnType("integer")
+ .HasColumnName("daily_limit");
+
+ b.Property("EmailChannelType")
+ .HasColumnType("integer")
+ .HasColumnName("provider_type");
+
+ b.Property("IsActive")
+ .HasColumnType("boolean")
+ .HasColumnName("is_active");
+
+ b.Property("MonthlyLimit")
+ .HasColumnType("integer")
+ .HasColumnName("monthly_limit");
+
+ b.Property("Priority")
+ .HasColumnType("integer")
+ .HasColumnName("priority");
+
+ b.Property("ServiceName")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("character varying(100)")
+ .HasColumnName("service_name");
+
+ b.Property("SettingsJson")
+ .IsRequired()
+ .HasColumnType("jsonb")
+ .HasColumnName("settings");
+
+ b.Property("Updated")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("updated");
+
+ b.Property("WarnThresholdPercent")
+ .HasColumnType("integer")
+ .HasColumnName("warn_threshold_percent");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ServiceName", "Priority");
+
+ b.ToTable("email_channels", (string)null);
+ });
+
+ modelBuilder.Entity("HrynCo.NotificationService.DAL.EF.Entities.EmailChannelUsageEntity", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("Created")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("created");
+
+ b.Property("Date")
+ .HasColumnType("date")
+ .HasColumnName("date");
+
+ b.Property("ProviderId")
+ .HasColumnType("uuid")
+ .HasColumnName("provider_id");
+
+ b.Property("SentCount")
+ .HasColumnType("integer")
+ .HasColumnName("sent_count");
+
+ b.Property("Updated")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("updated");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ProviderId", "Date")
+ .IsUnique();
+
+ b.ToTable("email_channel_usage", (string)null);
+ });
+
+ modelBuilder.Entity("HrynCo.NotificationService.DAL.EF.Entities.EmailTemplateEntity", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("Created")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("created");
+
+ b.Property("HtmlBody")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("html_body");
+
+ b.Property("Key")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("character varying(100)")
+ .HasColumnName("key");
+
+ b.Property("LanguageCode")
+ .IsRequired()
+ .HasMaxLength(10)
+ .HasColumnType("character varying(10)")
+ .HasColumnName("language_code");
+
+ b.Property("ServiceName")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("character varying(100)")
+ .HasColumnName("service_name");
+
+ b.Property("Subject")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("subject");
+
+ b.Property("TextBody")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("text_body");
+
+ b.Property("Updated")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("updated");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ServiceName", "Key", "LanguageCode")
+ .IsUnique();
+
+ b.ToTable("email_templates", (string)null);
+ });
+
+ modelBuilder.Entity("HrynCo.NotificationService.DAL.EF.Entities.EmailChannelUsageEntity", b =>
+ {
+ b.HasOne("HrynCo.NotificationService.DAL.EF.Entities.EmailChannelEntity", null)
+ .WithMany("UsageRecords")
+ .HasForeignKey("ProviderId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+ });
+
+ modelBuilder.Entity("HrynCo.NotificationService.DAL.EF.Entities.EmailTemplateEntity", b =>
+ {
+ b.OwnsMany("HrynCo.NotificationService.DAL.EF.Entities.EmailTemplateVariableData", "Variables", b1 =>
+ {
+ b1.Property("EmailTemplateEntityId")
+ .HasColumnType("uuid");
+
+ b1.Property("__synthesizedOrdinal")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ b1.Property("Name")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasAnnotation("Relational:JsonPropertyName", "name");
+
+ b1.Property("Required")
+ .HasColumnType("boolean")
+ .HasAnnotation("Relational:JsonPropertyName", "required");
+
+ b1.HasKey("EmailTemplateEntityId", "__synthesizedOrdinal");
+
+ b1.ToTable("email_templates");
+
+ b1.ToJson("variables");
+
+ b1.WithOwner()
+ .HasForeignKey("EmailTemplateEntityId");
+ });
+
+ b.Navigation("Variables");
+ });
+
+ modelBuilder.Entity("HrynCo.NotificationService.DAL.EF.Entities.EmailChannelEntity", b =>
+ {
+ b.Navigation("UsageRecords");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/HrynCo.NotificationService.DAL.EF/Migrations/20260502154249_PendingChanges.cs b/HrynCo.NotificationService.DAL.EF/Migrations/20260502154249_PendingChanges.cs
new file mode 100644
index 0000000..e3fbc77
--- /dev/null
+++ b/HrynCo.NotificationService.DAL.EF/Migrations/20260502154249_PendingChanges.cs
@@ -0,0 +1,30 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace HrynCo.NotificationService.DAL.EF.Migrations
+{
+ ///
+ public partial class PendingChanges : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AddForeignKey(
+ name: "FK_email_channel_usage_email_channels_provider_id",
+ table: "email_channel_usage",
+ column: "provider_id",
+ principalTable: "email_channels",
+ principalColumn: "id",
+ onDelete: ReferentialAction.Cascade);
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropForeignKey(
+ name: "FK_email_channel_usage_email_channels_provider_id",
+ table: "email_channel_usage");
+ }
+ }
+}
diff --git a/HrynCo.NotificationService.DAL.EF/Migrations/NotificationDbContextModelSnapshot.cs b/HrynCo.NotificationService.DAL.EF/Migrations/NotificationDbContextModelSnapshot.cs
index 4266c16..125decf 100644
--- a/HrynCo.NotificationService.DAL.EF/Migrations/NotificationDbContextModelSnapshot.cs
+++ b/HrynCo.NotificationService.DAL.EF/Migrations/NotificationDbContextModelSnapshot.cs
@@ -170,6 +170,15 @@ namespace HrynCo.NotificationService.DAL.EF.Migrations
b.ToTable("email_templates", (string)null);
});
+ modelBuilder.Entity("HrynCo.NotificationService.DAL.EF.Entities.EmailChannelUsageEntity", b =>
+ {
+ b.HasOne("HrynCo.NotificationService.DAL.EF.Entities.EmailChannelEntity", null)
+ .WithMany("UsageRecords")
+ .HasForeignKey("ProviderId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+ });
+
modelBuilder.Entity("HrynCo.NotificationService.DAL.EF.Entities.EmailTemplateEntity", b =>
{
b.OwnsMany("HrynCo.NotificationService.DAL.EF.Entities.EmailTemplateVariableData", "Variables", b1 =>
@@ -202,6 +211,11 @@ namespace HrynCo.NotificationService.DAL.EF.Migrations
b.Navigation("Variables");
});
+
+ modelBuilder.Entity("HrynCo.NotificationService.DAL.EF.Entities.EmailChannelEntity", b =>
+ {
+ b.Navigation("UsageRecords");
+ });
#pragma warning restore 612, 618
}
}