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:
2026-09-06 23:52:25 +02:00
parent 93892197ad
commit 87407fe604
40 changed files with 405 additions and 485 deletions
+9 -9
View File
@@ -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,