import { query } from '../../../utils/db'

export default defineEventHandler(async (event) => {
  const queryParams = getQuery(event)
  const targetId = queryParams.target_id as string
  const period = (queryParams.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 interval = periodMap[period] || '1 hour'
  
  let disks: any[] = []
  try {
    disks = await query(`
      SELECT 
        disk_id,
        device_name,
        mount_point,
        fs_type,
        disk_total,
        disk_used,
        disk_percent,
        collected_at
      FROM server_disks
      WHERE target_id = $1
        AND collected_at::timestamp >= NOW() - INTERVAL '${interval}'
      ORDER BY collected_at ASC, mount_point ASC
    `, [targetId])
  } catch (e) {
    disks = []
  }
  
  return {
    target_id: targetId,
    period,
    data: disks
  }
})
