feat: manage series slideover added (and approve/decline/delete hooked up)

This commit is contained in:
sct
2020-11-18 11:48:29 +00:00
parent cb9ae25d94
commit 236c4e5e61
6 changed files with 257 additions and 82 deletions

View File

@@ -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);
}
}

View File

@@ -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()

View File

@@ -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);