feat: introduce Joi validation schemas and integrate them across various controllers for categories, lessons, courses, chapters, announcements, and admin course approvals.
This commit is contained in:
parent
c5aa195b13
commit
b56f604890
14 changed files with 553 additions and 28 deletions
|
|
@ -27,6 +27,18 @@ import {
|
|||
UpdateQuizResponse,
|
||||
UpdateQuizBody,
|
||||
} from '../types/ChaptersLesson.typs';
|
||||
import {
|
||||
CreateChapterValidator,
|
||||
UpdateChapterValidator,
|
||||
ReorderChapterValidator,
|
||||
CreateLessonValidator,
|
||||
UpdateLessonValidator,
|
||||
ReorderLessonsValidator,
|
||||
AddQuestionValidator,
|
||||
UpdateQuestionValidator,
|
||||
ReorderQuestionValidator,
|
||||
UpdateQuizValidator
|
||||
} from '../validators/ChaptersLesson.validator';
|
||||
|
||||
const chaptersLessonService = new ChaptersLessonService();
|
||||
|
||||
|
|
@ -55,6 +67,10 @@ export class ChaptersLessonInstructorController {
|
|||
): Promise<CreateChapterResponse> {
|
||||
const token = request.headers.authorization?.replace('Bearer ', '');
|
||||
if (!token) throw new ValidationError('No token provided');
|
||||
|
||||
const { error } = CreateChapterValidator.validate(body);
|
||||
if (error) throw new ValidationError(error.details[0].message);
|
||||
|
||||
return await chaptersLessonService.createChapter({
|
||||
token,
|
||||
course_id: courseId,
|
||||
|
|
@ -82,6 +98,10 @@ export class ChaptersLessonInstructorController {
|
|||
): Promise<UpdateChapterResponse> {
|
||||
const token = request.headers.authorization?.replace('Bearer ', '');
|
||||
if (!token) throw new ValidationError('No token provided');
|
||||
|
||||
const { error } = UpdateChapterValidator.validate(body);
|
||||
if (error) throw new ValidationError(error.details[0].message);
|
||||
|
||||
return await chaptersLessonService.updateChapter({
|
||||
token,
|
||||
course_id: courseId,
|
||||
|
|
@ -125,6 +145,10 @@ export class ChaptersLessonInstructorController {
|
|||
): Promise<ReorderChapterResponse> {
|
||||
const token = request.headers.authorization?.replace('Bearer ', '');
|
||||
if (!token) throw new ValidationError('No token provided');
|
||||
|
||||
const { error } = ReorderChapterValidator.validate(body);
|
||||
if (error) throw new ValidationError(error.details[0].message);
|
||||
|
||||
return await chaptersLessonService.reorderChapter({
|
||||
token,
|
||||
course_id: courseId,
|
||||
|
|
@ -170,6 +194,10 @@ export class ChaptersLessonInstructorController {
|
|||
): Promise<CreateLessonResponse> {
|
||||
const token = request.headers.authorization?.replace('Bearer ', '');
|
||||
if (!token) throw new ValidationError('No token provided');
|
||||
|
||||
const { error } = CreateLessonValidator.validate(body);
|
||||
if (error) throw new ValidationError(error.details[0].message);
|
||||
|
||||
return await chaptersLessonService.createLesson({
|
||||
token,
|
||||
course_id: courseId,
|
||||
|
|
@ -197,6 +225,10 @@ export class ChaptersLessonInstructorController {
|
|||
): Promise<UpdateLessonResponse> {
|
||||
const token = request.headers.authorization?.replace('Bearer ', '');
|
||||
if (!token) throw new ValidationError('No token provided');
|
||||
|
||||
const { error } = UpdateLessonValidator.validate(body);
|
||||
if (error) throw new ValidationError(error.details[0].message);
|
||||
|
||||
return await chaptersLessonService.updateLesson({
|
||||
token,
|
||||
course_id: courseId,
|
||||
|
|
@ -246,6 +278,10 @@ export class ChaptersLessonInstructorController {
|
|||
): Promise<ReorderLessonsResponse> {
|
||||
const token = request.headers.authorization?.replace('Bearer ', '');
|
||||
if (!token) throw new ValidationError('No token provided');
|
||||
|
||||
const { error } = ReorderLessonsValidator.validate(body);
|
||||
if (error) throw new ValidationError(error.details[0].message);
|
||||
|
||||
return await chaptersLessonService.reorderLessons({
|
||||
token,
|
||||
course_id: courseId,
|
||||
|
|
@ -275,6 +311,10 @@ export class ChaptersLessonInstructorController {
|
|||
): Promise<AddQuestionResponse> {
|
||||
const token = request.headers.authorization?.replace('Bearer ', '');
|
||||
if (!token) throw new ValidationError('No token provided');
|
||||
|
||||
const { error } = AddQuestionValidator.validate(body);
|
||||
if (error) throw new ValidationError(error.details[0].message);
|
||||
|
||||
return await chaptersLessonService.addQuestion({
|
||||
token,
|
||||
course_id: courseId,
|
||||
|
|
@ -300,6 +340,10 @@ export class ChaptersLessonInstructorController {
|
|||
): Promise<UpdateQuestionResponse> {
|
||||
const token = request.headers.authorization?.replace('Bearer ', '');
|
||||
if (!token) throw new ValidationError('No token provided');
|
||||
|
||||
const { error } = UpdateQuestionValidator.validate(body);
|
||||
if (error) throw new ValidationError(error.details[0].message);
|
||||
|
||||
return await chaptersLessonService.updateQuestion({
|
||||
token,
|
||||
course_id: courseId,
|
||||
|
|
@ -322,6 +366,10 @@ export class ChaptersLessonInstructorController {
|
|||
): Promise<ReorderQuestionResponse> {
|
||||
const token = request.headers.authorization?.replace('Bearer ', '');
|
||||
if (!token) throw new ValidationError('No token provided');
|
||||
|
||||
const { error } = ReorderQuestionValidator.validate(body);
|
||||
if (error) throw new ValidationError(error.details[0].message);
|
||||
|
||||
return await chaptersLessonService.reorderQuestion({
|
||||
token,
|
||||
course_id: courseId,
|
||||
|
|
@ -371,6 +419,10 @@ export class ChaptersLessonInstructorController {
|
|||
): Promise<UpdateQuizResponse> {
|
||||
const token = request.headers.authorization?.replace('Bearer ', '');
|
||||
if (!token) throw new ValidationError('No token provided');
|
||||
|
||||
const { error } = UpdateQuizValidator.validate(body);
|
||||
if (error) throw new ValidationError(error.details[0].message);
|
||||
|
||||
return await chaptersLessonService.updateQuiz({
|
||||
token,
|
||||
course_id: courseId,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue