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.
51 lines
1.5 KiB
JavaScript
51 lines
1.5 KiB
JavaScript
const utils = require("../modules/utils")
|
|
const database = require("../modules/database")
|
|
|
|
async function createLinkAttempt(OAuth2LinkId, playerUuid) {
|
|
try {
|
|
const sql = `
|
|
INSERT INTO oaauth2LinkAttempts (OAuth2LinkId, playerUuid)
|
|
VALUES (?, ?)
|
|
ON DUPLICATE KEY UPDATE playerUuid = VALUES(playerUuid), createdAt = NOW()
|
|
`
|
|
const result = await database.query(sql, [OAuth2LinkId, playerUuid])
|
|
return result.affectedRows > 0
|
|
} catch (error) {
|
|
return utils.handleDBError(error)
|
|
}
|
|
}
|
|
|
|
async function popLinkAttempt(OAuth2LinkId) {
|
|
try {
|
|
const selectSql = "SELECT playerUuid FROM oaauth2LinkAttempts WHERE OAuth2LinkId = ?"
|
|
const rows = await database.query(selectSql, [OAuth2LinkId])
|
|
|
|
if (rows.length === 0) return null
|
|
|
|
const playerUuid = rows[0].playerUuid
|
|
|
|
const deleteSql = "DELETE FROM oaauth2LinkAttempts WHERE OAuth2LinkId = ?"
|
|
await database.query(deleteSql, [OAuth2LinkId])
|
|
|
|
return playerUuid
|
|
} catch (error) {
|
|
return utils.handleDBError(error)
|
|
}
|
|
}
|
|
|
|
async function unlinkProviderAccount(provider, playerUuid) {
|
|
try {
|
|
const sql = `DELETE FROM playersProperties WHERE name = '${provider}Id' AND uuid = ?`
|
|
const result = await database.query(sql, [playerUuid])
|
|
|
|
return result.affectedRows > 0
|
|
} catch (error) {
|
|
return utils.handleDBError(error)
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
popLinkAttempt,
|
|
createLinkAttempt,
|
|
unlinkProviderAccount
|
|
} |