Files
ersatztv/ErsatzTV.Infrastructure.MySql/Migrations/20260102144855_Fix_DuplicateNames.cs
T
Jason DoveandGitHub bcd2ea7db3 db optimizations around names and case-sensitivity (#2749)
* generate (case-insensitive) unique names for fields that should be unique

* move name case-insensitivity down to schema level

* update changelog
2026-01-02 09:25:23 -06:00

228 lines
8.0 KiB
C#

using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace ErsatzTV.Infrastructure.MySql.Migrations
{
/// <inheritdoc />
public partial class Fix_DuplicateNames : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql(
"""
UPDATE Block a
JOIN (
SELECT
Id,
ROW_NUMBER() OVER (PARTITION BY LOWER(Name) ORDER BY Id) as RowNum
FROM Block
) n ON a.Id = n.Id
SET a.Name = CONCAT(a.Name, ' (', n.RowNum - 1, ')')
WHERE n.RowNum > 1;
""");
migrationBuilder.Sql(
"""
UPDATE BlockGroup a
JOIN (
SELECT
Id,
ROW_NUMBER() OVER (PARTITION BY LOWER(Name) ORDER BY Id) as RowNum
FROM BlockGroup
) n ON a.Id = n.Id
SET a.Name = CONCAT(a.Name, ' (', n.RowNum - 1, ')')
WHERE n.RowNum > 1;
""");
migrationBuilder.Sql(
"""
UPDATE ChannelWatermark a
JOIN (
SELECT
Id,
ROW_NUMBER() OVER (PARTITION BY LOWER(Name) ORDER BY Id) as RowNum
FROM ChannelWatermark
) n ON a.Id = n.Id
SET a.Name = CONCAT(a.Name, ' (', n.RowNum - 1, ')')
WHERE n.RowNum > 1;
""");
migrationBuilder.Sql(
"""
UPDATE Collection a
JOIN (
SELECT
Id,
ROW_NUMBER() OVER (PARTITION BY LOWER(Name) ORDER BY Id) as RowNum
FROM Collection
) n ON a.Id = n.Id
SET a.Name = CONCAT(a.Name, ' (', n.RowNum - 1, ')')
WHERE n.RowNum > 1;
""");
migrationBuilder.Sql(
"""
UPDATE Deco a
JOIN (
SELECT
Id,
ROW_NUMBER() OVER (PARTITION BY LOWER(Name) ORDER BY Id) as RowNum
FROM Deco
) n ON a.Id = n.Id
SET a.Name = CONCAT(a.Name, ' (', n.RowNum - 1, ')')
WHERE n.RowNum > 1;
""");
migrationBuilder.Sql(
"""
UPDATE DecoGroup a
JOIN (
SELECT
Id,
ROW_NUMBER() OVER (PARTITION BY LOWER(Name) ORDER BY Id) as RowNum
FROM DecoGroup
) n ON a.Id = n.Id
SET a.Name = CONCAT(a.Name, ' (', n.RowNum - 1, ')')
WHERE n.RowNum > 1;
""");
migrationBuilder.Sql(
"""
UPDATE DecoTemplate a
JOIN (
SELECT
Id,
ROW_NUMBER() OVER (PARTITION BY LOWER(Name) ORDER BY Id) as RowNum
FROM DecoTemplate
) n ON a.Id = n.Id
SET a.Name = CONCAT(a.Name, ' (', n.RowNum - 1, ')')
WHERE n.RowNum > 1;
""");
migrationBuilder.Sql(
"""
UPDATE DecoTemplateGroup a
JOIN (
SELECT
Id,
ROW_NUMBER() OVER (PARTITION BY LOWER(Name) ORDER BY Id) as RowNum
FROM DecoTemplateGroup
) n ON a.Id = n.Id
SET a.Name = CONCAT(a.Name, ' (', n.RowNum - 1, ')')
WHERE n.RowNum > 1;
""");
migrationBuilder.Sql(
"""
UPDATE FillerPreset a
JOIN (
SELECT
Id,
ROW_NUMBER() OVER (PARTITION BY LOWER(Name) ORDER BY Id) as RowNum
FROM FillerPreset
) n ON a.Id = n.Id
SET a.Name = CONCAT(a.Name, ' (', n.RowNum - 1, ')')
WHERE n.RowNum > 1;
""");
migrationBuilder.Sql(
"""
UPDATE MultiCollection a
JOIN (
SELECT
Id,
ROW_NUMBER() OVER (PARTITION BY LOWER(Name) ORDER BY Id) as RowNum
FROM MultiCollection
) n ON a.Id = n.Id
SET a.Name = CONCAT(a.Name, ' (', n.RowNum - 1, ')')
WHERE n.RowNum > 1;
""");
migrationBuilder.Sql(
"""
UPDATE Playlist a
JOIN (
SELECT
Id,
ROW_NUMBER() OVER (PARTITION BY LOWER(Name) ORDER BY Id) as RowNum
FROM Playlist
) n ON a.Id = n.Id
SET a.Name = CONCAT(a.Name, ' (', n.RowNum - 1, ')')
WHERE n.RowNum > 1;
""");
migrationBuilder.Sql(
"""
UPDATE ProgramSchedule a
JOIN (
SELECT
Id,
ROW_NUMBER() OVER (PARTITION BY LOWER(Name) ORDER BY Id) as RowNum
FROM ProgramSchedule
) n ON a.Id = n.Id
SET a.Name = CONCAT(a.Name, ' (', n.RowNum - 1, ')')
WHERE n.RowNum > 1;
""");
migrationBuilder.Sql(
"""
UPDATE RerunCollection a
JOIN (
SELECT
Id,
ROW_NUMBER() OVER (PARTITION BY LOWER(Name) ORDER BY Id) as RowNum
FROM RerunCollection
) n ON a.Id = n.Id
SET a.Name = CONCAT(a.Name, ' (', n.RowNum - 1, ')')
WHERE n.RowNum > 1;
""");
migrationBuilder.Sql(
"""
UPDATE SmartCollection a
JOIN (
SELECT
Id,
ROW_NUMBER() OVER (PARTITION BY LOWER(Name) ORDER BY Id) as RowNum
FROM SmartCollection
) n ON a.Id = n.Id
SET a.Name = CONCAT(a.Name, ' (', n.RowNum - 1, ')')
WHERE n.RowNum > 1;
""");
migrationBuilder.Sql(
"""
UPDATE Template a
JOIN (
SELECT
Id,
ROW_NUMBER() OVER (PARTITION BY LOWER(Name) ORDER BY Id) as RowNum
FROM Template
) n ON a.Id = n.Id
SET a.Name = CONCAT(a.Name, ' (', n.RowNum - 1, ')')
WHERE n.RowNum > 1;
""");
migrationBuilder.Sql(
"""
UPDATE TemplateGroup a
JOIN (
SELECT
Id,
ROW_NUMBER() OVER (PARTITION BY LOWER(Name) ORDER BY Id) as RowNum
FROM TemplateGroup
) n ON a.Id = n.Id
SET a.Name = CONCAT(a.Name, ' (', n.RowNum - 1, ')')
WHERE n.RowNum > 1;
""");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
}
}
}