53 lines
1.9 KiB
TypeScript
53 lines
1.9 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;
|
|
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'));
|
|
}
|
|
}
|