1- import { generateSID , generateSquawk , getWakeTurbulence , generateRandomId } from '../utils/flightUtils.js' ;
1+ import {
2+ generateSID ,
3+ generateSquawk ,
4+ getWakeTurbulence ,
5+ generateRandomId ,
6+ } from '../utils/flightUtils.js' ;
27import { getSessionById } from './sessions.js' ;
38import flightsPool from './connections/flightsConnection.js' ;
9+ import crypto from 'crypto' ;
410
511function sanitizeFlightForClient ( flight ) {
612 const { user_id, ip_address, ...sanitizedFlight } = flight ;
@@ -17,35 +23,45 @@ export async function getFlightsBySession(sessionId) {
1723 `SELECT * FROM ${ tableName } ORDER BY created_at ASC`
1824 ) ;
1925
20- const flights = result . rows . map ( flight => sanitizeFlightForClient ( flight ) ) ;
26+ const flights = result . rows . map ( ( flight ) =>
27+ sanitizeFlightForClient ( flight )
28+ ) ;
2129 return flights ;
2230}
2331
2432export async function getFlightsBySessionWithTime ( sessionId , hoursBack = 2 ) {
2533 try {
2634 const tableName = `flights_${ sessionId } ` ;
2735
28- const tableExists = await flightsPool . query ( `
36+ const tableExists = await flightsPool . query (
37+ `
2938 SELECT EXISTS (
3039 SELECT FROM information_schema.tables
3140 WHERE table_name = $1
3241 )
33- ` , [ tableName ] ) ;
42+ ` ,
43+ [ tableName ]
44+ ) ;
3445
3546 if ( ! tableExists . rows [ 0 ] . exists ) {
3647 return [ ] ;
3748 }
3849
3950 const result = await flightsPool . query (
4051 `SELECT * FROM ${ tableName }
41- WHERE created_at >= NOW() - INTERVAL '${ hoursBack } hours'
42- ORDER BY created_at ASC`
52+ WHERE created_at >= NOW() - INTERVAL '${ hoursBack } hours'
53+ ORDER BY created_at ASC`
4354 ) ;
4455
45- const flights = result . rows . map ( flight => sanitizeFlightForClient ( flight ) ) ;
56+ const flights = result . rows . map ( ( flight ) =>
57+ sanitizeFlightForClient ( flight )
58+ ) ;
4659 return flights ;
4760 } catch ( error ) {
48- console . error ( `Error fetching flights for session ${ sessionId } :` , error ) ;
61+ console . error (
62+ `Error fetching flights for session ${ sessionId } :` ,
63+ error
64+ ) ;
4965 return [ ] ;
5066 }
5167}
@@ -68,21 +84,27 @@ function validateFlightFields(updates) {
6884 if ( updates . cruisingFL !== undefined ) {
6985 const fl = parseInt ( updates . cruisingFL , 10 ) ;
7086 if ( isNaN ( fl ) || fl < 0 || fl > 200 || fl % 5 !== 0 ) {
71- throw new Error ( 'Cruising FL must be between 0 and 200 in 50-step increments' ) ;
87+ throw new Error (
88+ 'Cruising FL must be between 0 and 200 in 50-step increments'
89+ ) ;
7290 }
7391 }
7492 if ( updates . clearedFL !== undefined ) {
7593 const fl = parseInt ( updates . clearedFL , 10 ) ;
7694 if ( isNaN ( fl ) || fl < 0 || fl > 200 || fl % 5 !== 0 ) {
77- throw new Error ( 'Cleared FL must be between 0 and 200 in 50-step increments' ) ;
95+ throw new Error (
96+ 'Cleared FL must be between 0 and 200 in 50-step increments'
97+ ) ;
7898 }
7999 }
80100}
81101
82102export async function addFlight ( sessionId , flightData ) {
83103 const tableName = `flights_${ sessionId } ` ;
84104 try {
85- await flightsPool . query ( `ALTER TABLE ${ tableName } ADD COLUMN IF NOT EXISTS gate VARCHAR(8);` ) ;
105+ await flightsPool . query (
106+ `ALTER TABLE ${ tableName } ADD COLUMN IF NOT EXISTS gate VARCHAR(8);`
107+ ) ;
86108 } catch ( error ) {
87109 // Column might already exist, continue
88110 }
@@ -98,6 +120,7 @@ export async function addFlight(sessionId, flightData) {
98120 if ( ! flightData . timestamp ) {
99121 flightData . timestamp = new Date ( ) . toISOString ( ) ;
100122 }
123+ flightData . acars_token = crypto . randomBytes ( 4 ) . toString ( 'hex' ) ;
101124
102125 if ( flightData . aircraft_type ) {
103126 flightData . aircraft = flightData . aircraft_type ;
@@ -113,7 +136,10 @@ export async function addFlight(sessionId, flightData) {
113136 flightData . runway = session . active_runway ;
114137 }
115138 } catch ( error ) {
116- console . error ( 'Error fetching session for runway assignment:' , error ) ;
139+ console . error (
140+ 'Error fetching session for runway assignment:' ,
141+ error
142+ ) ;
117143 }
118144 }
119145
@@ -154,13 +180,21 @@ export async function updateFlight(sessionId, flightId, updates) {
154180 const tableName = `flights_${ sessionId } ` ;
155181
156182 // add this block to create missing text columns safely
157- const safeCols = Object . keys ( updates ) . filter ( k => / ^ [ a - z A - Z 0 - 9 _ ] + $ / . test ( k ) ) ;
183+ const safeCols = Object . keys ( updates ) . filter ( ( k ) =>
184+ / ^ [ a - z A - Z 0 - 9 _ ] + $ / . test ( k )
185+ ) ;
158186 for ( const col of safeCols ) {
159187 try {
160- await flightsPool . query ( `ALTER TABLE ${ tableName } ADD COLUMN IF NOT EXISTS "${ col } " text;` ) ;
188+ await flightsPool . query (
189+ `ALTER TABLE ${ tableName } ADD COLUMN IF NOT EXISTS "${ col } " text;`
190+ ) ;
161191 } catch ( err ) {
162192 // ignore - column creation failure shouldn't stop update
163- console . error ( 'Could not ensure column exists:' , col , err ?. message || err ) ;
193+ console . error (
194+ 'Could not ensure column exists:' ,
195+ col ,
196+ err ?. message || err
197+ ) ;
164198 }
165199 }
166200
@@ -204,5 +238,7 @@ export async function updateFlight(sessionId, flightId, updates) {
204238
205239export async function deleteFlight ( sessionId , flightId ) {
206240 const tableName = `flights_${ sessionId } ` ;
207- await flightsPool . query ( `DELETE FROM ${ tableName } WHERE id = $1` , [ flightId ] ) ;
208- }
241+ await flightsPool . query ( `DELETE FROM ${ tableName } WHERE id = $1` , [
242+ flightId ,
243+ ] ) ;
244+ }
0 commit comments