72 lines
2.0 KiB
TypeScript
72 lines
2.0 KiB
TypeScript
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"));
|
|
}
|
|
}
|