const Joi = require('joi'); const config = require('../../../config'); const participantSchema = Joi.object({ user: Joi.number().integer().positive().required(), role: Joi.string() .valid(...Object.values(config.PARTICIPANT_ROLES)) .required(), }); const createBetSchema = Joi.object({ title: Joi.string().trim().min(1).max(200).required().messages({ 'string.empty': 'Bet title is required', 'string.max': 'Bet title must not exceed 200 characters', }), description: Joi.string().trim().max(1000).optional().allow(''), stake: Joi.string().trim().min(1).required().messages({ 'string.empty': 'Bet stake is required', }), participants: Joi.array().items(participantSchema).min(1).required().messages({ 'array.min': 'At least one participant is required', }), isPublic: Joi.boolean().optional().default(false), groupId: Joi.string().optional().allow(null), }); const updateBetSchema = Joi.object({ title: Joi.string().trim().min(1).max(200).optional(), description: Joi.string().trim().max(1000).optional().allow(''), stake: Joi.string().trim().min(1).optional(), status: Joi.string() .valid(...Object.values(config.BET_STATUS)) .optional(), endDate: Joi.date().optional(), winner: Joi.number().integer().positive().optional().allow(null), }); const declareWinnerSchema = Joi.object({ winnerId: Joi.number().integer().positive().required().messages({ 'number.base': 'Winner ID must be a number', 'any.required': 'Winner ID is required', }), }); module.exports = { createBetSchema, updateBetSchema, declareWinnerSchema, };