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 @@
@@ -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 @@
@@ -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