import { Request, Response, NextFunction } from 'express'
import { validate } from 'super-easy-validator'
import helpers from '../../utils/helpers'

async function getReaction(req: Request, res: Response, next: NextFunction) {
	await helpers.runApi(res, () => {
		const rules = {
			messageId: 'mongoid'
		}
		const { errors } = validate(rules, req.params)
		if (errors) {
			return res.status(400).json({ message: errors[0] })
		}
		return next()
	})
}

async function putReaction(req: Request, res: Response, next: NextFunction) {
	await helpers.runApi(res, () => {
		const rules = {
			messageId: 'mongoid',
			reaction: 'optional|string|min:1|max:10'
		}
		const { errors } = validate(rules, { ...req.params, ...req.body })
		if (errors) {
			return res.status(400).json({ message: errors[0] })
		}
		return next()
	})
}

async function deleteReaction(req: Request, res: Response, next: NextFunction) {
	await helpers.runApi(res, () => {
		const rules = {
			messageId: 'mongoid'
		}
		const { errors } = validate(rules, req.params)
		if (errors) {
			return res.status(400).json({ message: errors[0] })
		}
		return next()
	})
}

const validations = {
	getReaction,
	putReaction,
	deleteReaction
}

export default validations
