UNPKG

@chubbyts/chubbyts-api

Version:

[![CI](https://github.com/chubbyts/chubbyts-api/workflows/CI/badge.svg?branch=master)](https://github.com/chubbyts/chubbyts-api/actions?query=workflow%3ACI) [![Coverage Status](https://coveralls.io/repos/github/chubbyts/chubbyts-api/badge.svg?branch=maste

16 lines (15 loc) 1.06 kB
import { v4 as uuid } from 'uuid'; import { createBadRequest } from '@chubbyts/chubbyts-http-error/dist/http-error'; import { parseRequestBody } from '../request.js'; import { stringifyResponseBody, valueToData } from '../response.js'; import { zodToInvalidParameters } from '../zod-to-invalid-parameters.js'; export const createCreateHandler = (decoder, modelRequestSchema, persistModel, responseFactory, modelResponseSchema, encoder, enrichModel = async (model) => model) => { return async (request) => { const modelRequestResult = modelRequestSchema.safeParse(await parseRequestBody(decoder, request)); if (!modelRequestResult.success) { throw createBadRequest({ invalidParameters: zodToInvalidParameters(modelRequestResult.error) }); } const model = await persistModel({ id: uuid(), createdAt: new Date(), ...modelRequestResult.data }); return stringifyResponseBody(request, responseFactory(201), encoder, modelResponseSchema.parse(valueToData(await enrichModel(model, { request })))); }; };