Browse Source

generate (case-insensitive) unique names for fields that should be unique

pull/2749/head
Jason Dove 7 months ago
parent
commit
a3e39e6029
No known key found for this signature in database
  1. 6923
      ErsatzTV.Infrastructure.MySql/Migrations/20260102144855_Fix_DuplicateNames.Designer.cs
  2. 227
      ErsatzTV.Infrastructure.MySql/Migrations/20260102144855_Fix_DuplicateNames.cs
  3. 6750
      ErsatzTV.Infrastructure.Sqlite/Migrations/20260102144811_Fix_DuplicateNames.Designer.cs
  4. 275
      ErsatzTV.Infrastructure.Sqlite/Migrations/20260102144811_Fix_DuplicateNames.cs

6923
ErsatzTV.Infrastructure.MySql/Migrations/20260102144855_Fix_DuplicateNames.Designer.cs generated

File diff suppressed because it is too large Load Diff

227
ErsatzTV.Infrastructure.MySql/Migrations/20260102144855_Fix_DuplicateNames.cs

@ -0,0 +1,227 @@ @@ -0,0 +1,227 @@
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)
{
}
}
}

6750
ErsatzTV.Infrastructure.Sqlite/Migrations/20260102144811_Fix_DuplicateNames.Designer.cs generated

File diff suppressed because it is too large Load Diff

275
ErsatzTV.Infrastructure.Sqlite/Migrations/20260102144811_Fix_DuplicateNames.cs

@ -0,0 +1,275 @@ @@ -0,0 +1,275 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace ErsatzTV.Infrastructure.Sqlite.Migrations
{
/// <inheritdoc />
public partial class Fix_DuplicateNames : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql(
"""
WITH Numbered AS (
SELECT
Id,
-- Partition by case-insensitive name
ROW_NUMBER() OVER (PARTITION BY Name COLLATE NOCASE ORDER BY Id) AS RowNum
FROM Block
)
UPDATE Block
SET Name = Name || ' (' || (Numbered.RowNum - 1) || ')'
FROM Numbered
WHERE Block.Id = Numbered.Id
AND Numbered.RowNum > 1;
""");
migrationBuilder.Sql(
"""
WITH Numbered AS (
SELECT
Id,
-- Partition by case-insensitive name
ROW_NUMBER() OVER (PARTITION BY Name COLLATE NOCASE ORDER BY Id) AS RowNum
FROM BlockGroup
)
UPDATE BlockGroup
SET Name = Name || ' (' || (Numbered.RowNum - 1) || ')'
FROM Numbered
WHERE BlockGroup.Id = Numbered.Id
AND Numbered.RowNum > 1;
""");
migrationBuilder.Sql(
"""
WITH Numbered AS (
SELECT
Id,
-- Partition by case-insensitive name
ROW_NUMBER() OVER (PARTITION BY Name COLLATE NOCASE ORDER BY Id) AS RowNum
FROM ChannelWatermark
)
UPDATE ChannelWatermark
SET Name = Name || ' (' || (Numbered.RowNum - 1) || ')'
FROM Numbered
WHERE ChannelWatermark.Id = Numbered.Id
AND Numbered.RowNum > 1;
""");
migrationBuilder.Sql(
"""
WITH Numbered AS (
SELECT
Id,
-- Partition by case-insensitive name
ROW_NUMBER() OVER (PARTITION BY Name COLLATE NOCASE ORDER BY Id) AS RowNum
FROM Collection
)
UPDATE Collection
SET Name = Name || ' (' || (Numbered.RowNum - 1) || ')'
FROM Numbered
WHERE Collection.Id = Numbered.Id
AND Numbered.RowNum > 1;
""");
migrationBuilder.Sql(
"""
WITH Numbered AS (
SELECT
Id,
-- Partition by case-insensitive name
ROW_NUMBER() OVER (PARTITION BY Name COLLATE NOCASE ORDER BY Id) AS RowNum
FROM Deco
)
UPDATE Deco
SET Name = Name || ' (' || (Numbered.RowNum - 1) || ')'
FROM Numbered
WHERE Deco.Id = Numbered.Id
AND Numbered.RowNum > 1;
""");
migrationBuilder.Sql(
"""
WITH Numbered AS (
SELECT
Id,
-- Partition by case-insensitive name
ROW_NUMBER() OVER (PARTITION BY Name COLLATE NOCASE ORDER BY Id) AS RowNum
FROM DecoGroup
)
UPDATE DecoGroup
SET Name = Name || ' (' || (Numbered.RowNum - 1) || ')'
FROM Numbered
WHERE DecoGroup.Id = Numbered.Id
AND Numbered.RowNum > 1;
""");
migrationBuilder.Sql(
"""
WITH Numbered AS (
SELECT
Id,
-- Partition by case-insensitive name
ROW_NUMBER() OVER (PARTITION BY Name COLLATE NOCASE ORDER BY Id) AS RowNum
FROM DecoTemplate
)
UPDATE DecoTemplate
SET Name = Name || ' (' || (Numbered.RowNum - 1) || ')'
FROM Numbered
WHERE DecoTemplate.Id = Numbered.Id
AND Numbered.RowNum > 1;
""");
migrationBuilder.Sql(
"""
WITH Numbered AS (
SELECT
Id,
-- Partition by case-insensitive name
ROW_NUMBER() OVER (PARTITION BY Name COLLATE NOCASE ORDER BY Id) AS RowNum
FROM DecoTemplateGroup
)
UPDATE DecoTemplateGroup
SET Name = Name || ' (' || (Numbered.RowNum - 1) || ')'
FROM Numbered
WHERE DecoTemplateGroup.Id = Numbered.Id
AND Numbered.RowNum > 1;
""");
migrationBuilder.Sql(
"""
WITH Numbered AS (
SELECT
Id,
-- Partition by case-insensitive name
ROW_NUMBER() OVER (PARTITION BY Name COLLATE NOCASE ORDER BY Id) AS RowNum
FROM FillerPreset
)
UPDATE FillerPreset
SET Name = Name || ' (' || (Numbered.RowNum - 1) || ')'
FROM Numbered
WHERE FillerPreset.Id = Numbered.Id
AND Numbered.RowNum > 1;
""");
migrationBuilder.Sql(
"""
WITH Numbered AS (
SELECT
Id,
-- Partition by case-insensitive name
ROW_NUMBER() OVER (PARTITION BY Name COLLATE NOCASE ORDER BY Id) AS RowNum
FROM MultiCollection
)
UPDATE MultiCollection
SET Name = Name || ' (' || (Numbered.RowNum - 1) || ')'
FROM Numbered
WHERE MultiCollection.Id = Numbered.Id
AND Numbered.RowNum > 1;
""");
migrationBuilder.Sql(
"""
WITH Numbered AS (
SELECT
Id,
-- Partition by case-insensitive name
ROW_NUMBER() OVER (PARTITION BY Name COLLATE NOCASE ORDER BY Id) AS RowNum
FROM Playlist
)
UPDATE Playlist
SET Name = Name || ' (' || (Numbered.RowNum - 1) || ')'
FROM Numbered
WHERE Playlist.Id = Numbered.Id
AND Numbered.RowNum > 1;
""");
migrationBuilder.Sql(
"""
WITH Numbered AS (
SELECT
Id,
-- Partition by case-insensitive name
ROW_NUMBER() OVER (PARTITION BY Name COLLATE NOCASE ORDER BY Id) AS RowNum
FROM ProgramSchedule
)
UPDATE ProgramSchedule
SET Name = Name || ' (' || (Numbered.RowNum - 1) || ')'
FROM Numbered
WHERE ProgramSchedule.Id = Numbered.Id
AND Numbered.RowNum > 1;
""");
migrationBuilder.Sql(
"""
WITH Numbered AS (
SELECT
Id,
-- Partition by case-insensitive name
ROW_NUMBER() OVER (PARTITION BY Name COLLATE NOCASE ORDER BY Id) AS RowNum
FROM RerunCollection
)
UPDATE RerunCollection
SET Name = Name || ' (' || (Numbered.RowNum - 1) || ')'
FROM Numbered
WHERE RerunCollection.Id = Numbered.Id
AND Numbered.RowNum > 1;
""");
migrationBuilder.Sql(
"""
WITH Numbered AS (
SELECT
Id,
-- Partition by case-insensitive name
ROW_NUMBER() OVER (PARTITION BY Name COLLATE NOCASE ORDER BY Id) AS RowNum
FROM SmartCollection
)
UPDATE SmartCollection
SET Name = Name || ' (' || (Numbered.RowNum - 1) || ')'
FROM Numbered
WHERE SmartCollection.Id = Numbered.Id
AND Numbered.RowNum > 1;
""");
migrationBuilder.Sql(
"""
WITH Numbered AS (
SELECT
Id,
-- Partition by case-insensitive name
ROW_NUMBER() OVER (PARTITION BY Name COLLATE NOCASE ORDER BY Id) AS RowNum
FROM Template
)
UPDATE Template
SET Name = Name || ' (' || (Numbered.RowNum - 1) || ')'
FROM Numbered
WHERE Template.Id = Numbered.Id
AND Numbered.RowNum > 1;
""");
migrationBuilder.Sql(
"""
WITH Numbered AS (
SELECT
Id,
-- Partition by case-insensitive name
ROW_NUMBER() OVER (PARTITION BY Name COLLATE NOCASE ORDER BY Id) AS RowNum
FROM TemplateGroup
)
UPDATE TemplateGroup
SET Name = Name || ' (' || (Numbered.RowNum - 1) || ')'
FROM Numbered
WHERE TemplateGroup.Id = Numbered.Id
AND Numbered.RowNum > 1;
""");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
}
}
}
Loading…
Cancel
Save