Initial commit
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
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,
|
||||
};
|
||||
Reference in New Issue
Block a user