37 lines
830 B
JavaScript
Raw Normal View History

'use strict';
const { GraphQLScalarType } = require('graphql');
const { Kind } = require('graphql');
const { parseType } = require('@strapi/utils');
2021-10-27 18:54:58 +02:00
const { ValidationError } = require('@strapi/utils').errors;
/**
* A GraphQL scalar used to store Time (HH:mm:ss.SSS) values
* @type {GraphQLScalarType}
*/
const TimeScalar = new GraphQLScalarType({
name: 'Time',
description: 'A time string with format HH:mm:ss.SSS',
serialize(value) {
return parseType({ type: 'time', value });
},
parseValue(value) {
return parseType({ type: 'time', value });
},
parseLiteral(ast) {
if (ast.kind !== Kind.STRING) {
2021-10-27 18:54:58 +02:00
throw new ValidationError('Time cannot represent non string type');
}
2022-08-08 15:50:34 +02:00
const { value } = ast;
return parseType({ type: 'time', value });
},
});
module.exports = TimeScalar;