einhornimmond 5f1bd0faae fix lint
2024-06-24 12:38:33 +02:00

29 lines
931 B
TypeScript

import { registerDecorator, ValidationOptions, ValidationArguments } from 'class-validator'
import { Point } from '@/graphql/model/Point'
export function isValidPoint(validationOptions?: ValidationOptions) {
// eslint-disable-next-line @typescript-eslint/ban-types
return function (object: Object, propertyName: string) {
registerDecorator({
name: 'isValidPoint',
target: object.constructor,
propertyName,
options: validationOptions,
validator: {
validate(value: Point) {
if (value.type === 'Point') {
if (value.coordinates.length === 2) {
return value.coordinates.every((coord) => typeof coord === 'number')
}
}
return false
},
defaultMessage(args: ValidationArguments) {
return `${propertyName} must be a valid Point in geoJSON Format, ${args.property}`
},
},
})
}
}