next/server/api/review/[id]/index.delete.ts

37 lines
874 B
TypeScript
Raw Normal View History

import { messages } from "@server/constants";
import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn";
import { Story } from "@models/stories";
import { Review } from "@models/stories/review";
export default eventHandler(async (ev) => {
isLoggedIn(ev);
const revid = parseInt(getRouterParam(ev, "revid")!);
let c2d = await Review.findById(revid);
if (!c2d) {
throw createError({
statusCode: 404,
message: messages[404],
});
}
let s2v = await Story.findById(c2d!.leftOn);
if (!s2v)
throw createError({
statusCode: 400,
message: "bad parameter",
});
if (
ev.context.currentUser!._id != s2v?.author &&
ev.context.currentUser!._id != c2d._id
)
throw createError({
statusCode: 403,
message: messages[403],
});
s2v.reviews += 1;
await s2v!.save();
await Review.findByIdAndRemove(revid);
return {
success: true,
};
});