import { NextResponse } from 'next/server' import { prisma } from '@/lib/prisma' const facilityTypes = { 0: "OBS", 1: "FSS", 2: "DEL", 3: "GND", 4: "TWR", 5: "APP", 6: "CTR", } as const; const CZQM_AIRPORTS = ["CYHZ", "CYFC", "CYQM", "CYSJ", "CYZX", "CYYG", "CYYT", "CYQX", "CYYR", "LFVP", "CYQI", "CYAY", "CYDF", "CYJT"]; export async function GET() { try { const response = await fetch('https://data.vatsim.net/v3/vatsim-data.json'); if (!response.ok) throw new Error('Failed to fetch VATSIM data'); const data = await response.json(); // Filter controllers in CZQM airspace const czqmControllers = data.controllers.filter((controller: any) => { const callsign = controller.callsign; return callsign.startsWith('CZQM_') || CZQM_AIRPORTS.some(airport => callsign.startsWith(airport)); }); // Process each controller for (const controller of czqmControllers) { const facilityType = facilityTypes[controller.facility as keyof typeof facilityTypes]; const airport = CZQM_AIRPORTS.find(ap => controller.callsign.startsWith(ap)) || 'CZQM'; await prisma.controllerSession.upsert({ where: { id: parseInt(controller.cid), }, create: { cid: String(controller.cid), name: controller.name, callsign: controller.callsign, facilityType: facilityType, frequency: controller.frequency, airport: airport, lastSeen: new Date(), logonTime: new Date(controller.logon_time), }, update: { lastSeen: new Date(), }, }); } // // Clean up old sessions // const fiveMinutesAgo = new Date(Date.now() - 5 * 60 * 1000); // await prisma.controllerSession.deleteMany({ // where: { // lastSeen: { // lt: fiveMinutesAgo, // }, // }, // }); return NextResponse.json({ success: true }); } catch (error) { console.error('Error in controller update:', error); return NextResponse.json({ error: 'Failed to update controller data' }, { status: 500 }); } }