diff --git a/modules/databaseGlobals.js b/modules/databaseGlobals.js index 59ec14f..08a56a2 100644 --- a/modules/databaseGlobals.js +++ b/modules/databaseGlobals.js @@ -242,20 +242,6 @@ async function setupDatabase() { logger.log(`defaults skins (steve, alex) ready`, ["MariaDB", "yellow"]) await conn.query(`DROP TRIGGER IF EXISTS unique_active_skin`) - await conn.query(` - CREATE TRIGGER unique_active_skin - AFTER UPDATE ON playersSkins - FOR EACH ROW - BEGIN - IF NEW.isSelected = 1 THEN - UPDATE playersSkins - SET isSelected = 0 - WHERE playerUuid = NEW.playerUuid - AND assetHash != NEW.assetHash; - END IF; - END; - `) - logger.log(`${"unique_active_skin".bold} trigger ready`, ["MariaDB", "yellow"]) await conn.query(`DROP TRIGGER IF EXISTS unique_active_cape`) diff --git a/repositories/userRepository.js b/repositories/userRepository.js index 7b47005..bf0f825 100644 --- a/repositories/userRepository.js +++ b/repositories/userRepository.js @@ -656,19 +656,21 @@ async function getNameHistory(uuid) { } async function setSkin(uuid, hash, variant) { - const insertSql = ` - INSERT INTO playersSkins (playerUuid, assetHash, variant, isSelected) - VALUES (?, ?, ?, 1) - ON DUPLICATE KEY UPDATE isSelected = 1, variant = ? - ` - await database.query(insertSql, [uuid, hash, variant, variant]) - const updateSql = ` - UPDATE playersSkins - SET isSelected = 0 - WHERE playerUuid = ? AND assetHash != ? - ` - await database.query(updateSql, [uuid, hash]) - return true + try { + const resetSql = `UPDATE playersSkins SET isSelected = 0 WHERE playerUuid = ?` + await database.query(resetSql, [uuid]) + + const upsertSql = ` + INSERT INTO playersSkins (playerUuid, assetHash, variant, isSelected) + VALUES (?, ?, ?, 1) + ON DUPLICATE KEY UPDATE isSelected = 1, variant = VALUES(variant) + ` + await database.query(upsertSql, [uuid, hash, variant.toLowerCase()]) + + return true + } catch (error) { + return utils.handleDBError(error) + } } async function updatePassword(uuid, hashedPassword) {