Skip to content

Commit

Permalink
feat(api): add additional request counts (#2426)
Browse files Browse the repository at this point in the history
  • Loading branch information
TheCatLady committed Jan 16, 2022
1 parent d4438c8 commit 2535edc
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 10 deletions.
15 changes: 8 additions & 7 deletions overseerr-api.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4422,21 +4422,22 @@ paths:
schema:
type: object
properties:
total:
type: number
movie:
type: number
tv:
type: number
pending:
type: number
example: 0
approved:
type: number
example: 10
declined:
type: number
processing:
type: number
example: 4
available:
type: number
example: 6
required:
- pending
- approved
/request/{requestId}:
get:
summary: Get MediaRequest
Expand Down
34 changes: 31 additions & 3 deletions server/routes/request.ts
Original file line number Diff line number Diff line change
Expand Up @@ -444,6 +444,20 @@ requestRoutes.get('/count', async (_req, res, next) => {
.createQueryBuilder('request')
.leftJoinAndSelect('request.media', 'media');

const totalCount = await query.getCount();

const movieCount = await query
.where('request.type = :requestType', {
requestType: MediaType.MOVIE,
})
.getCount();

const tvCount = await query
.where('request.type = :requestType', {
requestType: MediaType.TV,
})
.getCount();

const pendingCount = await query
.where('request.status = :requestStatus', {
requestStatus: MediaRequestStatus.PENDING,
Expand All @@ -456,12 +470,18 @@ requestRoutes.get('/count', async (_req, res, next) => {
})
.getCount();

const declinedCount = await query
.where('request.status = :requestStatus', {
requestStatus: MediaRequestStatus.DECLINED,
})
.getCount();

const processingCount = await query
.where('request.status = :requestStatus', {
requestStatus: MediaRequestStatus.APPROVED,
})
.andWhere(
'(request.is4k = false AND media.status != :availableStatus) OR (request.is4k = true AND media.status4k != :availableStatus)',
'((request.is4k = false AND media.status != :availableStatus) OR (request.is4k = true AND media.status4k != :availableStatus))',
{
availableStatus: MediaStatus.AVAILABLE,
}
Expand All @@ -473,21 +493,29 @@ requestRoutes.get('/count', async (_req, res, next) => {
requestStatus: MediaRequestStatus.APPROVED,
})
.andWhere(
'(request.is4k = false AND media.status = :availableStatus) OR (request.is4k = true AND media.status4k = :availableStatus)',
'((request.is4k = false AND media.status = :availableStatus) OR (request.is4k = true AND media.status4k = :availableStatus))',
{
availableStatus: MediaStatus.AVAILABLE,
}
)
.getCount();

return res.status(200).json({
total: totalCount,
movie: movieCount,
tv: tvCount,
pending: pendingCount,
approved: approvedCount,
declined: declinedCount,
processing: processingCount,
available: availableCount,
});
} catch (e) {
next({ status: 500, message: e.message });
logger.error('Something went wrong retrieving request counts', {
label: 'API',
errorMessage: e.message,
});
next({ status: 500, message: 'Unable to retrieve request counts.' });
}
});

Expand Down

0 comments on commit 2535edc

Please sign in to comment.