mirror of
https://github.com/fallenbagel/jellyseerr.git
synced 2025-12-31 19:59:31 -05:00
feat: manage series slideover added (and approve/decline/delete hooked up)
This commit is contained in:
@@ -37,7 +37,7 @@ export class MediaRequest {
|
||||
@ManyToOne(() => User, (user) => user.requests, { eager: true })
|
||||
public requestedBy: User;
|
||||
|
||||
@ManyToOne(() => User, { nullable: true })
|
||||
@ManyToOne(() => User, { nullable: true, cascade: true, eager: true })
|
||||
public modifiedBy?: User;
|
||||
|
||||
@CreateDateColumn()
|
||||
@@ -118,8 +118,11 @@ export class MediaRequest {
|
||||
@AfterRemove()
|
||||
private async handleRemoveParentUpdate() {
|
||||
const mediaRepository = getRepository(Media);
|
||||
if (!this.media.requests || this.media.requests.length === 0) {
|
||||
this.media.status = MediaStatus.UNKNOWN;
|
||||
const fullMedia = await mediaRepository.findOneOrFail({
|
||||
where: { id: this.media.id },
|
||||
});
|
||||
if (!fullMedia.requests || fullMedia.requests.length === 0) {
|
||||
fullMedia.status = MediaStatus.UNKNOWN;
|
||||
mediaRepository.save(this.media);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,9 @@ class SeasonRequest {
|
||||
@Column({ type: 'int', default: MediaRequestStatus.PENDING })
|
||||
public status: MediaRequestStatus;
|
||||
|
||||
@ManyToOne(() => MediaRequest, (request) => request.seasons)
|
||||
@ManyToOne(() => MediaRequest, (request) => request.seasons, {
|
||||
onDelete: 'CASCADE',
|
||||
})
|
||||
public request: MediaRequest;
|
||||
|
||||
@CreateDateColumn()
|
||||
|
||||
@@ -54,14 +54,14 @@ requestRoutes.get('/', async (req, res, next) => {
|
||||
const requests = req.user?.hasPermission(Permission.MANAGE_REQUESTS)
|
||||
? await requestRepository.find({
|
||||
order: sortFilter,
|
||||
relations: ['media'],
|
||||
relations: ['media', 'modifiedBy'],
|
||||
where: { status: statusFilter },
|
||||
take: Number(req.query.take) ?? 20,
|
||||
skip: Number(req.query.skip) ?? 0,
|
||||
})
|
||||
: await requestRepository.find({
|
||||
where: { requestedBy: { id: req.user?.id }, status: statusFilter },
|
||||
relations: ['media'],
|
||||
relations: ['media', 'modifiedBy'],
|
||||
order: sortFilter,
|
||||
take: Number(req.query.limit) ?? 20,
|
||||
skip: Number(req.query.skip) ?? 0,
|
||||
@@ -116,6 +116,9 @@ requestRoutes.post(
|
||||
status: req.user?.hasPermission(Permission.AUTO_APPROVE)
|
||||
? MediaRequestStatus.APPROVED
|
||||
: MediaRequestStatus.PENDING,
|
||||
modifiedBy: req.user?.hasPermission(Permission.AUTO_APPROVE)
|
||||
? req.user
|
||||
: undefined,
|
||||
});
|
||||
|
||||
await requestRepository.save(request);
|
||||
@@ -158,6 +161,9 @@ requestRoutes.post(
|
||||
status: req.user?.hasPermission(Permission.AUTO_APPROVE)
|
||||
? MediaRequestStatus.APPROVED
|
||||
: MediaRequestStatus.PENDING,
|
||||
modifiedBy: req.user?.hasPermission(Permission.AUTO_APPROVE)
|
||||
? req.user
|
||||
: undefined,
|
||||
seasons: finalSeasons.map(
|
||||
(sn) =>
|
||||
new SeasonRequest({
|
||||
@@ -254,6 +260,7 @@ requestRoutes.get<{
|
||||
}
|
||||
|
||||
request.status = newStatus;
|
||||
request.modifiedBy = req.user;
|
||||
await requestRepository.save(request);
|
||||
|
||||
return res.status(200).json(request);
|
||||
|
||||
Reference in New Issue
Block a user