reverted db migration

This commit is contained in:
Flaminel
2026-03-19 20:48:04 +02:00
parent 03c377746b
commit b2fecd8330
3 changed files with 8 additions and 1886 deletions

View File

File diff suppressed because it is too large Load Diff

View File

@@ -1,178 +0,0 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Cleanuparr.Persistence.Migrations.Data
{
/// <inheritdoc />
public partial class AddSeeker : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<bool>(
name: "on_search_triggered",
table: "notification_configs",
type: "INTEGER",
nullable: false,
defaultValue: false);
migrationBuilder.CreateTable(
name: "search_queue",
columns: table => new
{
id = table.Column<Guid>(type: "TEXT", nullable: false),
arr_instance_id = table.Column<Guid>(type: "TEXT", nullable: false),
item_id = table.Column<long>(type: "INTEGER", nullable: false),
series_id = table.Column<long>(type: "INTEGER", nullable: true),
search_type = table.Column<string>(type: "TEXT", nullable: true),
title = table.Column<string>(type: "TEXT", nullable: false),
created_at = table.Column<DateTime>(type: "TEXT", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_search_queue", x => x.id);
table.ForeignKey(
name: "fk_search_queue_arr_instances_arr_instance_id",
column: x => x.arr_instance_id,
principalTable: "arr_instances",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "seeker_configs",
columns: table => new
{
id = table.Column<Guid>(type: "TEXT", nullable: false),
search_enabled = table.Column<bool>(type: "INTEGER", nullable: false),
search_interval = table.Column<ushort>(type: "INTEGER", nullable: false),
proactive_search_enabled = table.Column<bool>(type: "INTEGER", nullable: false),
selection_strategy = table.Column<string>(type: "TEXT", nullable: false),
monitored_only = table.Column<bool>(type: "INTEGER", nullable: false),
use_cutoff = table.Column<bool>(type: "INTEGER", nullable: false),
use_round_robin = table.Column<bool>(type: "INTEGER", nullable: false),
sonarr_search_type = table.Column<string>(type: "TEXT", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_seeker_configs", x => x.id);
});
// Migrate old data
migrationBuilder.InsertData(
table: "seeker_configs",
columns: new[] { "id", "search_enabled", "search_interval", "proactive_search_enabled", "selection_strategy", "monitored_only", "use_cutoff", "use_round_robin", "sonarr_search_type" },
values: new object[] { Guid.NewGuid(), true, 3, false, "balancedweighted", true, false, true, "Season" });
migrationBuilder.Sql(@"
UPDATE seeker_configs SET search_enabled = (
SELECT COALESCE(g.search_enabled, 1) FROM general_configs g LIMIT 1
)");
migrationBuilder.CreateTable(
name: "seeker_history",
columns: table => new
{
id = table.Column<Guid>(type: "TEXT", nullable: false),
arr_instance_id = table.Column<Guid>(type: "TEXT", nullable: false),
external_item_id = table.Column<long>(type: "INTEGER", nullable: false),
item_type = table.Column<string>(type: "TEXT", nullable: false),
season_number = table.Column<int>(type: "INTEGER", nullable: false),
episode_id = table.Column<long>(type: "INTEGER", nullable: false),
last_searched_at = table.Column<DateTime>(type: "TEXT", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_seeker_history", x => x.id);
table.ForeignKey(
name: "fk_seeker_history_arr_instances_arr_instance_id",
column: x => x.arr_instance_id,
principalTable: "arr_instances",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "seeker_instance_configs",
columns: table => new
{
id = table.Column<Guid>(type: "TEXT", nullable: false),
arr_instance_id = table.Column<Guid>(type: "TEXT", nullable: false),
enabled = table.Column<bool>(type: "INTEGER", nullable: false),
skip_tags = table.Column<string>(type: "TEXT", nullable: false),
last_processed_at = table.Column<DateTime>(type: "TEXT", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_seeker_instance_configs", x => x.id);
table.ForeignKey(
name: "fk_seeker_instance_configs_arr_instances_arr_instance_id",
column: x => x.arr_instance_id,
principalTable: "arr_instances",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.DropColumn(
name: "search_delay",
table: "general_configs");
migrationBuilder.DropColumn(
name: "search_enabled",
table: "general_configs");
migrationBuilder.CreateIndex(
name: "ix_search_queue_arr_instance_id",
table: "search_queue",
column: "arr_instance_id");
migrationBuilder.CreateIndex(
name: "ix_seeker_history_arr_instance_id_external_item_id_item_type_season_number_episode_id",
table: "seeker_history",
columns: new[] { "arr_instance_id", "external_item_id", "item_type", "season_number", "episode_id" },
unique: true);
migrationBuilder.CreateIndex(
name: "ix_seeker_instance_configs_arr_instance_id",
table: "seeker_instance_configs",
column: "arr_instance_id",
unique: true);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "search_queue");
migrationBuilder.DropTable(
name: "seeker_configs");
migrationBuilder.DropTable(
name: "seeker_history");
migrationBuilder.DropTable(
name: "seeker_instance_configs");
migrationBuilder.DropColumn(
name: "on_search_triggered",
table: "notification_configs");
migrationBuilder.AddColumn<ushort>(
name: "search_delay",
table: "general_configs",
type: "INTEGER",
nullable: false,
defaultValue: (ushort)0);
migrationBuilder.AddColumn<bool>(
name: "search_enabled",
table: "general_configs",
type: "INTEGER",
nullable: false,
defaultValue: false);
}
}
}

View File

@@ -303,6 +303,14 @@ namespace Cleanuparr.Persistence.Migrations.Data
.HasColumnType("TEXT")
.HasColumnName("ignored_downloads");
b.Property<ushort>("SearchDelay")
.HasColumnType("INTEGER")
.HasColumnName("search_delay");
b.Property<bool>("SearchEnabled")
.HasColumnType("INTEGER")
.HasColumnName("search_enabled");
b.Property<bool>("StatusCheckEnabled")
.HasColumnType("INTEGER")
.HasColumnName("status_check_enabled");
@@ -695,10 +703,6 @@ namespace Cleanuparr.Persistence.Migrations.Data
.HasColumnType("INTEGER")
.HasColumnName("on_queue_item_deleted");
b.Property<bool>("OnSearchTriggered")
.HasColumnType("INTEGER")
.HasColumnName("on_search_triggered");
b.Property<bool>("OnSlowStrike")
.HasColumnType("INTEGER")
.HasColumnName("on_slow_strike");
@@ -1086,87 +1090,6 @@ namespace Cleanuparr.Persistence.Migrations.Data
b.ToTable("stall_rules", (string)null);
});
modelBuilder.Entity("Cleanuparr.Persistence.Models.Configuration.Seeker.SeekerConfig", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("TEXT")
.HasColumnName("id");
b.Property<bool>("MonitoredOnly")
.HasColumnType("INTEGER")
.HasColumnName("monitored_only");
b.Property<bool>("ProactiveSearchEnabled")
.HasColumnType("INTEGER")
.HasColumnName("proactive_search_enabled");
b.Property<bool>("SearchEnabled")
.HasColumnType("INTEGER")
.HasColumnName("search_enabled");
b.Property<ushort>("SearchInterval")
.HasColumnType("INTEGER")
.HasColumnName("search_interval");
b.Property<string>("SelectionStrategy")
.IsRequired()
.HasColumnType("TEXT")
.HasColumnName("selection_strategy");
b.Property<string>("SonarrSearchType")
.IsRequired()
.HasColumnType("TEXT")
.HasColumnName("sonarr_search_type");
b.Property<bool>("UseCutoff")
.HasColumnType("INTEGER")
.HasColumnName("use_cutoff");
b.Property<bool>("UseRoundRobin")
.HasColumnType("INTEGER")
.HasColumnName("use_round_robin");
b.HasKey("Id")
.HasName("pk_seeker_configs");
b.ToTable("seeker_configs", (string)null);
});
modelBuilder.Entity("Cleanuparr.Persistence.Models.Configuration.Seeker.SeekerInstanceConfig", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("TEXT")
.HasColumnName("id");
b.Property<Guid>("ArrInstanceId")
.HasColumnType("TEXT")
.HasColumnName("arr_instance_id");
b.Property<bool>("Enabled")
.HasColumnType("INTEGER")
.HasColumnName("enabled");
b.Property<DateTime?>("LastProcessedAt")
.HasColumnType("TEXT")
.HasColumnName("last_processed_at");
b.PrimitiveCollection<string>("SkipTags")
.IsRequired()
.HasColumnType("TEXT")
.HasColumnName("skip_tags");
b.HasKey("Id")
.HasName("pk_seeker_instance_configs");
b.HasIndex("ArrInstanceId")
.IsUnique()
.HasDatabaseName("ix_seeker_instance_configs_arr_instance_id");
b.ToTable("seeker_instance_configs", (string)null);
});
modelBuilder.Entity("Cleanuparr.Persistence.Models.State.BlacklistSyncHistory", b =>
{
b.Property<Guid>("Id")
@@ -1199,89 +1122,6 @@ namespace Cleanuparr.Persistence.Migrations.Data
b.ToTable("blacklist_sync_history", (string)null);
});
modelBuilder.Entity("Cleanuparr.Persistence.Models.State.SearchQueueItem", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("TEXT")
.HasColumnName("id");
b.Property<Guid>("ArrInstanceId")
.HasColumnType("TEXT")
.HasColumnName("arr_instance_id");
b.Property<DateTime>("CreatedAt")
.HasColumnType("TEXT")
.HasColumnName("created_at");
b.Property<long>("ItemId")
.HasColumnType("INTEGER")
.HasColumnName("item_id");
b.Property<string>("SearchType")
.HasColumnType("TEXT")
.HasColumnName("search_type");
b.Property<long?>("SeriesId")
.HasColumnType("INTEGER")
.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", (string)null);
});
modelBuilder.Entity("Cleanuparr.Persistence.Models.State.SeekerHistory", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("TEXT")
.HasColumnName("id");
b.Property<Guid>("ArrInstanceId")
.HasColumnType("TEXT")
.HasColumnName("arr_instance_id");
b.Property<long>("EpisodeId")
.HasColumnType("INTEGER")
.HasColumnName("episode_id");
b.Property<long>("ExternalItemId")
.HasColumnType("INTEGER")
.HasColumnName("external_item_id");
b.Property<string>("ItemType")
.IsRequired()
.HasColumnType("TEXT")
.HasColumnName("item_type");
b.Property<DateTime>("LastSearchedAt")
.HasColumnType("TEXT")
.HasColumnName("last_searched_at");
b.Property<int>("SeasonNumber")
.HasColumnType("INTEGER")
.HasColumnName("season_number");
b.HasKey("Id")
.HasName("pk_seeker_history");
b.HasIndex("ArrInstanceId", "ExternalItemId", "ItemType", "SeasonNumber", "EpisodeId")
.IsUnique()
.HasDatabaseName("ix_seeker_history_arr_instance_id_external_item_id_item_type_season_number_episode_id");
b.ToTable("seeker_history", (string)null);
});
modelBuilder.Entity("Cleanuparr.Persistence.Models.Configuration.Arr.ArrInstance", b =>
{
b.HasOne("Cleanuparr.Persistence.Models.Configuration.Arr.ArrConfig", "ArrConfig")
@@ -1414,18 +1254,6 @@ namespace Cleanuparr.Persistence.Migrations.Data
b.Navigation("QueueCleanerConfig");
});
modelBuilder.Entity("Cleanuparr.Persistence.Models.Configuration.Seeker.SeekerInstanceConfig", b =>
{
b.HasOne("Cleanuparr.Persistence.Models.Configuration.Arr.ArrInstance", "ArrInstance")
.WithMany()
.HasForeignKey("ArrInstanceId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_seeker_instance_configs_arr_instances_arr_instance_id");
b.Navigation("ArrInstance");
});
modelBuilder.Entity("Cleanuparr.Persistence.Models.State.BlacklistSyncHistory", b =>
{
b.HasOne("Cleanuparr.Persistence.Models.Configuration.DownloadClientConfig", "DownloadClient")
@@ -1438,30 +1266,6 @@ namespace Cleanuparr.Persistence.Migrations.Data
b.Navigation("DownloadClient");
});
modelBuilder.Entity("Cleanuparr.Persistence.Models.State.SearchQueueItem", b =>
{
b.HasOne("Cleanuparr.Persistence.Models.Configuration.Arr.ArrInstance", "ArrInstance")
.WithMany()
.HasForeignKey("ArrInstanceId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_search_queue_arr_instances_arr_instance_id");
b.Navigation("ArrInstance");
});
modelBuilder.Entity("Cleanuparr.Persistence.Models.State.SeekerHistory", b =>
{
b.HasOne("Cleanuparr.Persistence.Models.Configuration.Arr.ArrInstance", "ArrInstance")
.WithMany()
.HasForeignKey("ArrInstanceId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_seeker_history_arr_instances_arr_instance_id");
b.Navigation("ArrInstance");
});
modelBuilder.Entity("Cleanuparr.Persistence.Models.Configuration.Arr.ArrConfig", b =>
{
b.Navigation("Instances");