56 lines
1.8 KiB
TypeScript
56 lines
1.8 KiB
TypeScript
|
|
import { prisma } from '../config/database';
|
||
|
|
import { Prisma } from '@prisma/client';
|
||
|
|
import { config } from '../config';
|
||
|
|
import { logger } from '../config/logger';
|
||
|
|
import { UnauthorizedError, ValidationError, ForbiddenError, NotFoundError } from '../middleware/errorHandler';
|
||
|
|
import jwt from 'jsonwebtoken';
|
||
|
|
import {
|
||
|
|
LessonAttachmentData,
|
||
|
|
LessonData,
|
||
|
|
ChapterData,
|
||
|
|
CreateLessonInput,
|
||
|
|
UpdateLessonInput,
|
||
|
|
CreateChapterInput,
|
||
|
|
UpdateChapterInput,
|
||
|
|
ChaptersRequest,
|
||
|
|
DeleteChapterRequest,
|
||
|
|
ReorderChapterRequest,
|
||
|
|
ListChaptersResponse,
|
||
|
|
GetChapterResponse,
|
||
|
|
CreateChapterResponse,
|
||
|
|
UpdateChapterResponse,
|
||
|
|
DeleteChapterResponse,
|
||
|
|
ReorderChapterResponse,
|
||
|
|
ChapterWithLessonsResponse,
|
||
|
|
ListLessonsRequest,
|
||
|
|
GetLessonRequest,
|
||
|
|
CreateLessonRequest,
|
||
|
|
UpdateLessonRequest,
|
||
|
|
DeleteLessonRequest,
|
||
|
|
ReorderLessonsRequest,
|
||
|
|
ListLessonsResponse,
|
||
|
|
GetLessonResponse,
|
||
|
|
CreateLessonResponse,
|
||
|
|
UpdateLessonResponse,
|
||
|
|
DeleteLessonResponse,
|
||
|
|
ReorderLessonsResponse,
|
||
|
|
} from "../types/ChaptersLesson.typs";
|
||
|
|
|
||
|
|
export class ChaptersLessonService {
|
||
|
|
async listChapters(request: ChaptersRequest): Promise<ListChaptersResponse> {
|
||
|
|
try {
|
||
|
|
const { token, course_id } = request;
|
||
|
|
const decodedToken = jwt.verify(token, config.jwt.secret) as { id: number };
|
||
|
|
const user = await prisma.user.findUnique({ where: { id: decodedToken.id } });
|
||
|
|
if (!user) {
|
||
|
|
throw new UnauthorizedError('Invalid token');
|
||
|
|
}
|
||
|
|
const chapters = await prisma.chapter.findMany({ where: { course_id } });
|
||
|
|
return { code: 200, message: 'Chapters fetched successfully', data: chapters as ChapterData[], total: chapters.length };
|
||
|
|
} catch (error) {
|
||
|
|
logger.error(`Error fetching chapters: ${error}`);
|
||
|
|
throw error;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|