Centralize and standardize database error handling

Introduced a new handleDBError utility in modules/utils.js to centralize database error logging and throwing. Refactored all repositories to use this utility, replacing repetitive error handling and logger calls with a single function call for improved maintainability and consistency.
This commit is contained in:
Gilles Lazures 2026-01-18 18:04:10 +01:00
parent 88f8ee57e1
commit 71627c7041
7 changed files with 91 additions and 183 deletions

View File

@ -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")

View File

@ -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,

View File

@ -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)
}
}

View File

@ -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)
}
}

View File

@ -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)
}
}

View File

@ -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)
}
}

View File

@ -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)
}
}