deguapp/api/src/controllers/reviewController.ts
2024-05-12 22:19:04 +02:00

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'));
}
}