test: add board and postgres safety net
This commit is contained in:
+11
-4
@@ -16,7 +16,7 @@ if (!databaseUrl) {
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
const pool = new Pool({ connectionString: databaseUrl })
|
||||
export const pool = new Pool({ connectionString: databaseUrl })
|
||||
const editingEnabled = process.env.LEVEL_EDITING_ENABLED === 'true'
|
||||
|
||||
type WidgetRow = {
|
||||
@@ -154,6 +154,10 @@ async function savePlaythrough(client: PoolClient, state: CaseState) {
|
||||
|
||||
async function saveAuthoredLevel(client: PoolClient, state: CaseState) {
|
||||
await client.query('UPDATE osint.levels SET title = $2, subtitle = $3, updated_at = NOW() WHERE id = $1', [state.id, state.title, state.subtitle])
|
||||
await client.query(`INSERT INTO osint.playthroughs (id, level_id, viewport, updated_at)
|
||||
VALUES ($1, $2, $3::jsonb, NOW())
|
||||
ON CONFLICT (id) DO UPDATE SET viewport = EXCLUDED.viewport, updated_at = NOW()`,
|
||||
[`default:${state.id}`, state.id, JSON.stringify(state.viewport)])
|
||||
await client.query('DELETE FROM osint.level_connections WHERE level_id = $1', [state.id])
|
||||
await client.query('DELETE FROM osint.widget_relations WHERE level_id = $1', [state.id])
|
||||
await client.query('DELETE FROM osint.widgets WHERE level_id = $1', [state.id])
|
||||
@@ -184,7 +188,7 @@ async function saveAuthoredLevel(client: PoolClient, state: CaseState) {
|
||||
}
|
||||
}
|
||||
|
||||
const app = express()
|
||||
export const app = express()
|
||||
app.disable('x-powered-by')
|
||||
app.use(cors({ origin: process.env.CORS_ORIGIN || true }))
|
||||
app.use(express.json({ limit: '2mb' }))
|
||||
@@ -285,6 +289,9 @@ app.use((error: unknown, _req: express.Request, res: express.Response, _next: ex
|
||||
const here = path.dirname(fileURLToPath(import.meta.url)); const dist = path.resolve(here, '..', 'dist')
|
||||
if (fs.existsSync(dist)) { app.use(express.static(dist)); app.get('*splat', (_req, res) => res.sendFile(path.join(dist, 'index.html'))) }
|
||||
const port = Number(process.env.PORT || 8787)
|
||||
const server = app.listen(port, '0.0.0.0', () => console.log(`GUPI OSINT Board listening on http://localhost:${port}`))
|
||||
export const server = app.listen(port, '0.0.0.0', () => console.log(`GUPI OSINT Board listening on http://localhost:${port}`))
|
||||
async function shutdown() { server.close(); await pool.end(); process.exit(0) }
|
||||
process.on('SIGTERM', shutdown); process.on('SIGINT', shutdown)
|
||||
if (!process.env.VITEST) {
|
||||
process.on('SIGTERM', shutdown)
|
||||
process.on('SIGINT', shutdown)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user