import { NextFunction, Request, Response } from 'express'; import { AppDataSource } from '../data-source'; import { User } from "../entity/User"; import { Post } from "../entity/Post"; const userShouldExist = async (req: Request, res: Response, next: NextFunction): Promise => { const { username } = req.body; const { userId } = req.params; let user; if (username) { user = await AppDataSource.manager.findOneBy(User, { username }); } else if (Number.parseInt(userId)) { user = await AppDataSource.manager.findOneBy(User, { id: Number.parseInt(userId) }); } else { res.status(404).send("User does not exist."); return; } if (!user) { res.status(404).send("User does not exist."); return; } next(); } const userShouldNotExist = async (req: Request, res: Response, next: NextFunction): Promise => { const { username } = req.body; if (await AppDataSource.manager.findOneBy(User, { username })) { res.status(409).send("Such user already exists"); return; } next(); } const postShouldExist = async (req: Request, res: Response, next: NextFunction): Promise => { const postId = Number.parseInt(req.params.postId); if (!(await AppDataSource.manager.findOneBy(Post, {id: postId}))) { res.status(404).send("Post not found"); return; } next(); } export default { userShouldExist, userShouldNotExist, postShouldExist};