mirror of
https://github.com/brendan-ch/project-inter-server.git
synced 2026-04-19 08:50:29 +00:00
add custom DateTime scalar type
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
|
scalar DateTime
|
||||||
|
|
||||||
# The Interchange system schema.
|
# The Interchange system schema.
|
||||||
# Note how Passio ID and parking ID are abstracted away
|
# Note how Passio ID and parking ID are abstracted away
|
||||||
# from the endpoints.
|
# from the endpoints.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Coordinates, Eta, OrderedStop, Resolvers } from "./generated/graphql";
|
import { Resolvers } from "./generated/graphql";
|
||||||
import { ServerContext } from "./ServerContext";
|
import { ServerContext } from "./ServerContext";
|
||||||
import { QueryResolvers } from "./resolvers/QueryResolvers";
|
import { QueryResolvers } from "./resolvers/QueryResolvers";
|
||||||
import { SystemResolvers } from "./resolvers/SystemResolvers";
|
import { SystemResolvers } from "./resolvers/SystemResolvers";
|
||||||
@@ -9,6 +9,7 @@ import { ShuttleResolvers } from "./resolvers/ShuttleResolvers";
|
|||||||
import { RouteResolvers } from "./resolvers/RouteResolvers";
|
import { RouteResolvers } from "./resolvers/RouteResolvers";
|
||||||
import { MutationResolvers } from "./resolvers/MutationResolvers";
|
import { MutationResolvers } from "./resolvers/MutationResolvers";
|
||||||
import { ParkingSystemResolvers } from "./resolvers/ParkingSystemResolvers";
|
import { ParkingSystemResolvers } from "./resolvers/ParkingSystemResolvers";
|
||||||
|
import { DateTime } from "./scalars/DateTime";
|
||||||
|
|
||||||
export const MergedResolvers: Resolvers<ServerContext> = {
|
export const MergedResolvers: Resolvers<ServerContext> = {
|
||||||
...QueryResolvers,
|
...QueryResolvers,
|
||||||
@@ -20,4 +21,5 @@ export const MergedResolvers: Resolvers<ServerContext> = {
|
|||||||
...OrderedStopResolvers,
|
...OrderedStopResolvers,
|
||||||
...EtaResolvers,
|
...EtaResolvers,
|
||||||
...MutationResolvers,
|
...MutationResolvers,
|
||||||
|
DateTime: DateTime,
|
||||||
};
|
};
|
||||||
|
|||||||
28
src/scalars/DateTime.ts
Normal file
28
src/scalars/DateTime.ts
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
import { GraphQLScalarType } from "graphql/type";
|
||||||
|
import { Kind } from "graphql/language";
|
||||||
|
|
||||||
|
// See Apollo documentation: https://www.apollographql.com/docs/apollo-server/schema/custom-scalars#providing-custom-scalars-to-apollo-server
|
||||||
|
export const DateTime = new GraphQLScalarType({
|
||||||
|
name: 'DateTime',
|
||||||
|
description: 'DateTime custom scalar type',
|
||||||
|
serialize(value) {
|
||||||
|
if (value instanceof Date) {
|
||||||
|
return value.getTime();
|
||||||
|
} else if (value instanceof Number) {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
throw Error('GraphQL Date Scalar serializer expected a `Date` object or number');
|
||||||
|
},
|
||||||
|
parseValue(value) {
|
||||||
|
if (typeof value === 'number') {
|
||||||
|
return new Date(value);
|
||||||
|
}
|
||||||
|
throw new Error('GraphQL Date Scalar parser expected a `number`');
|
||||||
|
},
|
||||||
|
parseLiteral(ast) {
|
||||||
|
if (ast.kind === Kind.INT) {
|
||||||
|
return new Date(parseInt(ast.value, 10));
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
},
|
||||||
|
})
|
||||||
Reference in New Issue
Block a user