import { Hono } from 'hono'; import pool from '../../db.js'; import mileagePool from '../../mileage-db.js'; const app = new Hono(); app.get('/', async (c) => { const targetId = c.req.query('targetId'); const days = Number(c.req.query('days')) || 7; try { let plates: string[] = []; if (targetId) { const [vehicleRows] = await pool.execute( 'SELECT plate_number FROM tab_mileage_assessment_vehicle WHERE target_id = ? AND is_deleted = 0', [targetId] ) as [{ plate_number: string }[], unknown]; plates = vehicleRows.map(r => r.plate_number); if (plates.length === 0) return c.json([]); } let sql = ` SELECT DATE_FORMAT(stat_date, '%m-%d') as date, SUM(daily_km) as mileage FROM v_vehicle_daily_stats WHERE stat_date >= DATE_SUB(CURDATE(), INTERVAL ? DAY) AND stat_date < CURDATE() `; const params: (string | number)[] = [days]; if (plates.length > 0) { sql += ` AND plate IN (${plates.map(() => '?').join(',')})`; params.push(...plates); } sql += ' GROUP BY stat_date ORDER BY stat_date'; const [rows] = await mileagePool.execute(sql, params) as [any[], unknown]; return c.json(rows.map((r: any) => ({ date: r.date, mileage: Math.round(Number(r.mileage) || 0), }))); } catch (e: unknown) { console.error('trend error:', e); return c.json([], 500); } }); export default app;