Fix the migration as the new constraint now uses Value as unique key (#13867)

This commit is contained in:
JPVenson 2025-04-07 22:42:01 +02:00 committed by GitHub
parent 82a561b87d
commit 77ad7f6139
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -138,14 +138,14 @@ internal class MigrateLibraryDb : IDatabaseMigrationRoutine
"""; """;
// EFCores local lookup sucks. We cannot use context.ItemValues.Local here because its just super slow. // EFCores local lookup sucks. We cannot use context.ItemValues.Local here because its just super slow.
var localItems = new Dictionary<(int Type, string CleanValue), (Database.Implementations.Entities.ItemValue ItemValue, List<Guid> ItemIds)>(); var localItems = new Dictionary<(int Type, string Value), (Database.Implementations.Entities.ItemValue ItemValue, List<Guid> ItemIds)>();
using (new TrackedMigrationStep("loading ItemValues", _logger)) using (new TrackedMigrationStep("loading ItemValues", _logger))
{ {
foreach (SqliteDataReader dto in connection.Query(itemValueQuery)) foreach (SqliteDataReader dto in connection.Query(itemValueQuery))
{ {
var itemId = dto.GetGuid(0); var itemId = dto.GetGuid(0);
var entity = GetItemValue(dto); var entity = GetItemValue(dto);
var key = ((int)entity.Type, entity.CleanValue); var key = ((int)entity.Type, entity.Value);
if (!localItems.TryGetValue(key, out var existing)) if (!localItems.TryGetValue(key, out var existing))
{ {
localItems[key] = existing = (entity, []); localItems[key] = existing = (entity, []);