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.
37 lines
1016 B
37 lines
1016 B
import TheMovieDb from '@server/api/themoviedb';
|
|
import Media from '@server/entity/Media';
|
|
import logger from '@server/logger';
|
|
import { mapCollection } from '@server/models/Collection';
|
|
import { Router } from 'express';
|
|
|
|
const collectionRoutes = Router();
|
|
|
|
collectionRoutes.get<{ id: string }>('/:id', async (req, res, next) => {
|
|
const tmdb = new TheMovieDb();
|
|
|
|
try {
|
|
const collection = await tmdb.getCollection({
|
|
collectionId: Number(req.params.id),
|
|
language: req.locale ?? (req.query.language as string),
|
|
});
|
|
|
|
const media = await Media.getRelatedMedia(
|
|
collection.parts.map((part) => part.id)
|
|
);
|
|
|
|
return res.status(200).json(mapCollection(collection, media));
|
|
} catch (e) {
|
|
logger.debug('Something went wrong retrieving collection', {
|
|
label: 'API',
|
|
errorMessage: e.message,
|
|
collectionId: req.params.id,
|
|
});
|
|
return next({
|
|
status: 500,
|
|
message: 'Unable to retrieve collection.',
|
|
});
|
|
}
|
|
});
|
|
|
|
export default collectionRoutes;
|