You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

40 lines
1.2 KiB

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);
}