mirror of
https://github.com/sct/overseerr.git
synced 2025-09-17 17:24:35 +02:00
@@ -1,7 +1,7 @@
|
||||
import { Router } from 'express';
|
||||
import { getRepository, FindOperator, FindOneOptions, In } from 'typeorm';
|
||||
import Media from '../entity/Media';
|
||||
import { MediaStatus } from '../constants/media';
|
||||
import { MediaStatus, MediaType } from '../constants/media';
|
||||
import logger from '../logger';
|
||||
import { isAuthenticated } from '../middleware/auth';
|
||||
import { Permission } from '../lib/permissions';
|
||||
@@ -82,6 +82,63 @@ mediaRoutes.get('/', async (req, res, next) => {
|
||||
}
|
||||
});
|
||||
|
||||
mediaRoutes.get<
|
||||
{
|
||||
id: string;
|
||||
status: 'available' | 'partial' | 'processing' | 'pending' | 'unknown';
|
||||
},
|
||||
Media
|
||||
>(
|
||||
'/:id/:status',
|
||||
isAuthenticated(Permission.MANAGE_REQUESTS),
|
||||
async (req, res, next) => {
|
||||
const mediaRepository = getRepository(Media);
|
||||
|
||||
const media = await mediaRepository.findOne({
|
||||
where: { id: Number(req.params.id) },
|
||||
});
|
||||
|
||||
if (!media) {
|
||||
return next({ status: 404, message: 'Media does not exist.' });
|
||||
}
|
||||
|
||||
const is4k = Boolean(req.query.is4k);
|
||||
|
||||
switch (req.params.status) {
|
||||
case 'available':
|
||||
media[is4k ? 'status4k' : 'status'] = MediaStatus.AVAILABLE;
|
||||
if (media.mediaType === MediaType.TV) {
|
||||
// Mark all seasons available
|
||||
media.seasons.forEach((season) => {
|
||||
season[is4k ? 'status4k' : 'status'] = MediaStatus.AVAILABLE;
|
||||
});
|
||||
}
|
||||
break;
|
||||
case 'partial':
|
||||
if (media.mediaType === MediaType.MOVIE) {
|
||||
return next({
|
||||
status: 400,
|
||||
message: 'Only series can be set to be partially available',
|
||||
});
|
||||
}
|
||||
media.status = MediaStatus.PARTIALLY_AVAILABLE;
|
||||
break;
|
||||
case 'processing':
|
||||
media.status = MediaStatus.PROCESSING;
|
||||
break;
|
||||
case 'pending':
|
||||
media.status = MediaStatus.PENDING;
|
||||
break;
|
||||
case 'unknown':
|
||||
media.status = MediaStatus.UNKNOWN;
|
||||
}
|
||||
|
||||
await mediaRepository.save(media);
|
||||
|
||||
return res.status(200).json(media);
|
||||
}
|
||||
);
|
||||
|
||||
mediaRoutes.delete(
|
||||
'/:id',
|
||||
isAuthenticated(Permission.MANAGE_REQUESTS),
|
||||
|
Reference in New Issue
Block a user