From d6228337c66efc0eef2e4f217f2ede4cb110b269 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Gonz=C3=A1lez?= Date: Sat, 14 Jun 2025 21:12:47 +0200 Subject: [PATCH] fix(app-lib): handle repeated addition of the same skin properly --- ...69e0b2c1055fe47287d7f99be41215c25c1019d439b9.json | 12 ++++++++++++ ...ad270253ae1b3d75e80e52529e491e86ff370d6424b3.json | 12 ------------ .../migrations/20250413162050_skin-selector.sql | 2 +- packages/app-lib/src/state/minecraft_skins/mod.rs | 8 ++++---- 4 files changed, 17 insertions(+), 17 deletions(-) create mode 100644 packages/app-lib/.sqlx/query-4c8063f9ce2fd7deec9b69e0b2c1055fe47287d7f99be41215c25c1019d439b9.json delete mode 100644 packages/app-lib/.sqlx/query-9c2522e4518067192539ad270253ae1b3d75e80e52529e491e86ff370d6424b3.json diff --git a/packages/app-lib/.sqlx/query-4c8063f9ce2fd7deec9b69e0b2c1055fe47287d7f99be41215c25c1019d439b9.json b/packages/app-lib/.sqlx/query-4c8063f9ce2fd7deec9b69e0b2c1055fe47287d7f99be41215c25c1019d439b9.json new file mode 100644 index 000000000..4b7932bbe --- /dev/null +++ b/packages/app-lib/.sqlx/query-4c8063f9ce2fd7deec9b69e0b2c1055fe47287d7f99be41215c25c1019d439b9.json @@ -0,0 +1,12 @@ +{ + "db_name": "SQLite", + "query": "INSERT OR REPLACE INTO custom_minecraft_skins (minecraft_user_uuid, texture_key, variant, cape_id) VALUES (?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 4 + }, + "nullable": [] + }, + "hash": "4c8063f9ce2fd7deec9b69e0b2c1055fe47287d7f99be41215c25c1019d439b9" +} diff --git a/packages/app-lib/.sqlx/query-9c2522e4518067192539ad270253ae1b3d75e80e52529e491e86ff370d6424b3.json b/packages/app-lib/.sqlx/query-9c2522e4518067192539ad270253ae1b3d75e80e52529e491e86ff370d6424b3.json deleted file mode 100644 index f8365f0f4..000000000 --- a/packages/app-lib/.sqlx/query-9c2522e4518067192539ad270253ae1b3d75e80e52529e491e86ff370d6424b3.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT OR IGNORE INTO custom_minecraft_skins (minecraft_user_uuid, texture_key, variant, cape_id) VALUES (?, ?, ?, ?)", - "describe": { - "columns": [], - "parameters": { - "Right": 4 - }, - "nullable": [] - }, - "hash": "9c2522e4518067192539ad270253ae1b3d75e80e52529e491e86ff370d6424b3" -} diff --git a/packages/app-lib/migrations/20250413162050_skin-selector.sql b/packages/app-lib/migrations/20250413162050_skin-selector.sql index 615318f5c..8053e5ade 100644 --- a/packages/app-lib/migrations/20250413162050_skin-selector.sql +++ b/packages/app-lib/migrations/20250413162050_skin-selector.sql @@ -38,7 +38,7 @@ CREATE TABLE custom_minecraft_skins ( PRIMARY KEY (minecraft_user_uuid, texture_key, variant, cape_id), FOREIGN KEY (texture_key) REFERENCES custom_minecraft_skin_textures(texture_key) - ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED + ON DELETE CASCADE ON UPDATE CASCADE ); -- Similar partial foreign key emulation as above diff --git a/packages/app-lib/src/state/minecraft_skins/mod.rs b/packages/app-lib/src/state/minecraft_skins/mod.rs index ea96aa160..a5baad20c 100644 --- a/packages/app-lib/src/state/minecraft_skins/mod.rs +++ b/packages/app-lib/src/state/minecraft_skins/mod.rs @@ -95,15 +95,15 @@ impl CustomMinecraftSkin { let mut transaction = db.begin().await?; sqlx::query!( - "INSERT OR IGNORE INTO custom_minecraft_skins (minecraft_user_uuid, texture_key, variant, cape_id) VALUES (?, ?, ?, ?)", - minecraft_user_id, texture_key, variant, cape_id + "INSERT OR REPLACE INTO custom_minecraft_skin_textures (texture_key, texture) VALUES (?, ?)", + texture_key, texture ) .execute(&mut *transaction) .await?; sqlx::query!( - "INSERT OR REPLACE INTO custom_minecraft_skin_textures (texture_key, texture) VALUES (?, ?)", - texture_key, texture + "INSERT OR REPLACE INTO custom_minecraft_skins (minecraft_user_uuid, texture_key, variant, cape_id) VALUES (?, ?, ?, ?)", + minecraft_user_id, texture_key, variant, cape_id ) .execute(&mut *transaction) .await?;