const logger = require("../modules/logger") const database = require("../modules/database") const { DefaultError } = require("../errors/errors") 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) { logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) throw new DefaultError(500, "Internal Server Error", "Database 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) { logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) throw new DefaultError(500, "Internal Server Error", "Database 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) { logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"]) throw new DefaultError(500, "Internal Server Error", "Database Error") } } module.exports = { popLinkAttempt, createLinkAttempt, unlinkProviderAccount }