SmartfolioBackend / src /modules /document-generation /document-generation.controller.ts
ibrahimgulbutt's picture
Restore AI: Groq retired the Llama models
2f666f7
Raw History Blame Contribute Delete
1.94 kB
import {
Controller,
Post,
Get,
Body,
UseGuards,
Req,
HttpCode,
HttpStatus,
Param,
} from '@nestjs/common';
import {
ApiTags,
ApiBearerAuth,
ApiOperation,
ApiOkResponse,
ApiUnauthorizedResponse,
} from '@nestjs/swagger';
import { JwtAuthGuard } from '../auth/jwt-auth.guard';
import { AuthenticatedRequest } from '../../common/interfaces/authenticated-request.interface';
import { DocumentGenerationService } from './document-generation.service';
import { GenerateDocumentDto } from './dto/generate-document.dto';
@ApiTags('Document Generation')
@ApiBearerAuth()
@ApiUnauthorizedResponse({ description: 'Missing or invalid JWT token' })
@Controller('document-generation')
@UseGuards(JwtAuthGuard)
export class DocumentGenerationController {
constructor(private readonly service: DocumentGenerationService) {}
@Post('generate')
@HttpCode(HttpStatus.OK)
@ApiOperation({
summary: 'Generate a document (cover letter, email, or personal statement)',
description: 'Returns the generated document content along with a documentId for retrieval.',
})
@ApiOkResponse({
description: 'Document generated successfully',
schema: {
example: {
documentId: 'uuid',
title: 'Cover Letter: Acme Corp',
content: 'Dear Hiring Manager...',
},
},
})
async generate(
@Req() req: AuthenticatedRequest,
@Body() dto: GenerateDocumentDto,
) {
return this.service.generate(req.user.id, dto);
}
@Get('history')
@ApiOperation({ summary: 'Get the current user past generated documents' })
async history(@Req() req: AuthenticatedRequest) {
return this.service.getHistory(req.user.id);
}
@Get(':id')
@ApiOperation({ summary: 'Get details of a specific generated document' })
async getDocument(
@Req() req: AuthenticatedRequest,
@Param('id') id: string,
) {
return this.service.getDocumentDetail(req.user.id, id);
}
}