mirror of https://github.com/ErsatzTV/ErsatzTV.git
4 changed files with 14175 additions and 0 deletions
File diff suppressed because it is too large
Load Diff
@ -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) |
||||||
|
{ |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
File diff suppressed because it is too large
Load Diff
@ -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…
Reference in new issue