113 lines
3.1 KiB
TypeScript
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);
|
|
}
|
|
}
|