← 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 });
}