Reactive-Resume/server/src/resume/resume.controller.ts

113 lines
3.1 KiB
TypeScript

import {
Body,
Controller,
Delete,
Get,
Param,
Patch,
Post,
Put,
Query,
UploadedFile,
UseGuards,
UseInterceptors,
} from '@nestjs/common';
import { FileInterceptor } from '@nestjs/platform-express';
import { JwtAuthGuard } from '@/auth/guards/jwt.guard';
import { OptionalJwtAuthGuard } from '@/auth/guards/optional-jwt.guard';
import { User } from '@/decorators/user.decorator';
import { CreateResumeDto } from './dto/create-resume.dto';
import { UpdateResumeDto } from './dto/update-resume.dto';
import { ResumeService } from './resume.service';
@Controller('resume')
export class ResumeController {
constructor(private readonly resumeService: ResumeService) {}
@UseGuards(JwtAuthGuard)
@Post()
create(@Body() createResumeDto: CreateResumeDto, @User('id') userId: number) {
return this.resumeService.create(createResumeDto, userId);
}
@UseGuards(JwtAuthGuard)
@Get()
async findAllByUser(@User('id') userId: number) {
console.log('findAllByUser', userId);
return this.resumeService.findAllByUser(userId);
}
@UseGuards(OptionalJwtAuthGuard)
@Get('short/:shortId')
findOneByShortId(
@Param('shortId') shortId: string,
@User('id') userId?: number,
@Query('secretKey') secretKey?: string
) {
return this.resumeService.findOneByShortId(shortId, userId, secretKey);
}
@UseGuards(OptionalJwtAuthGuard)
@Get(':username/:slug')
findOneByIdentifier(
@Param('username') username: string,
@Param('slug') slug: string,
@User('id') userId?: number,
@Query('secretKey') secretKey?: string
) {
return this.resumeService.findOneByIdentifier(username, slug, userId, secretKey);
}
@UseGuards(OptionalJwtAuthGuard)
@Get(':id')
findOne(@Param('id') id: string, @User('id') userId?: number) {
return this.resumeService.findOne(+id, userId);
}
@UseGuards(JwtAuthGuard)
@Patch(':id')
update(@Param('id') id: string, @User('id') userId: number, @Body() updateResumeDto: UpdateResumeDto) {
return this.resumeService.update(+id, updateResumeDto, userId);
}
@UseGuards(JwtAuthGuard)
@Delete(':id')
remove(@Param('id') id: string, @User('id') userId: number) {
return this.resumeService.remove(+id, userId);
}
@UseGuards(JwtAuthGuard)
@Post(':id/duplicate')
duplicate(@Param('id') id: string, @User('id') userId: number) {
return this.resumeService.duplicate(+id, userId);
}
@UseGuards(JwtAuthGuard)
@Post(':id/sample')
sample(@Param('id') id: string, @User('id') userId: number) {
return this.resumeService.sample(+id, userId);
}
@UseGuards(JwtAuthGuard)
@Post(':id/reset')
reset(@Param('id') id: string, @User('id') userId: number) {
return this.resumeService.reset(+id, userId);
}
@UseGuards(JwtAuthGuard)
@Put(':id/photo')
@UseInterceptors(FileInterceptor('file'))
async uploadPhoto(@Param('id') id: string, @User('id') userId: number, @UploadedFile() file: Express.Multer.File) {
return this.resumeService.uploadPhoto(+id, userId, file);
}
@UseGuards(JwtAuthGuard)
@Delete(':id/photo')
deletePhoto(@Param('id') id: string, @User('id') userId: number) {
return this.resumeService.deletePhoto(+id, userId);
}
}