Files
system-monitor/backend/api/server/history/snapshots.get.ts
2025-12-28 12:03:48 +09:00

60 lines
1.2 KiB
TypeScript

import { getDb } from '../../../utils/db'
export default defineEventHandler((event) => {
const query = getQuery(event)
const targetId = query.target_id as string
const period = (query.period as string) || '1h'
if (!targetId) {
throw createError({
statusCode: 400,
message: 'target_id is required'
})
}
// 기간별 시간 계산
const periodMap: Record<string, string> = {
'1h': '-1 hour',
'2h': '-2 hours',
'3h': '-3 hours',
'4h': '-4 hours',
'5h': '-5 hours',
'6h': '-6 hours',
'12h': '-12 hours',
'18h': '-18 hours',
'24h': '-24 hours',
'7d': '-7 days',
'30d': '-30 days'
}
const timeOffset = periodMap[period] || '-1 hour'
const db = getDb()
const snapshots = db.prepare(`
SELECT
snapshot_id,
cpu_percent,
cpu_temp,
load_percent,
memory_percent,
memory_used,
memory_total,
swap_percent,
swap_used,
swap_total,
is_online,
collected_at
FROM server_snapshots
WHERE target_id = ?
AND collected_at >= datetime('now', 'localtime', ?)
ORDER BY collected_at ASC
`).all(targetId, timeOffset)
return {
target_id: targetId,
period,
data: snapshots
}
})