error validation
This commit is contained in:
@@ -6,6 +6,7 @@ import { ConfigModule, ConfigService } from '@nestjs/config';
|
||||
import * as Joi from 'joi';
|
||||
import {UsersModule} from "./users/user.module";
|
||||
import {AuthenticationModule} from "./authentication/authentication.module";
|
||||
import { PostsModule } from './posts/posts.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
@@ -33,7 +34,8 @@ import {AuthenticationModule} from "./authentication/authentication.module";
|
||||
})
|
||||
}),
|
||||
UsersModule,
|
||||
AuthenticationModule
|
||||
AuthenticationModule,
|
||||
PostsModule
|
||||
],
|
||||
controllers: [AppController],
|
||||
providers: [AppService],
|
||||
|
||||
@@ -7,7 +7,7 @@ import {
|
||||
UseGuards,
|
||||
Get,
|
||||
ClassSerializerInterceptor,
|
||||
UseInterceptors,
|
||||
UseInterceptors, SerializeOptions,
|
||||
} from '@nestjs/common';
|
||||
import {AuthenticationService} from './authentication.service';
|
||||
import RegisterDto from './dto/register.dto';
|
||||
@@ -21,6 +21,9 @@ import { UsersService } from 'src/users/user.service';
|
||||
|
||||
@Controller('authentication')
|
||||
@UseInterceptors(ClassSerializerInterceptor)
|
||||
@SerializeOptions({
|
||||
strategy: 'excludeAll'
|
||||
})
|
||||
export class AuthenticationController {
|
||||
constructor(
|
||||
private readonly authenticationService: AuthenticationService,
|
||||
|
||||
12
src/main.ts
12
src/main.ts
@@ -1,10 +1,20 @@
|
||||
import {NestFactory} from '@nestjs/core';
|
||||
import {HttpAdapterHost, NestFactory, Reflector} from '@nestjs/core';
|
||||
import {AppModule} from './app.module';
|
||||
import * as cookieParser from 'cookie-parser';
|
||||
import {ClassSerializerInterceptor, ValidationPipe} from "@nestjs/common";
|
||||
import {ExceptionsLoggerFilter} from "./utils/exceptionsLogger.filter";
|
||||
|
||||
async function bootstrap() {
|
||||
const app = await NestFactory.create(AppModule);
|
||||
app.use(cookieParser());
|
||||
|
||||
app.useGlobalPipes(new ValidationPipe());
|
||||
const {httpAdapter} = app.get(HttpAdapterHost);
|
||||
app.useGlobalFilters(new ExceptionsLoggerFilter(httpAdapter));
|
||||
|
||||
app.useGlobalInterceptors(new ClassSerializerInterceptor(
|
||||
app.get(Reflector))
|
||||
);
|
||||
await app.listen(process.env.PORT ?? 3000);
|
||||
}
|
||||
|
||||
|
||||
1
src/posts/dto/create-post.dto.ts
Normal file
1
src/posts/dto/create-post.dto.ts
Normal file
@@ -0,0 +1 @@
|
||||
export class CreatePostDto {}
|
||||
4
src/posts/dto/update-post.dto.ts
Normal file
4
src/posts/dto/update-post.dto.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
import { PartialType } from '@nestjs/swagger';
|
||||
import { CreatePostDto } from './create-post.dto';
|
||||
|
||||
export class UpdatePostDto extends PartialType(CreatePostDto) {}
|
||||
1
src/posts/entities/post.entity.ts
Normal file
1
src/posts/entities/post.entity.ts
Normal file
@@ -0,0 +1 @@
|
||||
export class Post {}
|
||||
7
src/posts/exception/postNotFund.exception.ts
Normal file
7
src/posts/exception/postNotFund.exception.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import { NotFoundException } from '@nestjs/common';
|
||||
|
||||
class PostNotFoundException extends NotFoundException {
|
||||
constructor(postId: number) {
|
||||
super(`Post with id ${postId} not found`);
|
||||
}
|
||||
}
|
||||
20
src/posts/posts.controller.spec.ts
Normal file
20
src/posts/posts.controller.spec.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { PostsController } from './posts.controller';
|
||||
import { PostsService } from './posts.service';
|
||||
|
||||
describe('PostsController', () => {
|
||||
let controller: PostsController;
|
||||
|
||||
beforeEach(async () => {
|
||||
const module: TestingModule = await Test.createTestingModule({
|
||||
controllers: [PostsController],
|
||||
providers: [PostsService],
|
||||
}).compile();
|
||||
|
||||
controller = module.get<PostsController>(PostsController);
|
||||
});
|
||||
|
||||
it('should be defined', () => {
|
||||
expect(controller).toBeDefined();
|
||||
});
|
||||
});
|
||||
34
src/posts/posts.controller.ts
Normal file
34
src/posts/posts.controller.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common';
|
||||
import { PostsService } from './posts.service';
|
||||
import { CreatePostDto } from './dto/create-post.dto';
|
||||
import { UpdatePostDto } from './dto/update-post.dto';
|
||||
|
||||
@Controller('posts')
|
||||
export class PostsController {
|
||||
constructor(private readonly postsService: PostsService) {}
|
||||
|
||||
@Post()
|
||||
create(@Body() createPostDto: CreatePostDto) {
|
||||
return this.postsService.create(createPostDto);
|
||||
}
|
||||
|
||||
@Get()
|
||||
findAll() {
|
||||
return this.postsService.findAll();
|
||||
}
|
||||
|
||||
@Get(':id')
|
||||
findOne(@Param('id') id: string) {
|
||||
return this.postsService.findOne(+id);
|
||||
}
|
||||
|
||||
@Patch(':id')
|
||||
update(@Param('id') id: string, @Body() updatePostDto: UpdatePostDto) {
|
||||
return this.postsService.update(+id, updatePostDto);
|
||||
}
|
||||
|
||||
@Delete(':id')
|
||||
remove(@Param('id') id: string) {
|
||||
return this.postsService.remove(+id);
|
||||
}
|
||||
}
|
||||
9
src/posts/posts.module.ts
Normal file
9
src/posts/posts.module.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { PostsService } from './posts.service';
|
||||
import { PostsController } from './posts.controller';
|
||||
|
||||
@Module({
|
||||
controllers: [PostsController],
|
||||
providers: [PostsService],
|
||||
})
|
||||
export class PostsModule {}
|
||||
18
src/posts/posts.service.spec.ts
Normal file
18
src/posts/posts.service.spec.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { PostsService } from './posts.service';
|
||||
|
||||
describe('PostsService', () => {
|
||||
let service: PostsService;
|
||||
|
||||
beforeEach(async () => {
|
||||
const module: TestingModule = await Test.createTestingModule({
|
||||
providers: [PostsService],
|
||||
}).compile();
|
||||
|
||||
service = module.get<PostsService>(PostsService);
|
||||
});
|
||||
|
||||
it('should be defined', () => {
|
||||
expect(service).toBeDefined();
|
||||
});
|
||||
});
|
||||
26
src/posts/posts.service.ts
Normal file
26
src/posts/posts.service.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { CreatePostDto } from './dto/create-post.dto';
|
||||
import { UpdatePostDto } from './dto/update-post.dto';
|
||||
|
||||
@Injectable()
|
||||
export class PostsService {
|
||||
create(createPostDto: CreatePostDto) {
|
||||
return 'This action adds a new post';
|
||||
}
|
||||
|
||||
findAll() {
|
||||
return `This action returns all posts`;
|
||||
}
|
||||
|
||||
findOne(id: number) {
|
||||
return `This action returns a #${id} post`;
|
||||
}
|
||||
|
||||
update(id: number, updatePostDto: UpdatePostDto) {
|
||||
return `This action updates a #${id} post`;
|
||||
}
|
||||
|
||||
remove(id: number) {
|
||||
return `This action removes a #${id} post`;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
import {Column, Entity, PrimaryGeneratedColumn} from 'typeorm';
|
||||
import {Exclude} from 'class-transformer';
|
||||
import {Exclude, Expose} from 'class-transformer';
|
||||
|
||||
@Entity()
|
||||
class User {
|
||||
@@ -7,9 +7,11 @@ class User {
|
||||
public id?: number;
|
||||
|
||||
@Column({unique: true})
|
||||
@Expose()
|
||||
public email: string;
|
||||
|
||||
@Column()
|
||||
@Expose()
|
||||
public name: string;
|
||||
|
||||
@Column()
|
||||
|
||||
10
src/utils/exceptionsLogger.filter.ts
Normal file
10
src/utils/exceptionsLogger.filter.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import { Catch, ArgumentsHost } from '@nestjs/common';
|
||||
import { BaseExceptionFilter } from '@nestjs/core';
|
||||
|
||||
@Catch()
|
||||
export class ExceptionsLoggerFilter extends BaseExceptionFilter {
|
||||
catch(exception: unknown, host: ArgumentsHost) {
|
||||
console.log('Exception thrown', exception);
|
||||
super.catch(exception, host);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user