Did more work to beer post page, seed

Worked on comments and beer recs features. Fine tuning database seed amounts.
This commit is contained in:
Aaron William Po
2023-01-29 21:53:05 -05:00
parent fe277d5964
commit 0b96c8f1f5
38 changed files with 833 additions and 221 deletions

View File

@@ -0,0 +1,74 @@
import DBClient from '@/prisma/DBClient';
import { NextApiHandler } from 'next';
import { z } from 'zod';
import APIResponseValidationSchema from '@/validation/APIResponseValidationSchema';
import ServerError from '@/config/util/ServerError';
import BeerCommentValidationSchema from '@/validation/CreateBeerCommentValidationSchema';
const handler: NextApiHandler<z.infer<typeof APIResponseValidationSchema>> = async (
req,
res,
) => {
try {
const { method } = req;
if (method !== 'POST') {
throw new ServerError('Method not allowed', 405);
}
const cleanedReqBody = BeerCommentValidationSchema.safeParse(req.body);
if (!cleanedReqBody.success) {
throw new ServerError('Invalid request body', 400);
}
const user = await DBClient.instance.user.findFirstOrThrow();
const { content, rating, beerPostId } = cleanedReqBody.data;
const newBeerComment = await DBClient.instance.beerComment.create({
data: {
content,
rating,
beerPost: { connect: { id: beerPostId } },
postedBy: { connect: { id: user.id } },
},
select: {
id: true,
content: true,
rating: true,
postedBy: {
select: {
id: true,
username: true,
},
},
createdAt: true,
},
});
res.status(201).json({
message: 'Beer comment created successfully',
statusCode: 201,
payload: newBeerComment.id,
success: true,
});
} catch (error) {
if (error instanceof ServerError) {
res.status(error.statusCode).json({
message: error.message,
statusCode: error.statusCode,
payload: null,
success: false,
});
} else {
res.status(500).json({
message: 'Internal server error',
statusCode: 500,
payload: null,
success: false,
});
}
}
};
export default handler;

View File

@@ -1,16 +1,10 @@
import BeerPostValidationSchema from '@/validation/BeerPostValidationSchema';
import BeerPostValidationSchema from '@/validation/CreateBeerPostValidationSchema';
import DBClient from '@/prisma/DBClient';
import { NextApiHandler } from 'next';
import { z } from 'zod';
import APIResponseValidationSchema from '@/validation/APIResponseValidationSchema';
class ServerError extends Error {
constructor(message: string, public statusCode: number) {
super(message);
this.name = 'ServerError';
}
}
import ServerError from '@/config/util/ServerError';
const handler: NextApiHandler<z.infer<typeof APIResponseValidationSchema>> = async (
req,