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:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user