45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
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;
|
|
});
|