Skip to content

Commit

Permalink
feat: remove specified file
Browse files Browse the repository at this point in the history
  • Loading branch information
davidrdsilva committed Jun 22, 2024
1 parent 2d8b388 commit cf54872
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 6 deletions.
9 changes: 5 additions & 4 deletions src/modules/file.module.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import { Module } from '@nestjs/common';
import { FileService } from '../providers/file.service';
import { FileResolver } from '../resolvers/file.resolver';
import { TypeOrmModule } from '@nestjs/typeorm';
import { File } from '../entities/file.entity';
import { User } from 'src/entities/user.entity';
import { StorageClientService } from 'src/providers/storage-client.service';
import { File } from '../entities/file.entity';
import { FileService } from '../providers/file.service';
import { FileResolver } from '../resolvers/file.resolver';

@Module({
imports: [TypeOrmModule.forFeature([File, User])],
providers: [FileResolver, FileService],
providers: [FileResolver, FileService, StorageClientService],
})
export class FileModule {}
17 changes: 16 additions & 1 deletion src/providers/file.service.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
import { Injectable } from '@nestjs/common';
import { Injectable, InternalServerErrorException } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { File } from '../entities/file.entity';
import { CreateFileInput } from '../models/dtos/create-file.input';
import { StorageClientService } from './storage-client.service';

@Injectable()
export class FileService {
constructor(
@InjectRepository(File)
private readonly fileRepository: Repository<File>,
private readonly storageClientService: StorageClientService,
) {}

async create(createFileInput: CreateFileInput) {
Expand Down Expand Up @@ -78,4 +80,17 @@ export class FileService {

return file;
}

async remove(request: Request, id: string) {
const file = await this.fileRepository.findOneBy({ id: id });

try {
await this.storageClientService.remove(file.filename);
await this.fileRepository.remove(file);

return 'File removed successfully';
} catch (error) {
throw new InternalServerErrorException('Could not remove file. Check the log for details.');
}
}
}
8 changes: 7 additions & 1 deletion src/resolvers/file.resolver.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { UseGuards } from '@nestjs/common';
import { Args, Int, Mutation, Query, Resolver } from '@nestjs/graphql';
import { Args, Context, Int, Mutation, Query, Resolver } from '@nestjs/graphql';
import { JwtAuthGuard } from 'src/auth/auth.guard';
import { File } from '../entities/file.entity';
import { CreateFileInput } from '../models/dtos/create-file.input';
Expand Down Expand Up @@ -37,4 +37,10 @@ export class FileResolver {
findRandomFile() {
return this.fileService.findRandom();
}

@UseGuards(JwtAuthGuard)
@Mutation(() => String)
removeFile(@Context() context: { req: Request }, @Args('id', { type: () => String }) id: string) {
return this.fileService.remove(context.req, id);
}
}

0 comments on commit cf54872

Please sign in to comment.