diff --git a/backend/src/graphql/schema.ts b/backend/src/graphql/schema.ts index f14276c86..98af37159 100644 --- a/backend/src/graphql/schema.ts +++ b/backend/src/graphql/schema.ts @@ -1,9 +1,12 @@ import path from 'path' +import { validate } from 'class-validator' import { Decimal } from 'decimal.js-light' import { GraphQLSchema } from 'graphql' import { buildSchema } from 'type-graphql' +import { LogError } from '@/server/LogError' + import { isAuthorized } from './directive/isAuthorized' import { DecimalScalar } from './scalar/Decimal' @@ -12,5 +15,20 @@ export const schema = async (): Promise => { resolvers: [path.join(__dirname, 'resolver', `!(*.test).{js,ts}`)], authChecker: isAuthorized, scalarsMap: [{ type: Decimal, scalar: DecimalScalar }], + validate: (argValue) => { + if (argValue) { + validate(argValue) + .then((errors) => { + if (errors.length > 0) { + throw new LogError('validation failed. errors: ', errors) + } else { + return true + } + }) + .catch((e) => { + throw new LogError('validation throw an exception: ', e) + }) + } + }, }) }