diff --git a/schema.graphqls b/schema.graphqls index c5a6726..f874943 100644 --- a/schema.graphqls +++ b/schema.graphqls @@ -57,6 +57,7 @@ type Shuttle { routeId: ID! etas: [ETA!] eta(forStopId: ID): ETA + orientationInDegrees: Float! } # Queries diff --git a/src/entities/entities.ts b/src/entities/entities.ts index 3579c5d..2766595 100644 --- a/src/entities/entities.ts +++ b/src/entities/entities.ts @@ -33,6 +33,7 @@ export interface IShuttle extends IEntityWithId, IEntityWithOptionalTimestamp { name: string; routeId: string; systemId: string; + orientationInDegrees: number; } export interface IEta extends IEntityWithOptionalTimestamp { diff --git a/src/loaders/ApiBasedRepositoryLoader.ts b/src/loaders/ApiBasedRepositoryLoader.ts index 5bfe37d..50003db 100644 --- a/src/loaders/ApiBasedRepositoryLoader.ts +++ b/src/loaders/ApiBasedRepositoryLoader.ts @@ -225,7 +225,8 @@ export class ApiBasedRepositoryLoader implements RepositoryLoader { }, routeId: jsonBus.routeId, systemId: systemId, - id: `${jsonBus.busId}` + id: `${jsonBus.busId}`, + orientationInDegrees: parseFloat(jsonBus.calculatedCourse) } await this.repository.addOrUpdateShuttle(constructedShuttle); diff --git a/src/loaders/loadTestData.ts b/src/loaders/loadTestData.ts index 833a660..543a06c 100644 --- a/src/loaders/loadTestData.ts +++ b/src/loaders/loadTestData.ts @@ -4416,6 +4416,7 @@ const shuttles: IShuttle[] = [ }, routeId: routes[0].id, systemId: systems[0].id, + orientationInDegrees: 45.91, }, { name: "24", @@ -4426,6 +4427,7 @@ const shuttles: IShuttle[] = [ }, routeId: routes[0].id, systemId: systems[0].id, + orientationInDegrees: 90.24, } ]; diff --git a/src/resolvers/RouteResolvers.ts b/src/resolvers/RouteResolvers.ts index 0c71cfd..d5a5810 100644 --- a/src/resolvers/RouteResolvers.ts +++ b/src/resolvers/RouteResolvers.ts @@ -10,12 +10,14 @@ export const RouteResolvers: Resolvers = { coordinates, name, id, + orientationInDegrees }) => ({ coordinates: coordinates as Coordinates, name, route: parent, routeId: parent.id, id, + orientationInDegrees })); }, orderedStop: async (parent, args, contextValue, info) => { @@ -33,4 +35,4 @@ export const RouteResolvers: Resolvers = { } }, }, -} \ No newline at end of file +} diff --git a/test/testHelpers/mockDataGenerators.ts b/test/testHelpers/mockDataGenerators.ts index e284c93..07d14bf 100644 --- a/test/testHelpers/mockDataGenerators.ts +++ b/test/testHelpers/mockDataGenerators.ts @@ -13,9 +13,39 @@ export function generateMockSystems(): ISystem[] { export function generateMockShuttles(): IShuttle[] { return [ - { id: "sh1", name: "Shuttle A", routeId: "r1", systemId: "sys1", coordinates: { latitude: 10, longitude: 20 } }, - { id: "sh2", name: "Shuttle B", routeId: "r2", systemId: "sys2", coordinates: { latitude: 15, longitude: 25 } }, - { id: "sh3", name: "Shuttle C", routeId: "r3", systemId: "sys3", coordinates: { latitude: 30, longitude: 40 } }, + { + id: "sh1", + name: "Shuttle A", + routeId: "r1", + systemId: "sys1", + coordinates: { + latitude: 10, + longitude: 20 + }, + orientationInDegrees: 25.163 + }, + { + id: "sh2", + name: "Shuttle B", + routeId: "r2", + systemId: "sys2", + coordinates: { + latitude: 15, + longitude: 25 + }, + orientationInDegrees: 50.912 + }, + { + id: "sh3", + name: "Shuttle C", + routeId: "r3", + systemId: "sys3", + coordinates: { + latitude: 30, + longitude: 40 + }, + orientationInDegrees: 321.019 + }, ]; } @@ -50,4 +80,4 @@ export function generateMockEtas(): IEta[] { { shuttleId: "sh1", stopId: "st2", secondsRemaining: 180 }, { shuttleId: "sh2", stopId: "st3", secondsRemaining: 240 }, ]; -} \ No newline at end of file +}