wishlist-app/src/api/routes/wishlist/create.ts
Benny Samir Hierl 14cded061f #1 error handling improved
Signed-off-by: Benny Samir Hierl <bennysamir@posteo.de>
2022-02-06 11:23:47 +01:00

56 lines
1.3 KiB
TypeScript

import { Wishlist, WishlistItem } from '@/types'
import { FastifyRequest, FastifyReply, RouteOptions } from 'fastify'
import { wishlist } from '../../models'
import {
wishlistItemRequestSchema,
wishlistItemResponseSchema,
wishlistRequestSchema,
wishlistResponseSchema,
} from '../../config/schemas'
interface createItemRequest extends FastifyRequest {
params: {
wishlistId: string
}
}
export const createList = <RouteOptions>{
method: 'POST',
url: '/',
schema: {
body: wishlistRequestSchema,
response: {
201: wishlistResponseSchema,
},
},
handler: async (request: FastifyRequest, reply: FastifyReply) => {
request.log.debug(request.body)
const item = await wishlist.create(request.body as Wishlist)
reply.code(201).send(item)
},
}
export const createItem = <RouteOptions>{
method: 'POST',
url: '/:wishlistId/item',
schema: {
body: wishlistItemRequestSchema,
params: {
type: 'object',
properties: {
wishlistId: { type: 'string' },
},
},
response: {
201: wishlistItemResponseSchema,
},
},
handler: async (request: createItemRequest, reply: FastifyReply) => {
request.log.debug(request.body)
const item = await wishlist.createItem(
request.params.wishlistId,
request.body as WishlistItem
)
reply.code(201).send(item)
},
}