48 lines
1.8 KiB
TypeScript
48 lines
1.8 KiB
TypeScript
import { Request, Response } from 'express';
|
|
import { getLearningObjectById, getLearningObjectIdsFromPath, getLearningObjectsFromPath } from '../services/learningObjects.js';
|
|
import { FALLBACK_LANG } from '../config.js';
|
|
import { FilteredLearningObject } from '../interfaces/learningPath.js';
|
|
import { getLogger } from '../logging/initalize.js';
|
|
|
|
export async function getAllLearningObjects(req: Request, res: Response): Promise<void> {
|
|
try {
|
|
const hruid = req.query.hruid as string;
|
|
const full = req.query.full === 'true';
|
|
const language = (req.query.language as string) || FALLBACK_LANG;
|
|
|
|
if (!hruid) {
|
|
res.status(400).json({ error: 'HRUID query is required.' });
|
|
return;
|
|
}
|
|
|
|
let learningObjects: FilteredLearningObject[] | string[];
|
|
if (full) {
|
|
learningObjects = await getLearningObjectsFromPath(hruid, language);
|
|
} else {
|
|
learningObjects = await getLearningObjectIdsFromPath(hruid, language);
|
|
}
|
|
|
|
res.json(learningObjects);
|
|
} catch (error) {
|
|
getLogger().error('Error fetching learning objects:', error);
|
|
res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
}
|
|
|
|
export async function getLearningObject(req: Request, res: Response): Promise<void> {
|
|
try {
|
|
const { hruid } = req.params;
|
|
const language = (req.query.language as string) || FALLBACK_LANG;
|
|
|
|
if (!hruid) {
|
|
res.status(400).json({ error: 'HRUID parameter is required.' });
|
|
return;
|
|
}
|
|
|
|
const learningObject = await getLearningObjectById(hruid, language);
|
|
res.json(learningObject);
|
|
} catch (error) {
|
|
getLogger().error('Error fetching learning object:', error);
|
|
res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
}
|