|
|
|
|
|
|
import {Request, Response} from 'express';
|
|
import {LESSONS} from "./db-data";
|
|
import {setTimeout} from "timers";
|
|
|
|
|
|
|
|
export function searchLessons(req: Request, res: Response) {
|
|
|
|
console.log('Searching for lessons ...');
|
|
|
|
const queryParams = req.query;
|
|
|
|
const courseId = queryParams.courseId,
|
|
filter = queryParams.filter || '',
|
|
sortOrder = queryParams.sortOrder || 'asc',
|
|
pageNumber = parseInt(queryParams.pageNumber) || 0,
|
|
pageSize = parseInt(queryParams.pageSize);
|
|
|
|
let lessons = Object.values(LESSONS).filter(lesson => lesson.courseId == courseId).sort((l1, l2) => l1.id - l2.id);
|
|
|
|
if (filter) {
|
|
lessons = lessons.filter(lesson => lesson.description.trim().toLowerCase().search(filter.toLowerCase()) >= 0);
|
|
}
|
|
|
|
if (sortOrder == "desc") {
|
|
lessons = lessons.reverse();
|
|
}
|
|
|
|
const initialPos = pageNumber * pageSize;
|
|
|
|
console.log(`Retrieving lessons page starting at position ${initialPos}, page size ${pageSize} for course ${courseId}`);
|
|
|
|
const lessonsPage = lessons.slice(initialPos, initialPos + pageSize);
|
|
|
|
res.status(200).json(lessonsPage);
|
|
|
|
}
|