| | import { z } from 'zod'; |
| |
|
| | import { BadRequestError } from '@/errors/response-errors/bad-request.error'; |
| | import type { ExecutionRequest } from '@/executions/execution.types'; |
| |
|
| | const executionUpdateSchema = z.object({ |
| | tags: z.array(z.string()).optional(), |
| | vote: z.enum(['up', 'down']).nullable().optional(), |
| | }); |
| |
|
| | export function validateExecutionUpdatePayload( |
| | payload: unknown, |
| | ): ExecutionRequest.ExecutionUpdatePayload { |
| | try { |
| | const validatedPayload = executionUpdateSchema.parse(payload); |
| |
|
| | |
| | const { tags, vote } = validatedPayload; |
| | if (!tags && vote === undefined) { |
| | throw new BadRequestError('No annotation provided'); |
| | } |
| |
|
| | return validatedPayload; |
| | } catch (e) { |
| | if (e instanceof z.ZodError) { |
| | throw new BadRequestError(e.message); |
| | } |
| |
|
| | throw e; |
| | } |
| | } |
| |
|