1
0
Fork 0

fix: delete share files if user gets deleted

This commit is contained in:
Elias Schneider 2024-03-28 11:59:50 +01:00
parent 0b07bfbc14
commit e71f6cd159
No known key found for this signature in database
GPG Key ID: 07E623B294202B6C
2 changed files with 14 additions and 1 deletions

View File

@ -2,9 +2,10 @@ import { Module } from "@nestjs/common";
import { EmailModule } from "src/email/email.module";
import { UserController } from "./user.controller";
import { UserSevice } from "./user.service";
import { FileModule } from "src/file/file.module";
@Module({
imports: [EmailModule],
imports: [EmailModule, FileModule],
providers: [UserSevice],
controllers: [UserController],
})

View File

@ -4,6 +4,7 @@ import * as argon from "argon2";
import * as crypto from "crypto";
import { EmailService } from "src/email/email.service";
import { PrismaService } from "src/prisma/prisma.service";
import { FileService } from "../file/file.service";
import { CreateUserDTO } from "./dto/createUser.dto";
import { UpdateUserDto } from "./dto/updateUser.dto";
@ -12,6 +13,7 @@ export class UserSevice {
constructor(
private prisma: PrismaService,
private emailService: EmailService,
private fileService: FileService,
) {}
async list() {
@ -74,6 +76,16 @@ export class UserSevice {
}
async delete(id: string) {
const user = await this.prisma.user.findUnique({
where: { id },
include: { shares: true },
});
if (!user) throw new BadRequestException("User not found");
await Promise.all(
user.shares.map((share) => this.fileService.deleteAllFiles(share.id)),
);
return await this.prisma.user.delete({ where: { id } });
}
}