import { NestFactory } from '@nestjs/core'; import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger'; import { mkdirSync, writeFileSync } from 'fs'; import { join } from 'path'; import { AppModule } from '../src/app.module'; import { PrismaService } from '../src/prisma/prisma.service'; async function generateApiDocs() { const app = await NestFactory.create(AppModule, { logger: false, }); app.setGlobalPrefix('api/v1'); const swaggerConfig = new DocumentBuilder() .setTitle('ToolsShow Backend API') .setDescription('Generated OpenAPI document for ToolsShow backend.') .setVersion('1.0.0') .addBearerAuth( { type: 'http', scheme: 'bearer', bearerFormat: 'JWT', }, 'admin-access-token', ) .build(); const document = SwaggerModule.createDocument(app, swaggerConfig); const docsDir = join(process.cwd(), 'docs'); mkdirSync(docsDir, { recursive: true }); writeFileSync(join(docsDir, 'openapi.json'), JSON.stringify(document, null, 2), 'utf-8'); const prisma = app.get(PrismaService); await prisma.$disconnect(); await app.close(); process.exit(0); } generateApiDocs().catch((error) => { console.error(error); process.exitCode = 1; });