← back to Bertha
src/app/api/health/route.js
41 lines
import { NextResponse } from 'next/server';
const { pool } = require('../../../lib/db');
const { authenticateRequest, createToken, VALID_USER, VALID_PASS } = require('../../../lib/auth');
export const dynamic = 'force-dynamic';
export async function GET(req) {
const user = authenticateRequest(req);
let dbOk = false;
try { await pool.query('SELECT 1'); dbOk = true; } catch {}
let riskState = {};
try {
const res = await pool.query('SELECT * FROM risk_state ORDER BY id DESC LIMIT 1');
riskState = res.rows[0] || {};
} catch {}
return NextResponse.json({
service: 'bertha-weather-betting',
version: '1.0.0',
status: 'running',
authenticated: !!user,
db_connected: dbOk,
paper_mode: riskState.config?.paper_mode !== false,
kill_switch: riskState.kill_switch_active || false,
bankroll: parseFloat(riskState.bankroll || 50),
uptime: process.uptime(),
timestamp: new Date().toISOString(),
slack_configured: !!process.env.SLACK_BOT_TOKEN,
});
}
export async function POST(req) {
const body = await req.json();
if (body.username === VALID_USER && body.password === VALID_PASS) {
const token = createToken(body.username);
return NextResponse.json({ token, user: body.username });
}
return NextResponse.json({ error: 'Invalid credentials' }, { status: 401 });
}