Support vague flight segments with airport/date-only details
All checks were successful
Build and Push Image / docker-build-and-push (push) Successful in 2m44s
All checks were successful
Build and Push Image / docker-build-and-push (push) Successful in 2m44s
This commit is contained in:
@@ -106,7 +106,7 @@ export interface FlightSegment {
|
||||
airline_iata: string | null;
|
||||
airline_icao: string | null;
|
||||
airline_name: string | null;
|
||||
flight_number: string;
|
||||
flight_number: string | null;
|
||||
position: number;
|
||||
created_at: string;
|
||||
}
|
||||
@@ -124,6 +124,7 @@ export interface FlightRoute {
|
||||
arrival_airport_code: string | null;
|
||||
arrival_terminal: string | null;
|
||||
arrival_gate: string | null;
|
||||
arrival_date: string | null;
|
||||
arrival_datetime: string | null;
|
||||
arrival_timezone: string | null;
|
||||
created_at: string;
|
||||
@@ -144,7 +145,7 @@ export interface CreateFlightInput {
|
||||
airlineIata?: string;
|
||||
airlineIcao?: string;
|
||||
airlineName?: string;
|
||||
flightNumber: string;
|
||||
flightNumber?: string;
|
||||
route?: {
|
||||
departureAirportId?: number;
|
||||
departureAirportCode?: string;
|
||||
@@ -156,6 +157,7 @@ export interface CreateFlightInput {
|
||||
arrivalAirportCode?: string;
|
||||
arrivalTerminal?: string;
|
||||
arrivalGate?: string;
|
||||
arrivalDate?: string;
|
||||
arrivalDatetime?: string;
|
||||
arrivalTimezone?: string;
|
||||
};
|
||||
@@ -230,7 +232,15 @@ export function createFlight(input: CreateFlightInput): FlightBooking {
|
||||
// Generate a title from the first segment
|
||||
const firstSegment = input.segments[0];
|
||||
const title = firstSegment
|
||||
? `${firstSegment.airlineName || firstSegment.airlineIata || 'Flight'} ${firstSegment.flightNumber}`
|
||||
? (() => {
|
||||
const airline = firstSegment.airlineName || firstSegment.airlineIata || 'Flight';
|
||||
const flightNumber = firstSegment.flightNumber?.trim();
|
||||
const dep = firstSegment.route?.departureAirportCode?.trim();
|
||||
const arr = firstSegment.route?.arrivalAirportCode?.trim();
|
||||
if (flightNumber) return `${airline} ${flightNumber}`;
|
||||
if (dep || arr) return `Flight: ${dep || 'TBD'} -> ${arr || 'TBD'}`;
|
||||
return 'Flight';
|
||||
})()
|
||||
: 'Flight';
|
||||
|
||||
db.run(
|
||||
@@ -282,7 +292,7 @@ export function createFlight(input: CreateFlightInput): FlightBooking {
|
||||
airlineIata ?? null,
|
||||
airlineIcao ?? null,
|
||||
airlineName ?? null,
|
||||
segment.flightNumber,
|
||||
segment.flightNumber?.trim() || '',
|
||||
segmentPosition++
|
||||
]
|
||||
);
|
||||
@@ -296,8 +306,8 @@ export function createFlight(input: CreateFlightInput): FlightBooking {
|
||||
departure_airport_id, departure_airport_code, departure_terminal, departure_gate,
|
||||
departure_datetime, departure_timezone,
|
||||
arrival_airport_id, arrival_airport_code, arrival_terminal, arrival_gate,
|
||||
arrival_datetime, arrival_timezone
|
||||
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
|
||||
arrival_date, arrival_datetime, arrival_timezone
|
||||
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
|
||||
[
|
||||
routeId,
|
||||
segmentId,
|
||||
@@ -313,6 +323,7 @@ export function createFlight(input: CreateFlightInput): FlightBooking {
|
||||
segment.route.arrivalAirportCode ?? null,
|
||||
segment.route.arrivalTerminal ?? null,
|
||||
segment.route.arrivalGate ?? null,
|
||||
segment.route.arrivalDate ?? null,
|
||||
segment.route.arrivalDatetime ?? null,
|
||||
segment.route.arrivalTimezone ?? airportTimezone(segment.route.arrivalAirportId) ?? null
|
||||
]
|
||||
@@ -481,7 +492,7 @@ export interface UpdateFlightInput {
|
||||
airlineIata?: string;
|
||||
airlineIcao?: string;
|
||||
airlineName?: string;
|
||||
flightNumber: string;
|
||||
flightNumber?: string;
|
||||
route?: {
|
||||
departureAirportId?: number;
|
||||
departureAirportCode?: string;
|
||||
@@ -493,6 +504,7 @@ export interface UpdateFlightInput {
|
||||
arrivalAirportCode?: string;
|
||||
arrivalTerminal?: string;
|
||||
arrivalGate?: string;
|
||||
arrivalDate?: string;
|
||||
arrivalDatetime?: string;
|
||||
arrivalTimezone?: string;
|
||||
};
|
||||
@@ -513,7 +525,15 @@ export function updateFlight(input: UpdateFlightInput): void {
|
||||
// Derive new title from first segment
|
||||
const firstSegment = input.segments[0];
|
||||
const title = firstSegment
|
||||
? `${firstSegment.airlineName || firstSegment.airlineIata || 'Flight'} ${firstSegment.flightNumber}`
|
||||
? (() => {
|
||||
const airline = firstSegment.airlineName || firstSegment.airlineIata || 'Flight';
|
||||
const flightNumber = firstSegment.flightNumber?.trim();
|
||||
const dep = firstSegment.route?.departureAirportCode?.trim();
|
||||
const arr = firstSegment.route?.arrivalAirportCode?.trim();
|
||||
if (flightNumber) return `${airline} ${flightNumber}`;
|
||||
if (dep || arr) return `Flight: ${dep || 'TBD'} -> ${arr || 'TBD'}`;
|
||||
return 'Flight';
|
||||
})()
|
||||
: 'Flight';
|
||||
|
||||
// Update the plan row (status + title)
|
||||
@@ -558,7 +578,7 @@ export function updateFlight(input: UpdateFlightInput): void {
|
||||
segment.airlineIata ?? null,
|
||||
segment.airlineIcao ?? null,
|
||||
segment.airlineName ?? null,
|
||||
segment.flightNumber,
|
||||
segment.flightNumber?.trim() || '',
|
||||
segmentPosition++
|
||||
]
|
||||
);
|
||||
@@ -571,8 +591,8 @@ export function updateFlight(input: UpdateFlightInput): void {
|
||||
departure_airport_id, departure_airport_code, departure_terminal, departure_gate,
|
||||
departure_datetime, departure_timezone,
|
||||
arrival_airport_id, arrival_airport_code, arrival_terminal, arrival_gate,
|
||||
arrival_datetime, arrival_timezone
|
||||
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
|
||||
arrival_date, arrival_datetime, arrival_timezone
|
||||
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
|
||||
[
|
||||
routeId,
|
||||
segmentId,
|
||||
@@ -588,6 +608,7 @@ export function updateFlight(input: UpdateFlightInput): void {
|
||||
segment.route.arrivalAirportCode ?? null,
|
||||
segment.route.arrivalTerminal ?? null,
|
||||
segment.route.arrivalGate ?? null,
|
||||
segment.route.arrivalDate ?? null,
|
||||
segment.route.arrivalDatetime ?? null,
|
||||
segment.route.arrivalTimezone ?? airportTimezone(segment.route.arrivalAirportId) ?? null
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user