diff --git a/modules/logger.js b/modules/logger.js index 7026d44..93e7dde 100644 --- a/modules/logger.js +++ b/modules/logger.js @@ -1,11 +1,14 @@ const fs = require("node:fs") const path = require("node:path") -const utils = require("./utils") require("colors") require("dotenv").config({ quiet: true }) +function isTrueFromDotEnv(key) { + return (process.env[key] || "").trim().toLowerCase() === "true" +} + function cleanup($stream) { if (!$stream.destroyed) { $stream.end() @@ -41,7 +44,7 @@ function write($stream, level, color, content, extraLabels = []) { function createLogger(root) { // eslint-disable-next-line no-useless-escape - const fileName = utils.isTrueFromDotEnv("IS_PROD") ? new Date().toLocaleString("fr-FR", { timeZone: "UTC" }).replace(/[\/:]/g, "-").replace(/ /g, "_") : "DEV-LOG" + const fileName = isTrueFromDotEnv("IS_PROD") ? new Date().toLocaleString("fr-FR", { timeZone: "UTC" }).replace(/[\/:]/g, "-").replace(/ /g, "_") : "DEV-LOG" const logsDir = path.join(root, "logs") diff --git a/modules/utils.js b/modules/utils.js index 353cc69..354ae0d 100644 --- a/modules/utils.js +++ b/modules/utils.js @@ -1,4 +1,6 @@ const crypto = require("node:crypto") +const logger = require("../modules/logger") +const { DefaultError } = require("../errors/errors") const certificatesManager = require("./certificatesManager") async function getRegistrationCountryFromIp(ipAddress) { @@ -60,8 +62,14 @@ function getUrlParam(url, param) { return urlParams.get(param) } +function handleDBError(error, errorMessage = "Internal Server Error", code = 500) { + logger.log(errorMessage.bold + " : " + error.toString(), ["MariaDB", "yellow"]) + throw new DefaultError(code, errorMessage, "InternalServerError") +} + module.exports = { getUrlParam, + handleDBError, signProfileData, addDashesToUUID, isTrueFromDotEnv, diff --git a/repositories/adminRepository.js b/repositories/adminRepository.js index 296226e..0128468 100644 --- a/repositories/adminRepository.js +++ b/repositories/adminRepository.js @@ -1,4 +1,4 @@ -const logger = require("../modules/logger") +const utils = require("../modules/utils") const database = require("../modules/database") const { DefaultError } = require("../errors/errors") @@ -8,8 +8,7 @@ async function getAdminById(id) { const rows = await database.query(sql, [id]) return rows[0] || null } catch (error) { - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -27,8 +26,7 @@ async function createAdmin(username, hashedPassword) { if (error.code === "ER_DUP_ENTRY") { throw new DefaultError(409, "Administrator username already exists.") } - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -42,8 +40,7 @@ async function hasPermission(adminId, permissionKey) { const rows = await database.query(sql, [adminId, permissionKey]) return rows[0].count === 1 } catch (error) { - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -55,8 +52,7 @@ async function assignPermission(adminId, permissionKey) { return result.affectedRows > 0 } catch (error) { if (error.code === "ER_DUP_ENTRY") return true - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -67,8 +63,7 @@ async function revokePermission(adminId, permissionKey) { return result.affectedRows > 0 } catch (error) { - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -82,8 +77,7 @@ async function getAdminPermissions(adminId) { const rows = await database.query(sql, [adminId]) return rows.map(r => r.permission_key) } catch (error) { - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -101,9 +95,7 @@ async function updateAdminPassword(adminId, newHashedPassword) { throw new DefaultError(404, "Administrator not found.") } } catch (error) { - if (error instanceof DefaultError) throw error - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -114,8 +106,7 @@ async function getAdminByUsername(username) { return rows[0] || null } catch (error) { - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -131,8 +122,7 @@ async function addPlayerAction(playerUuid, actionCode) { message: result.affectedRows > 0 ? "Action taken." : "Action already taken." } } catch (error) { - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } diff --git a/repositories/authRepository.js b/repositories/authRepository.js index 5cd423a..49b1687 100644 --- a/repositories/authRepository.js +++ b/repositories/authRepository.js @@ -1,4 +1,3 @@ -const logger = require("../modules/logger") const bcrypt = require("bcryptjs") const database = require("../modules/database") const { DefaultError } = require("../errors/errors") @@ -19,9 +18,7 @@ async function getUser(identifier, requirePassword = false) { return { code: 200, user } } catch (error) { - if (error instanceof DefaultError) throw error - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Please contact an administrator.") + return utils.handleDBError(error) } } @@ -37,11 +34,7 @@ async function register(email, username, password) { throw new DefaultError(500, "Please contact an administrator.", "InternalServerError") } } catch (error) { - if (error instanceof DefaultError) throw error - - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - console.log(error) - throw new DefaultError(500, "Please contact an administrator.", "InternalServerError") + return utils.handleDBError(error) } } @@ -56,7 +49,7 @@ async function insertClientSession(accessToken, clientToken, uuid) { throw new DefaultError(500, "Please contact an administrator.", "InternalServerError") } } catch (error) { - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) + return utils.handleDBError(error) } } @@ -70,9 +63,7 @@ async function getPlayerProperties(uuid) { } return { code: 200, properties: properties.map(property => { return { name: property.name, value: property.value } }) } } catch (error) { - if (error instanceof DefaultError) throw error - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Please contact an administrator.", "InternalServerError") + return utils.handleDBError(error) } } @@ -91,9 +82,7 @@ async function getClientSession(accessToken, clientToken) { throw new DefaultError(404, "Client session not found") } } catch (error) { - if (error instanceof DefaultError) throw error - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Please contact an administrator.", "InternalServerError") + return utils.handleDBError(error) } } @@ -112,9 +101,7 @@ async function validateClientSession(accessToken, clientToken) { throw new DefaultError(404, "Client session not found for this accessToken/clientToken combination.") } } catch (error) { - if (error instanceof DefaultError) throw error - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Please contact an administrator.", "InternalServerError") + return utils.handleDBError(error) } } @@ -133,9 +120,7 @@ async function validateClientSessionWithoutClientToken(accessToken) { throw new DefaultError(404, "Client session not found for this accessToken.") } } catch (error) { - if (error instanceof DefaultError) throw error - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Please contact an administrator.", "InternalServerError") + return utils.handleDBError(error) } } @@ -153,9 +138,7 @@ async function invalidateClientSession(accessToken, clientToken) { throw new DefaultError(404, "Client session not found for this accessToken/clientToken combination.") } } catch (error) { - if (error instanceof DefaultError) throw error - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Please contact an administrator.", "InternalServerError") + return utils.handleDBError(error) } } @@ -173,9 +156,7 @@ async function revokeAccessTokens(uuid) { throw new DefaultError(404, "No access token found for this user.") } } catch (error) { - if (error instanceof DefaultError) throw error - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Please contact an administrator.", "InternalServerError") + return utils.handleDBError(error) } } diff --git a/repositories/oauth2Repository.js b/repositories/oauth2Repository.js index d069385..12b6658 100644 --- a/repositories/oauth2Repository.js +++ b/repositories/oauth2Repository.js @@ -1,6 +1,5 @@ -const logger = require("../modules/logger") +const utils = require("../modules/utils") const database = require("../modules/database") -const { DefaultError } = require("../errors/errors") async function createLinkAttempt(OAuth2LinkId, playerUuid) { try { @@ -12,8 +11,7 @@ async function createLinkAttempt(OAuth2LinkId, playerUuid) { const result = await database.query(sql, [OAuth2LinkId, playerUuid]) return result.affectedRows > 0 } catch (error) { - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -31,8 +29,7 @@ async function popLinkAttempt(OAuth2LinkId) { return playerUuid } catch (error) { - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -43,8 +40,7 @@ async function unlinkProviderAccount(provider, playerUuid) { return result.affectedRows > 0 } catch (error) { - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } diff --git a/repositories/sessionsRepository.js b/repositories/sessionsRepository.js index 6961bed..6aecc75 100644 --- a/repositories/sessionsRepository.js +++ b/repositories/sessionsRepository.js @@ -1,4 +1,4 @@ -const logger = require("../modules/logger") +const utils = require("../modules/utils") const database = require("../modules/database") const { DefaultError } = require("../errors/errors") @@ -15,9 +15,7 @@ async function insertLegacyClientSessions(sessionId, uuid) { throw new DefaultError(500, "Internal Server Error", "Unknown DB Error") } } catch (error) { - if (error instanceof DefaultError) throw error - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Please contact an administrator.") + return utils.handleDBError(error) } } @@ -39,8 +37,7 @@ async function validateLegacyClientSession(sessionId, uuid) { } } } catch (error) { - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Please contact an administrator.") + return utils.handleDBError(error) } } @@ -54,8 +51,7 @@ async function getBlockedServers() { blockedServers: blockedServers.map(bannedServer => ({ sha1: bannedServer.hashedIp })) } } catch (error) { - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Please contact an administrator.") + return utils.handleDBError(error) } } @@ -74,11 +70,7 @@ async function getActiveSkin(uuid) { } return { code: 200, data: skin || null } } catch (error) { - if (error instanceof DefaultError) { - throw error - } - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Please contact an administrator.") + return utils.handleDBError(error) } } @@ -97,11 +89,7 @@ async function getActiveCape(uuid) { } return { code: 200, data: cape || null } } catch (error) { - if (error instanceof DefaultError) { - throw error - } - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Please contact an administrator.") + return utils.handleDBError(error) } } @@ -115,8 +103,7 @@ async function getProfileActionsList(uuid) { return { code: 200, data: actions } } catch (error) { - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Please contact an administrator.") + return utils.handleDBError(error) } } @@ -135,8 +122,7 @@ async function saveServerSession(uuid, accessToken, serverId, ip) { return { code: 200, success: result.affectedRows > 0 } } catch (error) { - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Please contact an administrator.") + return utils.handleDBError(error) } } @@ -157,8 +143,7 @@ async function getServerSession(uuid, serverId) { return { code: 200, valid: true, ip: session.ip } } catch (error) { - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Please contact an administrator.") + return utils.handleDBError(error) } } diff --git a/repositories/userRepository.js b/repositories/userRepository.js index e270c61..3d019ba 100644 --- a/repositories/userRepository.js +++ b/repositories/userRepository.js @@ -1,3 +1,4 @@ +const utils = require("../modules/utils") const crypto = require("node:crypto") const logger = require("../modules/logger") const database = require("../modules/database") @@ -18,8 +19,7 @@ async function addPropertyToPlayer(key, value, uuid) { throw new DefaultError(500, "Please contact an administrator.", "InternalServerError") } } catch (error) { - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Please contact an administrator.", "InternalServerError") + return utils.handleDBError(error) } } @@ -34,9 +34,7 @@ async function deletePropertyToPlayer(key, uuid) { throw new DefaultError(500, "Property not found for this user/key combination.") } } catch (error) { - if (error instanceof DefaultError) throw error - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Please contact an administrator.", "InternalServerError") + return utils.handleDBError(error) } } @@ -50,9 +48,7 @@ async function updatePropertyToPlayer(key, value, uuid) { throw new DefaultError(404, "Property not found for this user/key combination") } } catch (error) { - if (error instanceof DefaultError) throw error - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Please contact an administrator.", "InternalServerError") + return utils.handleDBError(error) } } @@ -68,9 +64,7 @@ async function getPlayerProperties(uuid) { properties: rows.map(property => ({ name: property.name, value: property.value })) } } catch (error) { - if (error instanceof DefaultError) throw error - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Please contact an administrator.", "InternalServerError") + return utils.handleDBError(error) } } @@ -84,9 +78,7 @@ async function getPlayerProperty(key, uuid) { } return { code: 200, property } } catch (error) { - if (error instanceof DefaultError) throw error - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Please contact an administrator.", "InternalServerError") + return utils.handleDBError(error) } } @@ -109,9 +101,7 @@ async function getPlayerPropertyByValue(key, value) { } } } catch (error) { - if (error instanceof DefaultError) throw error - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Please contact an administrator.", "InternalServerError") + return utils.handleDBError(error) } } @@ -126,9 +116,8 @@ async function getPlayerSettingsSchema() { RAW_SCHEMA_CACHE.privileges = privilegesRows.map(c => c.Field).filter(n => n !== "uuid") RAW_SCHEMA_CACHE.preferences = preferencesRows.map(c => c.Field).filter(n => n !== "uuid") return RAW_SCHEMA_CACHE - } catch (err) { - logger.log("Database Schema Error: " + err.toString(), ["MariaDB", "red"]) - throw new DefaultError(500, "Internal Server Error", "Database Schema Error") + } catch (error) { + return utils.handleDBError(error) } } @@ -152,9 +141,7 @@ async function updatePlayerPreferences(uuid, updates) { throw new DefaultError(404, "Player preferences not found or no changes made.") } } catch (error) { - if (error instanceof DefaultError) throw error - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Please contact an administrator.", "InternalServerError") + return utils.handleDBError(error) } } @@ -174,9 +161,7 @@ async function getPlayerPreferences(uuid) { throw new DefaultError(404, "Preferences not found for this UUID.") } } catch (error) { - if (error instanceof DefaultError) throw error - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Please contact an administrator.", "InternalServerError") + return utils.handleDBError(error) } } @@ -199,9 +184,7 @@ async function getPlayerPrivileges(uuid) { throw new DefaultError(404, "Privileges not found for this UUID.") } } catch (error) { - if (error instanceof DefaultError) throw error - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Please contact an administrator.", "InternalServerError") + return utils.handleDBError(error) } } @@ -225,9 +208,7 @@ async function updatePlayerPrivileges(uuid, updates) { throw new DefaultError(404, "Player privileges not found or no changes made.") } } catch (error) { - if (error instanceof DefaultError) throw error - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Please contact an administrator.", "InternalServerError") + return utils.handleDBError(error) } } @@ -268,8 +249,7 @@ async function banUser(uuid, { reasonKey, reasonMessage, expires = null }) { if (error.code === "ER_NO_REFERENCED_ROW_2" || error.toString().includes("foreign key constraint")) { throw new DefaultError(404, "User not found (cannot ban a ghost).") } - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", error.toString()) + return utils.handleDBError(error) } } @@ -291,9 +271,7 @@ async function unbanUser(uuid) { } } catch (error) { - if (error instanceof DefaultError) throw error - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Please contact an administrator.", "InternalServerError") + return utils.handleDBError(error) } } @@ -318,9 +296,7 @@ async function getPlayerBans(uuid) { return { code: 204 } } } catch (error) { - if (error instanceof DefaultError) throw error - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Please contact an administrator.", "InternalServerError") + return utils.handleDBError(error) } } @@ -338,8 +314,7 @@ async function changeUsername(uuid, newName) { if (error.code === "ER_DUP_ENTRY" || error.errno === 1062) { throw new DefaultError(409, "Username already taken", "ForbiddenOperationException") } - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", error.toString()) + return utils.handleDBError(error) } } @@ -355,8 +330,7 @@ async function createTexture(uuid, hash, type, url, alias) { if (error.code === 'ER_DUP_ENTRY') { return false } - logger.log("Database Error: " + error.toString(), ["MariaDB", "red"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -367,8 +341,7 @@ async function getTextureByUuid(textureUuid) { const rows = await database.query(sql, [textureUuid]) return rows[0] || null } catch (error) { - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -378,8 +351,7 @@ async function getTextureByHash(hash) { const rows = await database.query(sql, [hash]) return rows[0] } catch (error) { - logger.log("Database Error: " + error.toString(), ["MariaDB", "red"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -398,8 +370,7 @@ async function resetSkin(uuid, hash, variant) { await database.query(updateSql, [hash, uuid]) return { code: 200 } } catch (error) { - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -409,8 +380,7 @@ async function hideCape(uuid) { await database.query(sql, [uuid]) return { code: 200 } } catch (error) { - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -430,8 +400,7 @@ async function showCape(uuid, hash) { return { code: 200, changed: affectedRows > 0 } } catch (error) { - logger.log("Database Error: " + error.toString(), ["MariaDB", "red"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -441,7 +410,7 @@ async function checkCapeOwnership(uuid, hash) { const rows = await database.query(sql, [uuid, hash]) return rows.length > 0 } catch (error) { - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -451,8 +420,7 @@ async function getPlayerMeta(uuid) { const rows = await database.query(sql, [uuid]) return rows[0] } catch (error) { - logger.log("Database Error: " + error.toString(), ["MariaDB", "red"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -468,8 +436,7 @@ async function getLastNameChange(uuid) { const rows = await database.query(sql, [uuid]) return rows[0] } catch (error) { - logger.log("Database Error: " + error.toString(), ["MariaDB", "red"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -479,8 +446,7 @@ async function getPlayerCertificate(uuid) { const rows = await database.query(sql, [uuid]) return rows[0] } catch (error) { - logger.log("Database Error: " + error.toString(), ["MariaDB", "red"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -494,8 +460,7 @@ async function savePlayerCertificate(uuid, privateKey, publicKey, signatureV2, e const result = await database.query(sql, [uuid, privateKey, publicKey, signatureV2, expiresAt, refreshedAfter]) return result.affectedRows > 0 } catch (error) { - logger.log("Database Error: " + error.toString(), ["MariaDB", "red"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -505,8 +470,7 @@ async function deleteExpiredCertificates(isoDate) { const result = await database.query(sql, [isoDate]) return result.affectedRows } catch (error) { - logger.log("Database Error: " + error.toString(), ["MariaDB", "red"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -517,8 +481,7 @@ async function addProfileAction(uuid, actionCode) { const result = await database.query(sql, [cleanUuid, actionCode]) return result.affectedRows > 0 } catch (error) { - logger.log("Database Error: " + error.toString(), ["MariaDB", "red"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -529,8 +492,7 @@ async function removeProfileAction(uuid, actionCode) { const result = await database.query(sql, [cleanUuid, actionCode]) return result.affectedRows } catch (error) { - logger.log("Database Error: " + error.toString(), ["MariaDB", "red"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -541,8 +503,7 @@ async function getPlayerActions(uuid) { const rows = await database.query(sql, [cleanUuid]) return rows.map(r => r.action) } catch (error) { - logger.log("Database Error: " + error.toString(), ["MariaDB", "red"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -553,8 +514,7 @@ async function clearAllPlayerActions(uuid) { const result = await database.query(sql, [cleanUuid]) return result.affectedRows } catch (error) { - logger.log("Database Error: " + error.toString(), ["MariaDB", "red"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -564,8 +524,7 @@ async function blockPlayer(blockerUuid, blockedUuid) { const result = await database.query(sql, [blockerUuid, blockedUuid]) return result.affectedRows > 0 } catch (error) { - logger.log("Database Error: " + error.toString(), ["MariaDB", "red"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -575,8 +534,7 @@ async function unblockPlayer(blockerUuid, blockedUuid) { const result = await database.query(sql, [blockerUuid, blockedUuid]) return result.affectedRows > 0 } catch (error) { - logger.log("Database Error: " + error.toString(), ["MariaDB", "red"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -586,8 +544,7 @@ async function getBlockedUuids(blockerUuid) { const rows = await database.query(sql, [blockerUuid]) return rows.map(r => r.blockedUuid) } catch (error) { - logger.log("Database Error: " + error.toString(), ["MariaDB", "red"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -597,8 +554,7 @@ async function isBlocked(blockerUuid, targetUuid) { const rows = await database.query(sql, [blockerUuid, targetUuid]) return rows.length > 0 } catch (error) { - logger.log("Database Error: " + error.toString(), ["MariaDB", "red"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -613,8 +569,7 @@ async function getUsersByNames(usernames) { const rows = await database.query(sql, uniqueNames) return rows } catch (error) { - logger.log("Database Error: " + error.toString(), ["MariaDB", "red"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -625,8 +580,7 @@ async function getUuidAndUsername(username) { return rows[0] || null } catch (error) { - logger.log("Database Error: " + error.toString(), ["MariaDB", "red"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -636,8 +590,7 @@ async function getProfileByUsername(username) { const rows = await database.query(sql, [username]) return rows[0] || null } catch (error) { - logger.log("Database Error: " + error.toString(), ["MariaDB", "red"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -654,8 +607,7 @@ async function getProfileByHistory(username, isoDate) { const rows = await database.query(sql, [username, isoDate]) return rows[0] || null } catch (error) { - logger.log("Database Error: " + error.toString(), ["MariaDB", "red"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -670,8 +622,7 @@ async function getNameHistory(uuid) { const rows = await database.query(sql, [uuid]) return rows } catch (error) { - logger.log("Database Error: " + error.toString(), ["MariaDB", "red"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -702,9 +653,7 @@ async function updatePassword(uuid, hashedPassword) { throw new DefaultError(404, "User not found") } } catch (error) { - if (error instanceof DefaultError) throw error - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -724,8 +673,7 @@ async function addCapeToPlayer(uuid, hash) { if (error.code === 'ER_DUP_ENTRY') { throw new DefaultError(409, "Le joueur possède déjà cette cape.") } - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -740,9 +688,7 @@ async function removeCapeFromPlayer(uuid, hash) { throw new DefaultError(404, "Le joueur ne possède pas cette cape.") } } catch (error) { - if (error instanceof DefaultError) throw error - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } } @@ -752,8 +698,7 @@ async function deleteTexture(hash) { const result = await database.query(sql, [hash]) return result.affectedRows > 0 } catch (error) { - logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) - throw new DefaultError(500, "Internal Server Error", "Database Error") + return utils.handleDBError(error) } }