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 containers: any[] = []
  try {
    containers = await query(`
      SELECT 
        container_id,
        container_name,
        container_status,
        cpu_percent,
        memory_usage,
        memory_limit,
        memory_percent,
        uptime,
        network_rx,
        network_tx,
        collected_at
      FROM server_containers
      WHERE target_id = $1
        AND collected_at::timestamp >= NOW() - INTERVAL '${interval}'
      ORDER BY collected_at ASC, container_name ASC
    `, [targetId])
  } catch (e) {
    containers = []
  }
  
  return {
    target_id: targetId,
    period,
    data: containers
  }
})
