Add DDL-based DB init and bootstrap
Add bootstrap entrypoint and migrate DB schema setup to SQL files. Introduces bootstrap.js, many data/ddl/*.sql files, and a new runDDL() in modules/database.js (exports pool and runDDL). Remove legacy modules/databaseGlobals.js. Update repositories and code to use database.pool.query calls. Bump package version and set main to bootstrap.js. Clean up server.js to remove inline DB/cert init (now handled by bootstrap). Overall: refactor DB initialization to run ordered SQL DDL files and centralize startup logic.
This commit is contained in:
@@ -11,7 +11,7 @@ async function getSkins(uuid) {
|
||||
JOIN textures t ON ps.assetHash = t.hash
|
||||
WHERE ps.playerUuid = ?
|
||||
`
|
||||
const rows = await database.query(sql, [uuid])
|
||||
const rows = await database.pool.query(sql, [uuid])
|
||||
return rows
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -26,7 +26,7 @@ async function getCapes(uuid) {
|
||||
JOIN textures t ON pc.assetHash = t.hash
|
||||
WHERE pc.playerUuid = ?
|
||||
`
|
||||
const rows = await database.query(sql, [uuid])
|
||||
const rows = await database.pool.query(sql, [uuid])
|
||||
return rows
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -40,7 +40,7 @@ async function addPropertyToPlayer(key, value, uuid) {
|
||||
VALUES (?, ?, ?)
|
||||
ON DUPLICATE KEY UPDATE value = VALUES(value)
|
||||
`
|
||||
const result = await database.query(sql, [key, value, uuid])
|
||||
const result = await database.pool.query(sql, [key, value, uuid])
|
||||
|
||||
if (result.affectedRows > 0) {
|
||||
return { code: 200, key, value, uuid }
|
||||
@@ -55,7 +55,7 @@ async function addPropertyToPlayer(key, value, uuid) {
|
||||
async function deletePropertyToPlayer(key, uuid) {
|
||||
try {
|
||||
const sql = `DELETE FROM playersProperties WHERE name = ? AND uuid = ?`
|
||||
const result = await database.query(sql, [key, uuid])
|
||||
const result = await database.pool.query(sql, [key, uuid])
|
||||
|
||||
if (result.affectedRows > 0) {
|
||||
return { code: 200, key, uuid }
|
||||
@@ -70,7 +70,7 @@ async function deletePropertyToPlayer(key, uuid) {
|
||||
async function updatePropertyToPlayer(key, value, uuid) {
|
||||
try {
|
||||
const sql = `UPDATE playersProperties SET value = ? WHERE name = ? AND uuid = ?`
|
||||
const result = await database.query(sql, [value, key, uuid])
|
||||
const result = await database.pool.query(sql, [value, key, uuid])
|
||||
if (result.affectedRows > 0) {
|
||||
return { code: 200, key, value, uuid }
|
||||
} else {
|
||||
@@ -84,7 +84,7 @@ async function updatePropertyToPlayer(key, value, uuid) {
|
||||
async function getPlayerProperties(uuid) {
|
||||
try {
|
||||
const sql = `SELECT * FROM playersProperties WHERE uuid = ?`
|
||||
const rows = await database.query(sql, [uuid])
|
||||
const rows = await database.pool.query(sql, [uuid])
|
||||
if (rows.length === 0) {
|
||||
throw new DefaultError(404, "Properties not found for this user")
|
||||
}
|
||||
@@ -100,7 +100,7 @@ async function getPlayerProperties(uuid) {
|
||||
async function getPlayerProperty(key, uuid) {
|
||||
try {
|
||||
const sql = `SELECT * FROM playersProperties WHERE name = ? AND uuid = ?`
|
||||
const rows = await database.query(sql, [key, uuid])
|
||||
const rows = await database.pool.query(sql, [key, uuid])
|
||||
const property = rows[0]
|
||||
if (!property) {
|
||||
throw new DefaultError(404, "Property not found for this user/key combination")
|
||||
@@ -114,7 +114,7 @@ async function getPlayerProperty(key, uuid) {
|
||||
async function getPlayerPropertyByValue(key, value) {
|
||||
try {
|
||||
const sql = `SELECT * FROM playersProperties WHERE name = ? AND value = ?`
|
||||
const rows = await database.query(sql, [key, value])
|
||||
const rows = await database.pool.query(sql, [key, value])
|
||||
const property = rows[0]
|
||||
|
||||
if (!property) {
|
||||
@@ -140,8 +140,8 @@ async function getPlayerSettingsSchema() {
|
||||
preferences: {}
|
||||
}
|
||||
try {
|
||||
const privilegesRows = await database.query("DESCRIBE playersPrivileges")
|
||||
const preferencesRows = await database.query("DESCRIBE playersPreferences")
|
||||
const privilegesRows = await database.pool.query("DESCRIBE playersPrivileges")
|
||||
const preferencesRows = await database.pool.query("DESCRIBE playersPreferences")
|
||||
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
|
||||
@@ -160,7 +160,7 @@ async function updatePlayerPreferences(uuid, updates) {
|
||||
const sql = `UPDATE playersPreferences SET ${setClause} WHERE uuid = ?`
|
||||
const values = keys.map(key => updates[key])
|
||||
values.push(uuid)
|
||||
const result = await database.query(sql, values)
|
||||
const result = await database.pool.query(sql, values)
|
||||
if (result.affectedRows > 0) {
|
||||
return {
|
||||
code: 200,
|
||||
@@ -177,7 +177,7 @@ async function updatePlayerPreferences(uuid, updates) {
|
||||
async function getPlayerPreferences(uuid) {
|
||||
try {
|
||||
const sql = `SELECT profanityFilter FROM playersPreferences WHERE uuid = ?`
|
||||
const rows = await database.query(sql, [uuid])
|
||||
const rows = await database.pool.query(sql, [uuid])
|
||||
const data = rows[0]
|
||||
|
||||
if (data) {
|
||||
@@ -201,7 +201,7 @@ async function getPlayerPrivileges(uuid) {
|
||||
FROM playersPrivileges
|
||||
WHERE uuid = ?
|
||||
`
|
||||
const rows = await database.query(sql, [uuid])
|
||||
const rows = await database.pool.query(sql, [uuid])
|
||||
const data = rows[0]
|
||||
if (data) {
|
||||
return {
|
||||
@@ -227,7 +227,7 @@ async function updatePlayerPrivileges(uuid, updates) {
|
||||
const sql = `UPDATE playersPrivileges SET ${setClause} WHERE uuid = ?`
|
||||
const values = keys.map(key => updates[key])
|
||||
values.push(uuid)
|
||||
const result = await database.query(sql, values)
|
||||
const result = await database.pool.query(sql, values)
|
||||
if (result.affectedRows > 0) {
|
||||
return {
|
||||
code: 200,
|
||||
@@ -248,11 +248,11 @@ async function banUser(uuid, { reasonKey, reasonMessage, expires = null }) {
|
||||
}
|
||||
|
||||
let reasonId
|
||||
const reasonRows = await database.query("SELECT id FROM banReasons WHERE reasonKey = ?", [reasonKey])
|
||||
const reasonRows = await database.pool.query("SELECT id FROM banReasons WHERE reasonKey = ?", [reasonKey])
|
||||
if (reasonRows.length > 0) {
|
||||
reasonId = reasonRows[0].id
|
||||
} else {
|
||||
const insertReason = await database.query("INSERT INTO banReasons (reasonKey) VALUES (?)", [reasonKey])
|
||||
const insertReason = await database.pool.query("INSERT INTO banReasons (reasonKey) VALUES (?)", [reasonKey])
|
||||
reasonId = insertReason.insertId
|
||||
}
|
||||
|
||||
@@ -261,7 +261,7 @@ async function banUser(uuid, { reasonKey, reasonMessage, expires = null }) {
|
||||
INSERT INTO bans (banId, uuid, reason, reasonMessage, expires)
|
||||
VALUES (?, ?, ?, ?, ?)
|
||||
`
|
||||
const result = await database.query(insertSql, [banId, uuid, reasonId, reasonMessage || "Banned by operator", expires])
|
||||
const result = await database.pool.query(insertSql, [banId, uuid, reasonId, reasonMessage || "Banned by operator", expires])
|
||||
|
||||
if (result.affectedRows > 0) {
|
||||
return {
|
||||
@@ -288,7 +288,7 @@ async function unbanUser(uuid) {
|
||||
throw new DefaultError(400, "Missing uuid.")
|
||||
}
|
||||
const sql = "DELETE FROM bans WHERE uuid = ?"
|
||||
const result = await database.query(sql, [uuid])
|
||||
const result = await database.pool.query(sql, [uuid])
|
||||
if (result.affectedRows > 0) {
|
||||
return {
|
||||
code: 200,
|
||||
@@ -317,7 +317,7 @@ async function getPlayerBans(uuid) {
|
||||
WHERE b.uuid = ?
|
||||
ORDER BY b.expires ASC
|
||||
`
|
||||
const rows = await database.query(sql, [uuid])
|
||||
const rows = await database.pool.query(sql, [uuid])
|
||||
|
||||
if (rows.length > 0) {
|
||||
return { code: 200, bans: rows }
|
||||
@@ -332,7 +332,7 @@ async function getPlayerBans(uuid) {
|
||||
async function changeUsername(uuid, newName) {
|
||||
try {
|
||||
const sql = "UPDATE players SET username = ? WHERE uuid = ?"
|
||||
const result = await database.query(sql, [newName, uuid])
|
||||
const result = await database.pool.query(sql, [newName, uuid])
|
||||
if (result.affectedRows > 0) {
|
||||
return { code: 200, message: "Username changed successfully" }
|
||||
} else {
|
||||
@@ -353,7 +353,7 @@ async function createTexture(uuid, hash, type, url, alias) {
|
||||
INSERT INTO textures (uuid, hash, type, url, alias)
|
||||
VALUES (?, ?, ?, ?, ?)
|
||||
`
|
||||
await database.query(sql, [uuid, hash, type, url, alias])
|
||||
await database.pool.query(sql, [uuid, hash, type, url, alias])
|
||||
return true
|
||||
} catch (error) {
|
||||
if (error.code === 'ER_DUP_ENTRY') {
|
||||
@@ -367,7 +367,7 @@ async function createTexture(uuid, hash, type, url, alias) {
|
||||
async function getTextureByUuid(textureUuid) {
|
||||
try {
|
||||
const sql = "SELECT hash FROM textures WHERE uuid = ?"
|
||||
const rows = await database.query(sql, [textureUuid])
|
||||
const rows = await database.pool.query(sql, [textureUuid])
|
||||
return rows[0] || null
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -377,7 +377,7 @@ async function getTextureByUuid(textureUuid) {
|
||||
async function getTextureByHash(hash) {
|
||||
try {
|
||||
const sql = "SELECT uuid FROM textures WHERE hash = ?"
|
||||
const rows = await database.query(sql, [hash])
|
||||
const rows = await database.pool.query(sql, [hash])
|
||||
return rows[0]
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -390,13 +390,13 @@ async function resetSkin(uuid, hash, variant) {
|
||||
INSERT IGNORE INTO playersSkins (playerUuid, assetHash, variant, isSelected)
|
||||
VALUES (?, ?, ?, 0)
|
||||
`
|
||||
await database.query(insertSql, [uuid, hash, variant])
|
||||
await database.pool.query(insertSql, [uuid, hash, variant])
|
||||
const updateSql = `
|
||||
UPDATE playersSkins
|
||||
SET isSelected = (assetHash = ?)
|
||||
WHERE playerUuid = ?
|
||||
`
|
||||
await database.query(updateSql, [hash, uuid])
|
||||
await database.pool.query(updateSql, [hash, uuid])
|
||||
return { code: 200 }
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -406,7 +406,7 @@ async function resetSkin(uuid, hash, variant) {
|
||||
async function hideCape(uuid) {
|
||||
try {
|
||||
const sql = "UPDATE playersCapes SET isSelected = 0 WHERE playerUuid = ?"
|
||||
await database.query(sql, [uuid])
|
||||
await database.pool.query(sql, [uuid])
|
||||
return { code: 200 }
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -415,12 +415,12 @@ async function hideCape(uuid) {
|
||||
|
||||
async function showCape(uuid, hash) {
|
||||
try {
|
||||
await database.query(
|
||||
await database.pool.query(
|
||||
"UPDATE playersCapes SET isSelected = 0 WHERE playerUuid = ?",
|
||||
[uuid]
|
||||
)
|
||||
|
||||
const result = await database.query(
|
||||
const result = await database.pool.query(
|
||||
"UPDATE playersCapes SET isSelected = 1 WHERE playerUuid = ? AND assetHash = ?",
|
||||
[uuid, hash]
|
||||
)
|
||||
@@ -436,7 +436,7 @@ async function showCape(uuid, hash) {
|
||||
async function checkCapeOwnership(uuid, hash) {
|
||||
try {
|
||||
const sql = "SELECT 1 FROM playersCapes WHERE playerUuid = ? AND assetHash = ?"
|
||||
const rows = await database.query(sql, [uuid, hash])
|
||||
const rows = await database.pool.query(sql, [uuid, hash])
|
||||
return rows.length > 0
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -446,7 +446,7 @@ async function checkCapeOwnership(uuid, hash) {
|
||||
async function getPlayerMeta(uuid) {
|
||||
try {
|
||||
const sql = `SELECT createdAt, nameChangeAllowed FROM players WHERE uuid = ?`
|
||||
const rows = await database.query(sql, [uuid])
|
||||
const rows = await database.pool.query(sql, [uuid])
|
||||
return rows[0]
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -462,7 +462,7 @@ async function getLastNameChange(uuid) {
|
||||
ORDER BY changedAt DESC
|
||||
LIMIT 1
|
||||
`
|
||||
const rows = await database.query(sql, [uuid])
|
||||
const rows = await database.pool.query(sql, [uuid])
|
||||
return rows[0]
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -472,7 +472,7 @@ async function getLastNameChange(uuid) {
|
||||
async function getPlayerCertificate(uuid) {
|
||||
try {
|
||||
const sql = "SELECT * FROM playerCertificates WHERE uuid = ?"
|
||||
const rows = await database.query(sql, [uuid])
|
||||
const rows = await database.pool.query(sql, [uuid])
|
||||
return rows[0]
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -486,7 +486,7 @@ async function savePlayerCertificate(uuid, privateKey, publicKey, signatureV2, e
|
||||
(uuid, privateKey, publicKey, publicKeySignatureV2, expiresAt, refreshedAfter)
|
||||
VALUES (?, ?, ?, ?, ?, ?)
|
||||
`
|
||||
const result = await database.query(sql, [uuid, privateKey, publicKey, signatureV2, expiresAt, refreshedAfter])
|
||||
const result = await database.pool.query(sql, [uuid, privateKey, publicKey, signatureV2, expiresAt, refreshedAfter])
|
||||
return result.affectedRows > 0
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -496,7 +496,7 @@ async function savePlayerCertificate(uuid, privateKey, publicKey, signatureV2, e
|
||||
async function deleteExpiredCertificates(isoDate) {
|
||||
try {
|
||||
const sql = "DELETE FROM playerCertificates WHERE expiresAt < ?"
|
||||
const result = await database.query(sql, [isoDate])
|
||||
const result = await database.pool.query(sql, [isoDate])
|
||||
return result.affectedRows
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -507,7 +507,7 @@ async function addProfileAction(uuid, actionCode) {
|
||||
try {
|
||||
const cleanUuid = uuid.replace(/-/g, "")
|
||||
const sql = "INSERT IGNORE INTO playerProfileActions (uuid, action) VALUES (?, ?)"
|
||||
const result = await database.query(sql, [cleanUuid, actionCode])
|
||||
const result = await database.pool.query(sql, [cleanUuid, actionCode])
|
||||
return result.affectedRows > 0
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -518,7 +518,7 @@ async function removeProfileAction(uuid, actionCode) {
|
||||
try {
|
||||
const cleanUuid = uuid.replace(/-/g, "")
|
||||
const sql = "DELETE FROM playerProfileActions WHERE uuid = ? AND action = ?"
|
||||
const result = await database.query(sql, [cleanUuid, actionCode])
|
||||
const result = await database.pool.query(sql, [cleanUuid, actionCode])
|
||||
return result.affectedRows
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -529,7 +529,7 @@ async function getPlayerActions(uuid) {
|
||||
try {
|
||||
const cleanUuid = uuid.replace(/-/g, "")
|
||||
const sql = "SELECT action FROM playerProfileActions WHERE uuid = ?"
|
||||
const rows = await database.query(sql, [cleanUuid])
|
||||
const rows = await database.pool.query(sql, [cleanUuid])
|
||||
return rows.map(r => r.action)
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -540,7 +540,7 @@ async function clearAllPlayerActions(uuid) {
|
||||
try {
|
||||
const cleanUuid = uuid.replace(/-/g, "")
|
||||
const sql = "DELETE FROM playerProfileActions WHERE uuid = ?"
|
||||
const result = await database.query(sql, [cleanUuid])
|
||||
const result = await database.pool.query(sql, [cleanUuid])
|
||||
return result.affectedRows
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -550,7 +550,7 @@ async function clearAllPlayerActions(uuid) {
|
||||
async function blockPlayer(blockerUuid, blockedUuid) {
|
||||
try {
|
||||
const sql = `INSERT IGNORE INTO playersBlockslist (blockerUuid, blockedUuid) VALUES (?, ?)`
|
||||
const result = await database.query(sql, [blockerUuid, blockedUuid])
|
||||
const result = await database.pool.query(sql, [blockerUuid, blockedUuid])
|
||||
return result.affectedRows > 0
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -560,7 +560,7 @@ async function blockPlayer(blockerUuid, blockedUuid) {
|
||||
async function unblockPlayer(blockerUuid, blockedUuid) {
|
||||
try {
|
||||
const sql = `DELETE FROM playersBlockslist WHERE blockerUuid = ? AND blockedUuid = ?`
|
||||
const result = await database.query(sql, [blockerUuid, blockedUuid])
|
||||
const result = await database.pool.query(sql, [blockerUuid, blockedUuid])
|
||||
return result.affectedRows > 0
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -570,7 +570,7 @@ async function unblockPlayer(blockerUuid, blockedUuid) {
|
||||
async function getBlockedUuids(blockerUuid) {
|
||||
try {
|
||||
const sql = `SELECT blockedUuid FROM playersBlockslist WHERE blockerUuid = ?`
|
||||
const rows = await database.query(sql, [blockerUuid])
|
||||
const rows = await database.pool.query(sql, [blockerUuid])
|
||||
return rows.map(r => r.blockedUuid)
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -580,7 +580,7 @@ async function getBlockedUuids(blockerUuid) {
|
||||
async function isBlocked(blockerUuid, targetUuid) {
|
||||
try {
|
||||
const sql = `SELECT 1 FROM playersBlockslist WHERE blockerUuid = ? AND blockedUuid = ? LIMIT 1`
|
||||
const rows = await database.query(sql, [blockerUuid, targetUuid])
|
||||
const rows = await database.pool.query(sql, [blockerUuid, targetUuid])
|
||||
return rows.length > 0
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -595,7 +595,7 @@ async function getUsersByNames(usernames) {
|
||||
const placeholders = uniqueNames.map(() => "?").join(", ")
|
||||
const sql = `SELECT uuid, username FROM players WHERE username IN (${placeholders})`
|
||||
|
||||
const rows = await database.query(sql, uniqueNames)
|
||||
const rows = await database.pool.query(sql, uniqueNames)
|
||||
return rows
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -605,7 +605,7 @@ async function getUsersByNames(usernames) {
|
||||
async function getUuidAndUsername(username) {
|
||||
try {
|
||||
const sql = "SELECT uuid, username FROM players WHERE username = ?"
|
||||
const rows = await database.query(sql, [username])
|
||||
const rows = await database.pool.query(sql, [username])
|
||||
|
||||
return rows[0] || null
|
||||
} catch (error) {
|
||||
@@ -616,7 +616,7 @@ async function getUuidAndUsername(username) {
|
||||
async function getProfileByUsername(username) {
|
||||
try {
|
||||
const sql = "SELECT uuid, username FROM players WHERE username = ?"
|
||||
const rows = await database.query(sql, [username])
|
||||
const rows = await database.pool.query(sql, [username])
|
||||
return rows[0] || null
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -633,7 +633,7 @@ async function getProfileByHistory(username, isoDate) {
|
||||
ORDER BY changedAt DESC
|
||||
LIMIT 1
|
||||
`
|
||||
const rows = await database.query(sql, [username, isoDate])
|
||||
const rows = await database.pool.query(sql, [username, isoDate])
|
||||
return rows[0] || null
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -648,7 +648,7 @@ async function getNameHistory(uuid) {
|
||||
WHERE uuid = ?
|
||||
ORDER BY changedAt ASC
|
||||
`
|
||||
const rows = await database.query(sql, [uuid])
|
||||
const rows = await database.pool.query(sql, [uuid])
|
||||
return rows
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -658,14 +658,14 @@ async function getNameHistory(uuid) {
|
||||
async function setSkin(uuid, hash, variant) {
|
||||
try {
|
||||
const resetSql = `UPDATE playersSkins SET isSelected = 0 WHERE playerUuid = ?`
|
||||
await database.query(resetSql, [uuid])
|
||||
await database.pool.query(resetSql, [uuid])
|
||||
|
||||
const upsertSql = `
|
||||
INSERT INTO playersSkins (playerUuid, assetHash, variant, isSelected)
|
||||
VALUES (?, ?, ?, 1)
|
||||
ON DUPLICATE KEY UPDATE isSelected = 1, variant = VALUES(variant)
|
||||
`
|
||||
await database.query(upsertSql, [uuid, hash, variant.toUpperCase()])
|
||||
await database.pool.query(upsertSql, [uuid, hash, variant.toUpperCase()])
|
||||
|
||||
return true
|
||||
} catch (error) {
|
||||
@@ -676,7 +676,7 @@ async function setSkin(uuid, hash, variant) {
|
||||
async function updatePassword(uuid, hashedPassword) {
|
||||
try {
|
||||
const sql = "UPDATE players SET password = ? WHERE uuid = ?"
|
||||
const result = await database.query(sql, [hashedPassword, uuid])
|
||||
const result = await database.pool.query(sql, [hashedPassword, uuid])
|
||||
|
||||
if (result.affectedRows > 0) {
|
||||
return { code: 200, message: "Password updated successfully" }
|
||||
@@ -694,7 +694,7 @@ async function addCapeToPlayer(uuid, hash) {
|
||||
INSERT INTO playersCapes (playerUuid, assetHash, isSelected)
|
||||
VALUES (?, ?, 0)
|
||||
`
|
||||
const result = await database.query(sql, [uuid, hash])
|
||||
const result = await database.pool.query(sql, [uuid, hash])
|
||||
|
||||
if (result.affectedRows > 0) {
|
||||
return { code: 200, message: "Cape granted to the player." }
|
||||
@@ -711,7 +711,7 @@ async function addCapeToPlayer(uuid, hash) {
|
||||
async function removeCapeFromPlayer(uuid, hash) {
|
||||
try {
|
||||
const sql = "DELETE FROM playersCapes WHERE playerUuid = ? AND assetHash = ?"
|
||||
const result = await database.query(sql, [uuid, hash])
|
||||
const result = await database.pool.query(sql, [uuid, hash])
|
||||
|
||||
if (result.affectedRows > 0) {
|
||||
return { code: 200, message: "Cape removed from player." }
|
||||
@@ -726,7 +726,7 @@ async function removeCapeFromPlayer(uuid, hash) {
|
||||
async function deleteTexture(hash) {
|
||||
try {
|
||||
const sql = "DELETE FROM textures WHERE hash = ?"
|
||||
const result = await database.query(sql, [hash])
|
||||
const result = await database.pool.query(sql, [hash])
|
||||
return result.affectedRows > 0
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
|
||||
Reference in New Issue
Block a user