mirror of
https://github.com/sct/overseerr.git
synced 2025-09-17 17:24:35 +02:00
feat(api): /request/count endpoint (#682)
This commit is contained in:
@@ -2486,6 +2486,30 @@ paths:
|
|||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/MediaRequest'
|
$ref: '#/components/schemas/MediaRequest'
|
||||||
|
/request/count:
|
||||||
|
get:
|
||||||
|
summary: Returns request counts
|
||||||
|
description: |
|
||||||
|
Returns the number of pending and approved requests.
|
||||||
|
tags:
|
||||||
|
- request
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: Request counts returned
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
pending:
|
||||||
|
type: number
|
||||||
|
example: 0
|
||||||
|
approved:
|
||||||
|
type: number
|
||||||
|
example: 10
|
||||||
|
required:
|
||||||
|
- pending
|
||||||
|
- approved
|
||||||
/request/{requestId}:
|
/request/{requestId}:
|
||||||
get:
|
get:
|
||||||
summary: Requests a specific MediaRequest
|
summary: Requests a specific MediaRequest
|
||||||
|
@@ -221,11 +221,31 @@ requestRoutes.post(
|
|||||||
|
|
||||||
next({ status: 500, message: 'Invalid media type' });
|
next({ status: 500, message: 'Invalid media type' });
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
next({ message: e.message, status: 500 });
|
next({ status: 500, message: e.message });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
requestRoutes.get('/count', async (_req, res, next) => {
|
||||||
|
const requestRepository = getRepository(MediaRequest);
|
||||||
|
|
||||||
|
try {
|
||||||
|
const pendingCount = await requestRepository.count({
|
||||||
|
status: MediaRequestStatus.PENDING,
|
||||||
|
});
|
||||||
|
const approvedCount = await requestRepository.count({
|
||||||
|
status: MediaRequestStatus.APPROVED,
|
||||||
|
});
|
||||||
|
|
||||||
|
return res.status(200).json({
|
||||||
|
pending: pendingCount,
|
||||||
|
approved: approvedCount,
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
|
next({ status: 500, message: e.message });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
requestRoutes.get('/:requestId', async (req, res, next) => {
|
requestRoutes.get('/:requestId', async (req, res, next) => {
|
||||||
const requestRepository = getRepository(MediaRequest);
|
const requestRepository = getRepository(MediaRequest);
|
||||||
|
|
||||||
@@ -392,6 +412,7 @@ requestRoutes.post<{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
requestRoutes.get<{
|
requestRoutes.get<{
|
||||||
requestId: string;
|
requestId: string;
|
||||||
status: 'pending' | 'approve' | 'decline';
|
status: 'pending' | 'approve' | 'decline';
|
||||||
|
Reference in New Issue
Block a user