From 497b0bca0b85287b0542e7a19012c3d7c720fd01 Mon Sep 17 00:00:00 2001 From: Jai A Date: Thu, 16 Jan 2025 23:00:11 -0800 Subject: [PATCH] Fix broken migration on labrinth --- ...63153f6879d507dc1d1bb38846e16d9fa6cbd6cceea2efbfd51.json | 2 +- ...ac6d0c83fec4117d340e5970b27edc76f21b903f362329a6542.json | 2 +- ...f58b86083b659cb647498fcc20e38265b9d316ca8c0a2cbc02a.json | 2 +- .../migrations/20250117013050_missing-primary-keys.sql | 6 ++++++ apps/labrinth/src/database/models/project_item.rs | 6 +++--- apps/labrinth/src/database/models/version_item.rs | 6 +++--- apps/labrinth/src/search/indexing/local_import.rs | 6 +++++- 7 files changed, 20 insertions(+), 10 deletions(-) diff --git a/apps/labrinth/.sqlx/query-10f81e605c9ef63153f6879d507dc1d1bb38846e16d9fa6cbd6cceea2efbfd51.json b/apps/labrinth/.sqlx/query-10f81e605c9ef63153f6879d507dc1d1bb38846e16d9fa6cbd6cceea2efbfd51.json index 4caa17396..b2cf2a4c6 100644 --- a/apps/labrinth/.sqlx/query-10f81e605c9ef63153f6879d507dc1d1bb38846e16d9fa6cbd6cceea2efbfd51.json +++ b/apps/labrinth/.sqlx/query-10f81e605c9ef63153f6879d507dc1d1bb38846e16d9fa6cbd6cceea2efbfd51.json @@ -38,7 +38,7 @@ false, false, true, - true, + false, true ] }, diff --git a/apps/labrinth/.sqlx/query-53c50911a9e98ac6d0c83fec4117d340e5970b27edc76f21b903f362329a6542.json b/apps/labrinth/.sqlx/query-53c50911a9e98ac6d0c83fec4117d340e5970b27edc76f21b903f362329a6542.json index f932bd386..551803257 100644 --- a/apps/labrinth/.sqlx/query-53c50911a9e98ac6d0c83fec4117d340e5970b27edc76f21b903f362329a6542.json +++ b/apps/labrinth/.sqlx/query-53c50911a9e98ac6d0c83fec4117d340e5970b27edc76f21b903f362329a6542.json @@ -38,7 +38,7 @@ false, false, true, - true, + false, true ] }, diff --git a/apps/labrinth/.sqlx/query-7fa5098b1083af58b86083b659cb647498fcc20e38265b9d316ca8c0a2cbc02a.json b/apps/labrinth/.sqlx/query-7fa5098b1083af58b86083b659cb647498fcc20e38265b9d316ca8c0a2cbc02a.json index da471b1da..3610b34ca 100644 --- a/apps/labrinth/.sqlx/query-7fa5098b1083af58b86083b659cb647498fcc20e38265b9d316ca8c0a2cbc02a.json +++ b/apps/labrinth/.sqlx/query-7fa5098b1083af58b86083b659cb647498fcc20e38265b9d316ca8c0a2cbc02a.json @@ -44,7 +44,7 @@ false, false, true, - true, + false, true ] }, diff --git a/apps/labrinth/migrations/20250117013050_missing-primary-keys.sql b/apps/labrinth/migrations/20250117013050_missing-primary-keys.sql index 1bcadd678..b39039b8e 100644 --- a/apps/labrinth/migrations/20250117013050_missing-primary-keys.sql +++ b/apps/labrinth/migrations/20250117013050_missing-primary-keys.sql @@ -1,3 +1,9 @@ +ALTER TABLE version_fields + ALTER COLUMN enum_value SET DEFAULT -1; + +ALTER TABLE version_fields + ALTER COLUMN enum_value SET NOT NULL; + WITH CTE AS ( SELECT ctid, ROW_NUMBER() OVER (PARTITION BY version_id, field_id, enum_value ORDER BY ctid) AS row_num diff --git a/apps/labrinth/src/database/models/project_item.rs b/apps/labrinth/src/database/models/project_item.rs index 1bd07d224..f7f3ab9ca 100644 --- a/apps/labrinth/src/database/models/project_item.rs +++ b/apps/labrinth/src/database/models/project_item.rs @@ -595,12 +595,12 @@ impl Project { version_id: VersionId(m.version_id), field_id: LoaderFieldId(m.field_id), int_value: m.int_value, - enum_value: m.enum_value.map(LoaderFieldEnumValueId), + enum_value: if m.enum_value == -1 { None } else { Some(LoaderFieldEnumValueId(m.enum_value)) }, string_value: m.string_value, }; - if let Some(enum_value) = m.enum_value { - loader_field_enum_value_ids.insert(LoaderFieldEnumValueId(enum_value)); + if m.enum_value != -1 { + loader_field_enum_value_ids.insert(LoaderFieldEnumValueId(m.enum_value)); } acc.entry(ProjectId(m.mod_id)).or_default().push(qvf); diff --git a/apps/labrinth/src/database/models/version_item.rs b/apps/labrinth/src/database/models/version_item.rs index 792c9ac0e..f8de51f69 100644 --- a/apps/labrinth/src/database/models/version_item.rs +++ b/apps/labrinth/src/database/models/version_item.rs @@ -499,12 +499,12 @@ impl Version { version_id: VersionId(m.version_id), field_id: LoaderFieldId(m.field_id), int_value: m.int_value, - enum_value: m.enum_value.map(LoaderFieldEnumValueId), + enum_value: if m.enum_value == -1 { None } else { Some(LoaderFieldEnumValueId(m.enum_value)) }, string_value: m.string_value, }; - if let Some(enum_value) = m.enum_value { - loader_field_enum_value_ids.insert(LoaderFieldEnumValueId(enum_value)); + if m.enum_value != -1 { + loader_field_enum_value_ids.insert(LoaderFieldEnumValueId(m.enum_value)); } acc.entry(VersionId(m.version_id)).or_default().push(qvf); diff --git a/apps/labrinth/src/search/indexing/local_import.rs b/apps/labrinth/src/search/indexing/local_import.rs index f24af8e28..4306888f3 100644 --- a/apps/labrinth/src/search/indexing/local_import.rs +++ b/apps/labrinth/src/search/indexing/local_import.rs @@ -505,7 +505,11 @@ async fn index_versions( version_id: VersionId(m.version_id), field_id: LoaderFieldId(m.field_id), int_value: m.int_value, - enum_value: m.enum_value.map(LoaderFieldEnumValueId), + enum_value: if m.enum_value == -1 { + None + } else { + Some(LoaderFieldEnumValueId(m.enum_value)) + }, string_value: m.string_value, };