import { Request, Response } from "express"; import Review from "../models/Review"; import { isValidObjectId, Types } from "mongoose"; import { Log } from "nork"; import Docs from "../services/docsService"; import { addExam, delExam, IReview } from "../validators/reviewValidator"; new Docs( "review", "add", "/api/v1/review/add", "POST", "review add api", undefined, addExam, "status object | review object", ); export async function add_post(req: Request, res: Response) { try { const data: IReview = req.body; data.user_id = res.locals.user._id const review = new Review(data); await review.save(); res.status(201).json(Log.info(201, "review was added", review)); } catch (err) { Log.error(500, "error while adding review", err); res.status(500).json(Log.error(500, "something went wrong")); } } new Docs( "review", "get", "/api/v1/review/get", "GET", "review get api", undefined, undefined, "status object | array of review objects", ); export async function get_get(req: Request, res: Response) { try { const review = await Review.find({}, "-__v"); res.status(200).json(Log.info(200, "reviews fetched", review)); } catch (err) { Log.error(500, "error while geting reviews", err); res.status(500).json(Log.error(500, "something went wrong")); } } new Docs("review", "del", "/api/v1/review/del", "POST", "review del api", undefined, delExam, "status object"); export async function del_post(req: Request, res: Response) { try { if (!isValidObjectId(req.body._id)) throw Log.error(400, "this is not valid _id"); const review = await Review.deleteOne(new Types.ObjectId(req.body._id)); if (review.deletedCount > 0) { res.status(200).json(Log.info(200, `review ${req.body._id} deleted`)); return; } throw Log.error(400, `review ${req.body._id} does not exist`); } catch (err: any) { if (err.code) { res.status(err.code).json(err); return; } Log.error(500, "error in del_post", err); res.status(500).json(Log.error(500, "something went wrong")); } }