diff --git a/src/pages/api/beers/[id]/index.ts b/src/pages/api/beers/[id]/index.ts index ef886c8..8d89326 100644 --- a/src/pages/api/beers/[id]/index.ts +++ b/src/pages/api/beers/[id]/index.ts @@ -8,9 +8,9 @@ import { NextApiResponse } from 'next'; import { createRouter, NextHandler } from 'next-connect'; import { z } from 'zod'; import ServerError from '@/config/util/ServerError'; -import DBClient from '@/prisma/DBClient'; import validateRequest from '@/config/nextConnect/middleware/validateRequest'; import NextConnectOptions from '@/config/nextConnect/NextConnectOptions'; +import deleteBeerPostById from '@/services/BeerPost/deleteBeerPostById'; interface BeerPostRequest extends UserExtendedNextApiRequest { query: { id: string }; @@ -60,13 +60,9 @@ const editBeerPost = async ( }; const deleteBeerPost = async (req: BeerPostRequest, res: NextApiResponse) => { - const { - query: { id }, - } = req; + const { id } = req.query; - const deleted = await DBClient.instance.beerPost.delete({ - where: { id }, - }); + const deleted = deleteBeerPostById(id); if (!deleted) { throw new ServerError('Beer post not found', 404); diff --git a/src/services/BeerPost/deleteBeerPostById.ts b/src/services/BeerPost/deleteBeerPostById.ts new file mode 100644 index 0000000..4eb6c5a --- /dev/null +++ b/src/services/BeerPost/deleteBeerPostById.ts @@ -0,0 +1,28 @@ +import DBClient from '@/prisma/DBClient'; +import { z } from 'zod'; +import BeerPostQueryResult from './schema/BeerPostQueryResult'; + +const deleteBeerPostById = async ( + id: string, +): Promise | null> => { + const deleted = await DBClient.instance.beerPost.delete({ + where: { id }, + select: { + id: true, + name: true, + brewery: { select: { id: true, name: true } }, + description: true, + beerImages: { select: { id: true, path: true, caption: true, alt: true } }, + ibu: true, + abv: true, + style: { select: { id: true, name: true, description: true } }, + postedBy: { select: { id: true, username: true } }, + createdAt: true, + updatedAt: true, + }, + }); + + return deleted; +}; + +export default deleteBeerPostById; diff --git a/src/services/BeerStyles/deleteBeerStyleById.ts b/src/services/BeerStyles/deleteBeerStyleById.ts new file mode 100644 index 0000000..a8a7551 --- /dev/null +++ b/src/services/BeerStyles/deleteBeerStyleById.ts @@ -0,0 +1,24 @@ +import { z } from 'zod'; +import DBClient from '@/prisma/DBClient'; +import BeerStyleQueryResult from './schema/BeerStyleQueryResult'; + +const deleteBeerStyleById = async (id: string) => { + const deleted = await DBClient.instance.beerStyle.delete({ + where: { id }, + select: { + id: true, + name: true, + createdAt: true, + updatedAt: true, + abvRange: true, + ibuRange: true, + description: true, + postedBy: { select: { id: true, username: true } }, + glassware: { select: { id: true, name: true } }, + }, + }); + + return deleted as z.infer | null; +}; + +export default deleteBeerStyleById; diff --git a/src/services/BeerStyles/getAllBeerStyles.ts b/src/services/BeerStyles/getAllBeerStyles.ts index 20d04f5..2f51c04 100644 --- a/src/services/BeerStyles/getAllBeerStyles.ts +++ b/src/services/BeerStyles/getAllBeerStyles.ts @@ -6,7 +6,7 @@ const getAllBeerStyles = async ( pageNum: number, pageSize: number, ): Promise[]> => { - const styles = (await DBClient.instance.beerStyle.findMany({ + const styles = await DBClient.instance.beerStyle.findMany({ take: pageSize, skip: (pageNum - 1) * pageSize, select: { @@ -20,9 +20,9 @@ const getAllBeerStyles = async ( description: true, glassware: { select: { id: true, name: true } }, }, - })) as z.infer[]; + }); - return styles; + return styles as z.infer[]; }; export default getAllBeerStyles;