create-hest-app
Version:
Create HestJS-powered applications with one command
92 lines (88 loc) • 2.54 kB
text/typescript
import { Controller, Get } from '@hestjs/core';
import { ApiOperation, ApiResponse, ApiTags } from '@hestjs/scalar';
import { AppService } from './app.service';
@Controller('/')
@ApiTags('Application')
export class AppController {
constructor(private readonly appService: AppService) {}
@Get('/')
@ApiOperation({
summary: 'Get application info',
description: 'Returns application information and available endpoints',
tags: ['Health Check', 'Application'],
})
@ApiResponse('200', {
description: 'Application information',
content: {
'application/json': {
schema: {
type: 'object',
properties: {
message: {
type: 'string',
example: 'Hello World from HestJS CQRS!',
},
description: {
type: 'string',
example:
'HestJS CQRS Demo - A demonstration of CQRS pattern using HestJS framework',
},
endpoints: {
type: 'object',
properties: {
users: {
type: 'object',
properties: {
getAll: { type: 'string', example: 'GET /users' },
getById: { type: 'string', example: 'GET /users/:id' },
create: { type: 'string', example: 'POST /users' },
update: { type: 'string', example: 'PUT /users/:id' },
},
},
},
},
},
},
},
},
})
getHello() {
return {
message: this.appService.getHello(),
description:
'HestJS CQRS Demo - A demonstration of CQRS pattern using HestJS framework',
endpoints: {
users: {
getAll: 'GET /users',
getById: 'GET /users/:id',
create: 'POST /users',
update: 'PUT /users/:id',
},
},
};
}
@Get('/error')
@ApiOperation({
summary: 'Test error endpoint',
description: 'Throws an error for testing exception handling and filters',
})
@ApiResponse('500', {
description: 'Internal server error',
content: {
'application/json': {
schema: {
type: 'object',
properties: {
message: {
type: 'string',
example: 'This is a test error for exception handling',
},
},
},
},
},
})
throwError() {
throw new Error('This is a test error for exception handling');
}
}