// using System; using System.Collections.Generic; using Cleanuparr.Persistence; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable namespace Cleanuparr.Persistence.Migrations.Data { [DbContext(typeof(DataContext))] [Migration("20250830230846_ReworkNotificationSystem")] partial class ReworkNotificationSystem { /// protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder.HasAnnotation("ProductVersion", "9.0.6"); modelBuilder.Entity("Cleanuparr.Persistence.Models.Configuration.Arr.ArrConfig", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("TEXT") .HasColumnName("id"); b.Property("FailedImportMaxStrikes") .HasColumnType("INTEGER") .HasColumnName("failed_import_max_strikes"); b.Property("Type") .IsRequired() .HasColumnType("TEXT") .HasColumnName("type"); b.HasKey("Id") .HasName("pk_arr_configs"); b.ToTable("arr_configs", (string)null); }); modelBuilder.Entity("Cleanuparr.Persistence.Models.Configuration.Arr.ArrInstance", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("TEXT") .HasColumnName("id"); b.Property("ApiKey") .IsRequired() .HasColumnType("TEXT") .HasColumnName("api_key"); b.Property("ArrConfigId") .HasColumnType("TEXT") .HasColumnName("arr_config_id"); b.Property("Enabled") .HasColumnType("INTEGER") .HasColumnName("enabled"); b.Property("Name") .IsRequired() .HasColumnType("TEXT") .HasColumnName("name"); b.Property("Url") .IsRequired() .HasColumnType("TEXT") .HasColumnName("url"); b.HasKey("Id") .HasName("pk_arr_instances"); b.HasIndex("ArrConfigId") .HasDatabaseName("ix_arr_instances_arr_config_id"); b.ToTable("arr_instances", (string)null); }); modelBuilder.Entity("Cleanuparr.Persistence.Models.Configuration.DownloadCleaner.CleanCategory", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("TEXT") .HasColumnName("id"); b.Property("DownloadCleanerConfigId") .HasColumnType("TEXT") .HasColumnName("download_cleaner_config_id"); b.Property("MaxRatio") .HasColumnType("REAL") .HasColumnName("max_ratio"); b.Property("MaxSeedTime") .HasColumnType("REAL") .HasColumnName("max_seed_time"); b.Property("MinSeedTime") .HasColumnType("REAL") .HasColumnName("min_seed_time"); b.Property("Name") .IsRequired() .HasColumnType("TEXT") .HasColumnName("name"); b.HasKey("Id") .HasName("pk_clean_categories"); b.HasIndex("DownloadCleanerConfigId") .HasDatabaseName("ix_clean_categories_download_cleaner_config_id"); b.ToTable("clean_categories", (string)null); }); modelBuilder.Entity("Cleanuparr.Persistence.Models.Configuration.DownloadCleaner.DownloadCleanerConfig", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("TEXT") .HasColumnName("id"); b.Property("CronExpression") .IsRequired() .HasColumnType("TEXT") .HasColumnName("cron_expression"); b.Property("DeletePrivate") .HasColumnType("INTEGER") .HasColumnName("delete_private"); b.Property("Enabled") .HasColumnType("INTEGER") .HasColumnName("enabled"); b.PrimitiveCollection("UnlinkedCategories") .IsRequired() .HasColumnType("TEXT") .HasColumnName("unlinked_categories"); b.Property("UnlinkedEnabled") .HasColumnType("INTEGER") .HasColumnName("unlinked_enabled"); b.Property("UnlinkedIgnoredRootDir") .IsRequired() .HasColumnType("TEXT") .HasColumnName("unlinked_ignored_root_dir"); b.Property("UnlinkedTargetCategory") .IsRequired() .HasColumnType("TEXT") .HasColumnName("unlinked_target_category"); b.Property("UnlinkedUseTag") .HasColumnType("INTEGER") .HasColumnName("unlinked_use_tag"); b.Property("UseAdvancedScheduling") .HasColumnType("INTEGER") .HasColumnName("use_advanced_scheduling"); b.HasKey("Id") .HasName("pk_download_cleaner_configs"); b.ToTable("download_cleaner_configs", (string)null); }); modelBuilder.Entity("Cleanuparr.Persistence.Models.Configuration.DownloadClientConfig", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("TEXT") .HasColumnName("id"); b.Property("Enabled") .HasColumnType("INTEGER") .HasColumnName("enabled"); b.Property("Host") .HasColumnType("TEXT") .HasColumnName("host"); b.Property("Name") .IsRequired() .HasColumnType("TEXT") .HasColumnName("name"); b.Property("Password") .HasColumnType("TEXT") .HasColumnName("password"); b.Property("Type") .IsRequired() .HasColumnType("TEXT") .HasColumnName("type"); b.Property("TypeName") .IsRequired() .HasColumnType("TEXT") .HasColumnName("type_name"); b.Property("UrlBase") .HasColumnType("TEXT") .HasColumnName("url_base"); b.Property("Username") .HasColumnType("TEXT") .HasColumnName("username"); b.HasKey("Id") .HasName("pk_download_clients"); b.ToTable("download_clients", (string)null); }); modelBuilder.Entity("Cleanuparr.Persistence.Models.Configuration.General.GeneralConfig", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("TEXT") .HasColumnName("id"); b.Property("DisplaySupportBanner") .HasColumnType("INTEGER") .HasColumnName("display_support_banner"); b.Property("DryRun") .HasColumnType("INTEGER") .HasColumnName("dry_run"); b.Property("EncryptionKey") .IsRequired() .HasColumnType("TEXT") .HasColumnName("encryption_key"); b.Property("HttpCertificateValidation") .IsRequired() .HasColumnType("TEXT") .HasColumnName("http_certificate_validation"); b.Property("HttpMaxRetries") .HasColumnType("INTEGER") .HasColumnName("http_max_retries"); b.Property("HttpTimeout") .HasColumnType("INTEGER") .HasColumnName("http_timeout"); b.PrimitiveCollection("IgnoredDownloads") .IsRequired() .HasColumnType("TEXT") .HasColumnName("ignored_downloads"); b.Property("LogLevel") .IsRequired() .HasColumnType("TEXT") .HasColumnName("log_level"); b.Property("SearchDelay") .HasColumnType("INTEGER") .HasColumnName("search_delay"); b.Property("SearchEnabled") .HasColumnType("INTEGER") .HasColumnName("search_enabled"); b.HasKey("Id") .HasName("pk_general_configs"); b.ToTable("general_configs", (string)null); }); modelBuilder.Entity("Cleanuparr.Persistence.Models.Configuration.MalwareBlocker.ContentBlockerConfig", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("TEXT") .HasColumnName("id"); b.Property("CronExpression") .IsRequired() .HasColumnType("TEXT") .HasColumnName("cron_expression"); b.Property("DeleteKnownMalware") .HasColumnType("INTEGER") .HasColumnName("delete_known_malware"); b.Property("DeletePrivate") .HasColumnType("INTEGER") .HasColumnName("delete_private"); b.Property("Enabled") .HasColumnType("INTEGER") .HasColumnName("enabled"); b.Property("IgnorePrivate") .HasColumnType("INTEGER") .HasColumnName("ignore_private"); b.Property("UseAdvancedScheduling") .HasColumnType("INTEGER") .HasColumnName("use_advanced_scheduling"); b.ComplexProperty>("Lidarr", "Cleanuparr.Persistence.Models.Configuration.MalwareBlocker.ContentBlockerConfig.Lidarr#BlocklistSettings", b1 => { b1.IsRequired(); b1.Property("BlocklistPath") .HasColumnType("TEXT") .HasColumnName("lidarr_blocklist_path"); b1.Property("BlocklistType") .IsRequired() .HasColumnType("TEXT") .HasColumnName("lidarr_blocklist_type"); b1.Property("Enabled") .HasColumnType("INTEGER") .HasColumnName("lidarr_enabled"); }); b.ComplexProperty>("Radarr", "Cleanuparr.Persistence.Models.Configuration.MalwareBlocker.ContentBlockerConfig.Radarr#BlocklistSettings", b1 => { b1.IsRequired(); b1.Property("BlocklistPath") .HasColumnType("TEXT") .HasColumnName("radarr_blocklist_path"); b1.Property("BlocklistType") .IsRequired() .HasColumnType("TEXT") .HasColumnName("radarr_blocklist_type"); b1.Property("Enabled") .HasColumnType("INTEGER") .HasColumnName("radarr_enabled"); }); b.ComplexProperty>("Readarr", "Cleanuparr.Persistence.Models.Configuration.MalwareBlocker.ContentBlockerConfig.Readarr#BlocklistSettings", b1 => { b1.IsRequired(); b1.Property("BlocklistPath") .HasColumnType("TEXT") .HasColumnName("readarr_blocklist_path"); b1.Property("BlocklistType") .IsRequired() .HasColumnType("TEXT") .HasColumnName("readarr_blocklist_type"); b1.Property("Enabled") .HasColumnType("INTEGER") .HasColumnName("readarr_enabled"); }); b.ComplexProperty>("Sonarr", "Cleanuparr.Persistence.Models.Configuration.MalwareBlocker.ContentBlockerConfig.Sonarr#BlocklistSettings", b1 => { b1.IsRequired(); b1.Property("BlocklistPath") .HasColumnType("TEXT") .HasColumnName("sonarr_blocklist_path"); b1.Property("BlocklistType") .IsRequired() .HasColumnType("TEXT") .HasColumnName("sonarr_blocklist_type"); b1.Property("Enabled") .HasColumnType("INTEGER") .HasColumnName("sonarr_enabled"); }); b.ComplexProperty>("Whisparr", "Cleanuparr.Persistence.Models.Configuration.MalwareBlocker.ContentBlockerConfig.Whisparr#BlocklistSettings", b1 => { b1.IsRequired(); b1.Property("BlocklistPath") .HasColumnType("TEXT") .HasColumnName("whisparr_blocklist_path"); b1.Property("BlocklistType") .HasColumnType("INTEGER") .HasColumnName("whisparr_blocklist_type"); b1.Property("Enabled") .HasColumnType("INTEGER") .HasColumnName("whisparr_enabled"); }); b.HasKey("Id") .HasName("pk_content_blocker_configs"); b.ToTable("content_blocker_configs", (string)null); }); modelBuilder.Entity("Cleanuparr.Persistence.Models.Configuration.Notification.AppriseConfig", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("TEXT") .HasColumnName("id"); b.Property("Key") .IsRequired() .HasMaxLength(255) .HasColumnType("TEXT") .HasColumnName("key"); b.Property("NotificationConfigId") .HasColumnType("TEXT") .HasColumnName("notification_config_id"); b.Property("Tags") .HasMaxLength(255) .HasColumnType("TEXT") .HasColumnName("tags"); b.Property("Url") .IsRequired() .HasMaxLength(500) .HasColumnType("TEXT") .HasColumnName("url"); b.HasKey("Id") .HasName("pk_apprise_configs"); b.HasIndex("NotificationConfigId") .IsUnique() .HasDatabaseName("ix_apprise_configs_notification_config_id"); b.ToTable("apprise_configs", (string)null); }); modelBuilder.Entity("Cleanuparr.Persistence.Models.Configuration.Notification.NotifiarrConfig", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("TEXT") .HasColumnName("id"); b.Property("ApiKey") .IsRequired() .HasMaxLength(255) .HasColumnType("TEXT") .HasColumnName("api_key"); b.Property("ChannelId") .IsRequired() .HasMaxLength(50) .HasColumnType("TEXT") .HasColumnName("channel_id"); b.Property("NotificationConfigId") .HasColumnType("TEXT") .HasColumnName("notification_config_id"); b.HasKey("Id") .HasName("pk_notifiarr_configs"); b.HasIndex("NotificationConfigId") .IsUnique() .HasDatabaseName("ix_notifiarr_configs_notification_config_id"); b.ToTable("notifiarr_configs", (string)null); }); modelBuilder.Entity("Cleanuparr.Persistence.Models.Configuration.Notification.NotificationConfig", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("TEXT") .HasColumnName("id"); b.Property("CreatedAt") .HasColumnType("TEXT") .HasColumnName("created_at"); b.Property("IsEnabled") .HasColumnType("INTEGER") .HasColumnName("is_enabled"); b.Property("Name") .IsRequired() .HasMaxLength(100) .HasColumnType("TEXT") .HasColumnName("name"); b.Property("OnCategoryChanged") .HasColumnType("INTEGER") .HasColumnName("on_category_changed"); b.Property("OnDownloadCleaned") .HasColumnType("INTEGER") .HasColumnName("on_download_cleaned"); b.Property("OnFailedImportStrike") .HasColumnType("INTEGER") .HasColumnName("on_failed_import_strike"); b.Property("OnQueueItemDeleted") .HasColumnType("INTEGER") .HasColumnName("on_queue_item_deleted"); b.Property("OnSlowStrike") .HasColumnType("INTEGER") .HasColumnName("on_slow_strike"); b.Property("OnStalledStrike") .HasColumnType("INTEGER") .HasColumnName("on_stalled_strike"); b.Property("Type") .IsRequired() .HasColumnType("TEXT") .HasColumnName("type"); b.Property("UpdatedAt") .HasColumnType("TEXT") .HasColumnName("updated_at"); b.HasKey("Id") .HasName("pk_notification_configs"); b.HasIndex("Name") .IsUnique() .HasDatabaseName("ix_notification_configs_name"); b.ToTable("notification_configs", (string)null); }); modelBuilder.Entity("Cleanuparr.Persistence.Models.Configuration.QueueCleaner.QueueCleanerConfig", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("TEXT") .HasColumnName("id"); b.Property("CronExpression") .IsRequired() .HasColumnType("TEXT") .HasColumnName("cron_expression"); b.Property("Enabled") .HasColumnType("INTEGER") .HasColumnName("enabled"); b.Property("UseAdvancedScheduling") .HasColumnType("INTEGER") .HasColumnName("use_advanced_scheduling"); b.ComplexProperty>("FailedImport", "Cleanuparr.Persistence.Models.Configuration.QueueCleaner.QueueCleanerConfig.FailedImport#FailedImportConfig", b1 => { b1.IsRequired(); b1.Property("DeletePrivate") .HasColumnType("INTEGER") .HasColumnName("failed_import_delete_private"); b1.Property("IgnorePrivate") .HasColumnType("INTEGER") .HasColumnName("failed_import_ignore_private"); b1.PrimitiveCollection("IgnoredPatterns") .IsRequired() .HasColumnType("TEXT") .HasColumnName("failed_import_ignored_patterns"); b1.Property("MaxStrikes") .HasColumnType("INTEGER") .HasColumnName("failed_import_max_strikes"); }); b.ComplexProperty>("Slow", "Cleanuparr.Persistence.Models.Configuration.QueueCleaner.QueueCleanerConfig.Slow#SlowConfig", b1 => { b1.IsRequired(); b1.Property("DeletePrivate") .HasColumnType("INTEGER") .HasColumnName("slow_delete_private"); b1.Property("IgnoreAboveSize") .IsRequired() .HasColumnType("TEXT") .HasColumnName("slow_ignore_above_size"); b1.Property("IgnorePrivate") .HasColumnType("INTEGER") .HasColumnName("slow_ignore_private"); b1.Property("MaxStrikes") .HasColumnType("INTEGER") .HasColumnName("slow_max_strikes"); b1.Property("MaxTime") .HasColumnType("REAL") .HasColumnName("slow_max_time"); b1.Property("MinSpeed") .IsRequired() .HasColumnType("TEXT") .HasColumnName("slow_min_speed"); b1.Property("ResetStrikesOnProgress") .HasColumnType("INTEGER") .HasColumnName("slow_reset_strikes_on_progress"); }); b.ComplexProperty>("Stalled", "Cleanuparr.Persistence.Models.Configuration.QueueCleaner.QueueCleanerConfig.Stalled#StalledConfig", b1 => { b1.IsRequired(); b1.Property("DeletePrivate") .HasColumnType("INTEGER") .HasColumnName("stalled_delete_private"); b1.Property("DownloadingMetadataMaxStrikes") .HasColumnType("INTEGER") .HasColumnName("stalled_downloading_metadata_max_strikes"); b1.Property("IgnorePrivate") .HasColumnType("INTEGER") .HasColumnName("stalled_ignore_private"); b1.Property("MaxStrikes") .HasColumnType("INTEGER") .HasColumnName("stalled_max_strikes"); b1.Property("ResetStrikesOnProgress") .HasColumnType("INTEGER") .HasColumnName("stalled_reset_strikes_on_progress"); }); b.HasKey("Id") .HasName("pk_queue_cleaner_configs"); b.ToTable("queue_cleaner_configs", (string)null); }); modelBuilder.Entity("Cleanuparr.Persistence.Models.Configuration.Arr.ArrInstance", b => { b.HasOne("Cleanuparr.Persistence.Models.Configuration.Arr.ArrConfig", "ArrConfig") .WithMany("Instances") .HasForeignKey("ArrConfigId") .OnDelete(DeleteBehavior.Cascade) .IsRequired() .HasConstraintName("fk_arr_instances_arr_configs_arr_config_id"); b.Navigation("ArrConfig"); }); modelBuilder.Entity("Cleanuparr.Persistence.Models.Configuration.DownloadCleaner.CleanCategory", b => { b.HasOne("Cleanuparr.Persistence.Models.Configuration.DownloadCleaner.DownloadCleanerConfig", "DownloadCleanerConfig") .WithMany("Categories") .HasForeignKey("DownloadCleanerConfigId") .OnDelete(DeleteBehavior.Cascade) .IsRequired() .HasConstraintName("fk_clean_categories_download_cleaner_configs_download_cleaner_config_id"); b.Navigation("DownloadCleanerConfig"); }); modelBuilder.Entity("Cleanuparr.Persistence.Models.Configuration.Notification.AppriseConfig", b => { b.HasOne("Cleanuparr.Persistence.Models.Configuration.Notification.NotificationConfig", "NotificationConfig") .WithOne("AppriseConfiguration") .HasForeignKey("Cleanuparr.Persistence.Models.Configuration.Notification.AppriseConfig", "NotificationConfigId") .OnDelete(DeleteBehavior.Cascade) .IsRequired() .HasConstraintName("fk_apprise_configs_notification_configs_notification_config_id"); b.Navigation("NotificationConfig"); }); modelBuilder.Entity("Cleanuparr.Persistence.Models.Configuration.Notification.NotifiarrConfig", b => { b.HasOne("Cleanuparr.Persistence.Models.Configuration.Notification.NotificationConfig", "NotificationConfig") .WithOne("NotifiarrConfiguration") .HasForeignKey("Cleanuparr.Persistence.Models.Configuration.Notification.NotifiarrConfig", "NotificationConfigId") .OnDelete(DeleteBehavior.Cascade) .IsRequired() .HasConstraintName("fk_notifiarr_configs_notification_configs_notification_config_id"); b.Navigation("NotificationConfig"); }); modelBuilder.Entity("Cleanuparr.Persistence.Models.Configuration.Arr.ArrConfig", b => { b.Navigation("Instances"); }); modelBuilder.Entity("Cleanuparr.Persistence.Models.Configuration.DownloadCleaner.DownloadCleanerConfig", b => { b.Navigation("Categories"); }); modelBuilder.Entity("Cleanuparr.Persistence.Models.Configuration.Notification.NotificationConfig", b => { b.Navigation("AppriseConfiguration"); b.Navigation("NotifiarrConfiguration"); }); #pragma warning restore 612, 618 } } }