Files

762 lines
30 KiB
C#

// <auto-generated />
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;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace Cleanuparr.Persistence.Postgres.Migrations.Events
{
[DbContext(typeof(EventsContext))]
[Migration("20260710201654_InitialPostgres")]
partial class InitialPostgres
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasDefaultSchema("events")
.HasAnnotation("ProductVersion", "10.0.1")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("Cleanuparr.Persistence.Models.Events.AppEvent", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid")
.HasColumnName("id");
b.Property<Guid?>("ArrInstanceId")
.HasColumnType("uuid")
.HasColumnName("arr_instance_id");
b.Property<string>("CleanReason")
.HasColumnType("text")
.HasColumnName("clean_reason");
b.Property<string>("CleanedCategory")
.HasMaxLength(200)
.HasColumnType("character varying(200)")
.HasColumnName("cleaned_category");
b.Property<DateTimeOffset?>("CompletedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("completed_at");
b.Property<Guid?>("CycleId")
.HasColumnType("uuid")
.HasColumnName("cycle_id");
b.Property<string>("DeleteReason")
.HasColumnType("text")
.HasColumnName("delete_reason");
b.Property<Guid?>("DownloadClientId")
.HasColumnType("uuid")
.HasColumnName("download_client_id");
b.Property<string>("EventType")
.IsRequired()
.HasColumnType("text")
.HasColumnName("event_type");
b.PrimitiveCollection<List<string>>("FailedImportReasons")
.IsRequired()
.HasColumnType("text[]")
.HasColumnName("failed_import_reasons");
b.PrimitiveCollection<List<string>>("GrabbedItems")
.IsRequired()
.HasColumnType("text[]")
.HasColumnName("grabbed_items");
b.Property<bool?>("IsCategoryTag")
.HasColumnType("boolean")
.HasColumnName("is_category_tag");
b.Property<bool>("IsDryRun")
.HasColumnType("boolean")
.HasColumnName("is_dry_run");
b.Property<string>("ItemHash")
.HasMaxLength(100)
.HasColumnType("character varying(100)")
.HasColumnName("item_hash");
b.Property<string>("ItemTitle")
.HasMaxLength(500)
.HasColumnType("character varying(500)")
.HasColumnName("item_title");
b.Property<Guid?>("JobRunId")
.HasColumnType("uuid")
.HasColumnName("job_run_id");
b.Property<string>("Message")
.IsRequired()
.HasMaxLength(1000)
.HasColumnType("character varying(1000)")
.HasColumnName("message");
b.Property<string>("NewCategory")
.HasMaxLength(200)
.HasColumnType("character varying(200)")
.HasColumnName("new_category");
b.Property<string>("OldCategory")
.HasMaxLength(200)
.HasColumnType("character varying(200)")
.HasColumnName("old_category");
b.Property<bool?>("RemoveFromClient")
.HasColumnType("boolean")
.HasColumnName("remove_from_client");
b.Property<string>("SearchReason")
.HasColumnType("text")
.HasColumnName("search_reason");
b.Property<string>("SearchStatus")
.HasColumnType("text")
.HasColumnName("search_status");
b.Property<string>("SearchType")
.HasColumnType("text")
.HasColumnName("search_type");
b.Property<double?>("SeedRatio")
.HasColumnType("double precision")
.HasColumnName("seed_ratio");
b.Property<double?>("SeedingTimeHours")
.HasColumnType("double precision")
.HasColumnName("seeding_time_hours");
b.Property<string>("Severity")
.IsRequired()
.HasColumnType("text")
.HasColumnName("severity");
b.Property<int?>("StrikeCount")
.HasColumnType("integer")
.HasColumnName("strike_count");
b.Property<Guid?>("StrikeId")
.HasColumnType("uuid")
.HasColumnName("strike_id");
b.Property<DateTimeOffset>("Timestamp")
.HasColumnType("timestamp with time zone")
.HasColumnName("timestamp");
b.Property<Guid?>("TrackingId")
.HasColumnType("uuid")
.HasColumnName("tracking_id");
b.HasKey("Id")
.HasName("pk_events");
b.HasIndex("ArrInstanceId")
.HasDatabaseName("ix_events_arr_instance_id");
b.HasIndex("CycleId")
.HasDatabaseName("ix_events_cycle_id");
b.HasIndex("DeleteReason")
.HasDatabaseName("ix_events_delete_reason");
b.HasIndex("EventType")
.HasDatabaseName("ix_events_event_type");
b.HasIndex("JobRunId")
.HasDatabaseName("ix_events_job_run_id");
b.HasIndex("Severity")
.HasDatabaseName("ix_events_severity");
b.HasIndex("StrikeId")
.HasDatabaseName("ix_events_strike_id");
b.HasIndex("Timestamp")
.IsDescending()
.HasDatabaseName("ix_events_timestamp");
b.ToTable("events", "events");
});
modelBuilder.Entity("Cleanuparr.Persistence.Models.Events.ManualEvent", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid")
.HasColumnName("id");
b.Property<string>("DownloadClientName")
.HasMaxLength(200)
.HasColumnType("character varying(200)")
.HasColumnName("download_client_name");
b.Property<string>("DownloadClientType")
.HasColumnType("text")
.HasColumnName("download_client_type");
b.Property<string>("InstanceType")
.HasColumnType("text")
.HasColumnName("instance_type");
b.Property<string>("InstanceUrl")
.HasMaxLength(500)
.HasColumnType("character varying(500)")
.HasColumnName("instance_url");
b.Property<bool>("IsDryRun")
.HasColumnType("boolean")
.HasColumnName("is_dry_run");
b.Property<bool>("IsResolved")
.HasColumnType("boolean")
.HasColumnName("is_resolved");
b.Property<string>("ItemHash")
.HasMaxLength(100)
.HasColumnType("character varying(100)")
.HasColumnName("item_hash");
b.Property<string>("ItemTitle")
.HasMaxLength(500)
.HasColumnType("character varying(500)")
.HasColumnName("item_title");
b.Property<Guid?>("JobRunId")
.HasColumnType("uuid")
.HasColumnName("job_run_id");
b.Property<string>("Message")
.IsRequired()
.HasMaxLength(1000)
.HasColumnType("character varying(1000)")
.HasColumnName("message");
b.Property<DateTimeOffset?>("ResolvedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("resolved_at");
b.Property<string>("Severity")
.IsRequired()
.HasColumnType("text")
.HasColumnName("severity");
b.Property<int?>("StrikeCount")
.HasColumnType("integer")
.HasColumnName("strike_count");
b.Property<DateTimeOffset>("Timestamp")
.HasColumnType("timestamp with time zone")
.HasColumnName("timestamp");
b.Property<string>("Type")
.IsRequired()
.HasColumnType("text")
.HasColumnName("type");
b.HasKey("Id")
.HasName("pk_manual_events");
b.HasIndex("InstanceType")
.HasDatabaseName("ix_manual_events_instance_type");
b.HasIndex("IsResolved")
.HasDatabaseName("ix_manual_events_is_resolved");
b.HasIndex("JobRunId")
.HasDatabaseName("ix_manual_events_job_run_id");
b.HasIndex("Message")
.HasDatabaseName("ix_manual_events_message");
b.HasIndex("Severity")
.HasDatabaseName("ix_manual_events_severity");
b.HasIndex("Timestamp")
.IsDescending()
.HasDatabaseName("ix_manual_events_timestamp");
b.HasIndex("Type", "ItemHash")
.IsUnique()
.HasDatabaseName("ix_manual_events_type_item_hash")
.HasFilter("is_resolved = false");
b.ToTable("manual_events", "events");
});
modelBuilder.Entity("Cleanuparr.Persistence.Models.State.CustomFormatScoreEntry", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid")
.HasColumnName("id");
b.Property<Guid>("ArrInstanceId")
.HasColumnType("uuid")
.HasColumnName("arr_instance_id");
b.Property<int>("CurrentScore")
.HasColumnType("integer")
.HasColumnName("current_score");
b.Property<int>("CutoffScore")
.HasColumnType("integer")
.HasColumnName("cutoff_score");
b.Property<long>("EpisodeId")
.HasColumnType("bigint")
.HasColumnName("episode_id");
b.Property<long>("ExternalItemId")
.HasColumnType("bigint")
.HasColumnName("external_item_id");
b.Property<long>("FileId")
.HasColumnType("bigint")
.HasColumnName("file_id");
b.Property<bool>("IsMonitored")
.HasColumnType("boolean")
.HasColumnName("is_monitored");
b.Property<string>("ItemType")
.IsRequired()
.HasColumnType("text")
.HasColumnName("item_type");
b.Property<DateTimeOffset>("LastSyncedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("last_synced_at");
b.Property<DateTimeOffset?>("LastUpgradedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("last_upgraded_at");
b.Property<string>("QualityProfileName")
.IsRequired()
.HasColumnType("text")
.HasColumnName("quality_profile_name");
b.Property<string>("Title")
.IsRequired()
.HasColumnType("text")
.HasColumnName("title");
b.HasKey("Id")
.HasName("pk_custom_format_score_entries");
b.HasIndex("LastUpgradedAt")
.HasDatabaseName("ix_custom_format_score_entries_last_upgraded_at");
b.HasIndex("ArrInstanceId", "ExternalItemId", "EpisodeId")
.IsUnique()
.HasDatabaseName("ix_custom_format_score_entries_arr_instance_id_external_item_i");
b.ToTable("custom_format_score_entries", "events");
});
modelBuilder.Entity("Cleanuparr.Persistence.Models.State.CustomFormatScoreHistory", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid")
.HasColumnName("id");
b.Property<Guid>("ArrInstanceId")
.HasColumnType("uuid")
.HasColumnName("arr_instance_id");
b.Property<int>("CutoffScore")
.HasColumnType("integer")
.HasColumnName("cutoff_score");
b.Property<long>("EpisodeId")
.HasColumnType("bigint")
.HasColumnName("episode_id");
b.Property<long>("ExternalItemId")
.HasColumnType("bigint")
.HasColumnName("external_item_id");
b.Property<string>("ItemType")
.IsRequired()
.HasColumnType("text")
.HasColumnName("item_type");
b.Property<DateTimeOffset>("RecordedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("recorded_at");
b.Property<int>("Score")
.HasColumnType("integer")
.HasColumnName("score");
b.Property<string>("Title")
.IsRequired()
.HasColumnType("text")
.HasColumnName("title");
b.HasKey("Id")
.HasName("pk_custom_format_score_history");
b.HasIndex("RecordedAt")
.HasDatabaseName("ix_custom_format_score_history_recorded_at");
b.HasIndex("ArrInstanceId", "ExternalItemId", "EpisodeId")
.HasDatabaseName("ix_custom_format_score_history_arr_instance_id_external_item_i");
b.ToTable("custom_format_score_history", "events");
});
modelBuilder.Entity("Cleanuparr.Persistence.Models.State.DownloadItem", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid")
.HasColumnName("id");
b.Property<string>("DownloadId")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("character varying(100)")
.HasColumnName("download_id");
b.Property<bool>("IsMarkedForRemoval")
.HasColumnType("boolean")
.HasColumnName("is_marked_for_removal");
b.Property<bool>("IsRemoved")
.HasColumnType("boolean")
.HasColumnName("is_removed");
b.Property<bool>("IsReturning")
.HasColumnType("boolean")
.HasColumnName("is_returning");
b.Property<string>("Title")
.IsRequired()
.HasMaxLength(500)
.HasColumnType("character varying(500)")
.HasColumnName("title");
b.HasKey("Id")
.HasName("pk_download_items");
b.HasIndex("DownloadId")
.IsUnique()
.HasDatabaseName("ix_download_items_download_id");
b.ToTable("download_items", "events");
});
modelBuilder.Entity("Cleanuparr.Persistence.Models.State.JobRun", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid")
.HasColumnName("id");
b.Property<DateTimeOffset?>("CompletedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("completed_at");
b.Property<DateTimeOffset>("StartedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("started_at");
b.Property<string>("Status")
.HasColumnType("text")
.HasColumnName("status");
b.Property<string>("Type")
.IsRequired()
.HasColumnType("text")
.HasColumnName("type");
b.HasKey("Id")
.HasName("pk_job_runs");
b.HasIndex("StartedAt")
.IsDescending()
.HasDatabaseName("ix_job_runs_started_at");
b.HasIndex("Type")
.HasDatabaseName("ix_job_runs_type");
b.ToTable("job_runs", "events");
});
modelBuilder.Entity("Cleanuparr.Persistence.Models.State.SearchQueueItem", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid")
.HasColumnName("id");
b.Property<Guid>("ArrInstanceId")
.HasColumnType("uuid")
.HasColumnName("arr_instance_id");
b.Property<DateTimeOffset>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("created_at");
b.Property<long>("ItemId")
.HasColumnType("bigint")
.HasColumnName("item_id");
b.Property<string>("SearchType")
.HasColumnType("text")
.HasColumnName("search_type");
b.Property<long?>("SeriesId")
.HasColumnType("bigint")
.HasColumnName("series_id");
b.Property<string>("Title")
.IsRequired()
.HasColumnType("text")
.HasColumnName("title");
b.HasKey("Id")
.HasName("pk_search_queue");
b.HasIndex("ArrInstanceId")
.HasDatabaseName("ix_search_queue_arr_instance_id");
b.ToTable("search_queue", "events");
});
modelBuilder.Entity("Cleanuparr.Persistence.Models.State.SeekerCommandTracker", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid")
.HasColumnName("id");
b.Property<Guid>("ArrInstanceId")
.HasColumnType("uuid")
.HasColumnName("arr_instance_id");
b.Property<long>("CommandId")
.HasColumnType("bigint")
.HasColumnName("command_id");
b.Property<DateTimeOffset>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("created_at");
b.Property<Guid>("EventId")
.HasColumnType("uuid")
.HasColumnName("event_id");
b.Property<long>("ExternalItemId")
.HasColumnType("bigint")
.HasColumnName("external_item_id");
b.Property<string>("ItemTitle")
.IsRequired()
.HasColumnType("text")
.HasColumnName("item_title");
b.Property<int>("SeasonNumber")
.HasColumnType("integer")
.HasColumnName("season_number");
b.Property<string>("Status")
.IsRequired()
.HasColumnType("text")
.HasColumnName("status");
b.HasKey("Id")
.HasName("pk_seeker_command_trackers");
b.HasIndex("ArrInstanceId")
.HasDatabaseName("ix_seeker_command_trackers_arr_instance_id");
b.ToTable("seeker_command_trackers", "events");
});
modelBuilder.Entity("Cleanuparr.Persistence.Models.State.SeekerHistory", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid")
.HasColumnName("id");
b.Property<Guid>("ArrInstanceId")
.HasColumnType("uuid")
.HasColumnName("arr_instance_id");
b.Property<Guid>("CycleId")
.HasColumnType("uuid")
.HasColumnName("cycle_id");
b.Property<long>("ExternalItemId")
.HasColumnType("bigint")
.HasColumnName("external_item_id");
b.Property<bool>("IsDryRun")
.HasColumnType("boolean")
.HasColumnName("is_dry_run");
b.Property<string>("ItemTitle")
.IsRequired()
.HasColumnType("text")
.HasColumnName("item_title");
b.Property<string>("ItemType")
.IsRequired()
.HasColumnType("text")
.HasColumnName("item_type");
b.Property<DateTimeOffset>("LastSearchedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("last_searched_at");
b.Property<int>("SearchCount")
.HasColumnType("integer")
.HasColumnName("search_count");
b.Property<int>("SeasonNumber")
.HasColumnType("integer")
.HasColumnName("season_number");
b.HasKey("Id")
.HasName("pk_seeker_history");
b.HasIndex("ArrInstanceId", "ExternalItemId", "ItemType", "SeasonNumber", "CycleId")
.IsUnique()
.HasDatabaseName("ix_seeker_history_arr_instance_id_external_item_id_item_type_s");
b.ToTable("seeker_history", "events");
});
modelBuilder.Entity("Cleanuparr.Persistence.Models.State.Strike", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid")
.HasColumnName("id");
b.Property<DateTimeOffset>("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("created_at");
b.Property<Guid>("DownloadItemId")
.HasColumnType("uuid")
.HasColumnName("download_item_id");
b.Property<bool>("IsDryRun")
.HasColumnType("boolean")
.HasColumnName("is_dry_run");
b.Property<Guid>("JobRunId")
.HasColumnType("uuid")
.HasColumnName("job_run_id");
b.Property<long?>("LastDownloadedBytes")
.HasColumnType("bigint")
.HasColumnName("last_downloaded_bytes");
b.Property<string>("Type")
.IsRequired()
.HasColumnType("text")
.HasColumnName("type");
b.HasKey("Id")
.HasName("pk_strikes");
b.HasIndex("CreatedAt")
.HasDatabaseName("ix_strikes_created_at");
b.HasIndex("JobRunId")
.HasDatabaseName("ix_strikes_job_run_id");
b.HasIndex("DownloadItemId", "Type")
.HasDatabaseName("ix_strikes_download_item_id_type");
b.ToTable("strikes", "events");
});
modelBuilder.Entity("Cleanuparr.Persistence.Models.Events.AppEvent", b =>
{
b.HasOne("Cleanuparr.Persistence.Models.State.JobRun", "JobRun")
.WithMany("Events")
.HasForeignKey("JobRunId")
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("fk_events_job_runs_job_run_id");
b.HasOne("Cleanuparr.Persistence.Models.State.Strike", "Strike")
.WithMany()
.HasForeignKey("StrikeId")
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("fk_events_strikes_strike_id");
b.Navigation("JobRun");
b.Navigation("Strike");
});
modelBuilder.Entity("Cleanuparr.Persistence.Models.Events.ManualEvent", b =>
{
b.HasOne("Cleanuparr.Persistence.Models.State.JobRun", "JobRun")
.WithMany("ManualEvents")
.HasForeignKey("JobRunId")
.HasConstraintName("fk_manual_events_job_runs_job_run_id");
b.Navigation("JobRun");
});
modelBuilder.Entity("Cleanuparr.Persistence.Models.State.Strike", b =>
{
b.HasOne("Cleanuparr.Persistence.Models.State.DownloadItem", "DownloadItem")
.WithMany("Strikes")
.HasForeignKey("DownloadItemId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_strikes_download_items_download_item_id");
b.HasOne("Cleanuparr.Persistence.Models.State.JobRun", "JobRun")
.WithMany("Strikes")
.HasForeignKey("JobRunId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_strikes_job_runs_job_run_id");
b.Navigation("DownloadItem");
b.Navigation("JobRun");
});
modelBuilder.Entity("Cleanuparr.Persistence.Models.State.DownloadItem", b =>
{
b.Navigation("Strikes");
});
modelBuilder.Entity("Cleanuparr.Persistence.Models.State.JobRun", b =>
{
b.Navigation("Events");
b.Navigation("ManualEvents");
b.Navigation("Strikes");
});
#pragma warning restore 612, 618
}
}
}