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:
@@ -5,7 +5,7 @@ const { DefaultError } = require("../errors/errors")
|
||||
async function getAdminById(id) {
|
||||
try {
|
||||
const sql = "SELECT id, username, createdAt FROM apiAdministrators WHERE id = ?"
|
||||
const rows = await database.query(sql, [id])
|
||||
const rows = await database.pool.query(sql, [id])
|
||||
return rows[0] || null
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -15,7 +15,7 @@ async function getAdminById(id) {
|
||||
async function createAdmin(username, hashedPassword) {
|
||||
try {
|
||||
const sql = "INSERT INTO apiAdministrators (username, password) VALUES (?, ?)"
|
||||
const result = await database.query(sql, [username, hashedPassword])
|
||||
const result = await database.pool.query(sql, [username, hashedPassword])
|
||||
|
||||
if (result.affectedRows > 0) {
|
||||
return { code: 200, id: result.insertId, username }
|
||||
@@ -37,7 +37,7 @@ async function hasPermission(adminId, permissionKey) {
|
||||
FROM apiAdministratorsPermissions
|
||||
WHERE administratorId = ? AND permissionKey = ?
|
||||
`
|
||||
const rows = await database.query(sql, [adminId, permissionKey])
|
||||
const rows = await database.pool.query(sql, [adminId, permissionKey])
|
||||
return rows[0].count === 1
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -47,7 +47,7 @@ async function hasPermission(adminId, permissionKey) {
|
||||
async function assignPermission(adminId, permissionKey) {
|
||||
try {
|
||||
const sql = "INSERT INTO apiAdministratorsPermissions (administratorId, permissionKey) VALUES (?, ?)"
|
||||
const result = await database.query(sql, [adminId, permissionKey])
|
||||
const result = await database.pool.query(sql, [adminId, permissionKey])
|
||||
|
||||
return result.affectedRows > 0
|
||||
} catch (error) {
|
||||
@@ -59,7 +59,7 @@ async function assignPermission(adminId, permissionKey) {
|
||||
async function revokePermission(adminId, permissionKey) {
|
||||
try {
|
||||
const sql = "DELETE FROM apiAdministratorsPermissions WHERE administratorId = ? AND permissionKey = ?"
|
||||
const result = await database.query(sql, [adminId, permissionKey])
|
||||
const result = await database.pool.query(sql, [adminId, permissionKey])
|
||||
|
||||
return result.affectedRows > 0
|
||||
} catch (error) {
|
||||
@@ -74,7 +74,7 @@ async function getAdminPermissions(adminId) {
|
||||
FROM apiAdministratorsPermissions
|
||||
WHERE administratorId = ?
|
||||
`
|
||||
const rows = await database.query(sql, [adminId])
|
||||
const rows = await database.pool.query(sql, [adminId])
|
||||
return rows.map(r => r.permissionKey)
|
||||
} catch (error) {
|
||||
return utils.handleDBError(error)
|
||||
@@ -84,7 +84,7 @@ async function getAdminPermissions(adminId) {
|
||||
async function updateAdminPassword(adminId, newHashedPassword) {
|
||||
try {
|
||||
const sql = "UPDATE apiAdministrators SET password = ? WHERE id = ?"
|
||||
const result = await database.query(sql, [newHashedPassword, adminId])
|
||||
const result = await database.pool.query(sql, [newHashedPassword, adminId])
|
||||
|
||||
if (result.affectedRows > 0) {
|
||||
return {
|
||||
@@ -102,7 +102,7 @@ async function updateAdminPassword(adminId, newHashedPassword) {
|
||||
async function getAdminByUsername(username) {
|
||||
try {
|
||||
const sql = "SELECT id, username, password, createdAt FROM apiAdministrators WHERE username = ?"
|
||||
const rows = await database.query(sql, [username])
|
||||
const rows = await database.pool.query(sql, [username])
|
||||
|
||||
return rows[0] || null
|
||||
} catch (error) {
|
||||
@@ -114,7 +114,7 @@ async function addPlayerAction(playerUuid, actionCode) {
|
||||
try {
|
||||
const cleanUuid = playerUuid.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 {
|
||||
code: 200,
|
||||
|
||||
Reference in New Issue
Block a user