diff --git a/src/resolvers.ts b/src/resolvers.ts index 80df9b2..4b8604e 100644 --- a/src/resolvers.ts +++ b/src/resolvers.ts @@ -112,6 +112,34 @@ export const resolvers: Resolvers = { return etaForNextStop; }, + etas: async (parent, args, contextValue, info) => { + const etasForShuttle = await contextValue.repository.getEtasForShuttleId(parent.id); + if (!etasForShuttle) return null; + + const computedEtas = await Promise.all(etasForShuttle.map(async ({ + secondsRemaining, + stopId, + }): Promise => { + const stop = await contextValue.repository.getStopById(stopId); + if (stop === null) return null; + + return { + secondsRemaining, + stop: { + coordinates: stop.coordinates, + id: stop.id, + name: stop.name, + }, + shuttle: parent, + } + })); + + if (computedEtas.every((eta) => eta !== null)) { + return computedEtas; + } + + return []; + } }, Stop: { orderedStops: async (parent, args, contextValue, info) => { @@ -140,11 +168,11 @@ export const resolvers: Resolvers = { }; })); - if (!computedOrderedStops.every((value) => value !== null)) { - return []; + if (computedOrderedStops.every((value) => value !== null)) { + return computedOrderedStops as OrderedStop[]; } - return computedOrderedStops as OrderedStop[]; + return []; } }, OrderedStop: { @@ -192,5 +220,5 @@ export const resolvers: Resolvers = { } } }, - } + }, }; \ No newline at end of file