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 { EmailModule } from "src/email/email.module";
import { UserController } from "./user.controller"; import { UserController } from "./user.controller";
import { UserSevice } from "./user.service"; import { UserSevice } from "./user.service";
import { FileModule } from "src/file/file.module";
@Module({ @Module({
imports: [EmailModule], imports: [EmailModule, FileModule],
providers: [UserSevice], providers: [UserSevice],
controllers: [UserController], controllers: [UserController],
}) })

View File

@ -4,6 +4,7 @@ import * as argon from "argon2";
import * as crypto from "crypto"; import * as crypto from "crypto";
import { EmailService } from "src/email/email.service"; import { EmailService } from "src/email/email.service";
import { PrismaService } from "src/prisma/prisma.service"; import { PrismaService } from "src/prisma/prisma.service";
import { FileService } from "../file/file.service";
import { CreateUserDTO } from "./dto/createUser.dto"; import { CreateUserDTO } from "./dto/createUser.dto";
import { UpdateUserDto } from "./dto/updateUser.dto"; import { UpdateUserDto } from "./dto/updateUser.dto";
@ -12,6 +13,7 @@ export class UserSevice {
constructor( constructor(
private prisma: PrismaService, private prisma: PrismaService,
private emailService: EmailService, private emailService: EmailService,
private fileService: FileService,
) {} ) {}
async list() { async list() {
@ -74,6 +76,16 @@ export class UserSevice {
} }
async delete(id: string) { 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 } }); return await this.prisma.user.delete({ where: { id } });
} }
} }