40 lines
1.2 KiB
JavaScript
40 lines
1.2 KiB
JavaScript
|
const joi = require('@hapi/joi');
|
||
|
|
||
|
const movieIdSchema = joi.string().regex(/^[0-9a-fA-F]{24}$/);
|
||
|
const movieTitleSchema = joi.string().max(80);
|
||
|
const movieYearSchema = joi.number().min(1888).max(2077);
|
||
|
const movieCoverSchema = joi.string().uri();
|
||
|
const movieDescriptionSchema = joi.string().max(300);
|
||
|
const movieDurationSchema = joi.number().min(1).max(300);
|
||
|
const movieContentRatingSchema = joi.string().max(5);
|
||
|
const movieSourcesSchema = joi.string().uri();
|
||
|
const movieTagsSchema = joi.array().items(joi.string().max(50));
|
||
|
|
||
|
const createMovieSchema = {
|
||
|
title: movieTitleSchema.required(),
|
||
|
year: movieYearSchema.required(),
|
||
|
cover: movieCoverSchema.required(),
|
||
|
description: movieDescriptionSchema.required(),
|
||
|
duration: movieDurationSchema.required(),
|
||
|
contentRating: movieContentRatingSchema.required(),
|
||
|
source: movieSourcesSchema.required(),
|
||
|
tags: movieTagsSchema,
|
||
|
};
|
||
|
|
||
|
const updateMovieSchema = {
|
||
|
title: movieTitleSchema,
|
||
|
year: movieYearSchema,
|
||
|
cover: movieCoverSchema,
|
||
|
description: movieDescriptionSchema,
|
||
|
duration: movieDurationSchema,
|
||
|
contentRating: movieContentRatingSchema,
|
||
|
source: movieSourcesSchema,
|
||
|
tags: movieTagsSchema,
|
||
|
};
|
||
|
|
||
|
module.exports = {
|
||
|
movieIdSchema,
|
||
|
createMovieSchema,
|
||
|
updateMovieSchema,
|
||
|
}
|