Skip to content

Commit

Permalink
Implement: getOneUser
Browse files Browse the repository at this point in the history
  • Loading branch information
ltnscp9028 committed Apr 24, 2022
1 parent 0f05e7e commit f92af43
Show file tree
Hide file tree
Showing 8 changed files with 53 additions and 10 deletions.
1 change: 1 addition & 0 deletions package.json
Expand Up @@ -25,6 +25,7 @@
"@nestjs/core": "^8.0.0",
"@nestjs/platform-express": "^8.0.0",
"@prisma/client": "3.12.0",
"class-transformer": "^0.5.1",
"class-validator": "^0.13.2",
"reflect-metadata": "^0.1.13",
"rimraf": "^3.0.2",
Expand Down
7 changes: 7 additions & 0 deletions src/user/dto/get_user.dto.ts
@@ -0,0 +1,7 @@
import { IsNotEmpty, IsNumber } from 'class-validator';

export class GetUserParam {
// @IsNumber()
@IsNotEmpty()
userId: number;
}
8 changes: 7 additions & 1 deletion src/user/user.controller.ts
@@ -1,7 +1,8 @@
import { Body, Controller, Get, Post } from '@nestjs/common';
import { Body, Controller, Get, Param, Post } from '@nestjs/common';

import { UserService } from '@user/user.service';
import { CreateUserBody } from '@user/dto/create_user.dto';
import { GetUserParam } from './dto/get_user.dto';

@Controller('users')
export class UserController {
Expand All @@ -12,6 +13,11 @@ export class UserController {
return this.userService.getUsers();
}

@Get('/:userId')
getUser(@Param() param: GetUserParam) {
return this.userService.getUser(param);
}

@Post()
createUser(@Body() body: CreateUserBody) {
return this.userService.createUser(body);
Expand Down
3 changes: 2 additions & 1 deletion src/user/user.module.ts
Expand Up @@ -2,9 +2,10 @@ import { Module } from '@nestjs/common';
import { UserService } from '@user/user.service';
import { UserController } from '@user/user.controller';
import { UserRepository } from '@user/user.repository';
import { UserValidator } from '@user/user.validator';

@Module({
providers: [UserService, UserRepository],
providers: [UserService, UserRepository, UserValidator],
controllers: [UserController],
})
export class UserModule {}
12 changes: 8 additions & 4 deletions src/user/user.repository.ts
Expand Up @@ -11,9 +11,13 @@ export class UserRepository {
return this.prisma.user.findMany();
}

createUser(data: ReturnType<UserValidator['createUserValidator']>) {
return this.prisma.user.create({
data,
});
getUser(userFindUniqueArgs: ReturnType<UserValidator['getUserValidator']>) {
return this.prisma.user.findUnique(userFindUniqueArgs);
}

createUser(
userCreateInput: ReturnType<UserValidator['createUserValidator']>,
) {
return this.prisma.user.create(userCreateInput);
}
}
7 changes: 7 additions & 0 deletions src/user/user.service.ts
Expand Up @@ -3,6 +3,7 @@ import { Injectable } from '@nestjs/common';
import { UserRepository } from '@user/user.repository';
import { UserValidator } from '@user/user.validator';
import { CreateUserBody } from '@user/dto/create_user.dto';
import { GetUserParam } from './dto/get_user.dto';
@Injectable()
export class UserService {
constructor(
Expand All @@ -14,6 +15,12 @@ export class UserService {
return this.userRepository.getUsers();
}

getUser(param: GetUserParam) {
return this.userRepository.getUser(
this.userValidator.getUserValidator(param),
);
}

createUser(body: CreateUserBody) {
return this.userRepository.createUser(
this.userValidator.createUserValidator(body),
Expand Down
20 changes: 16 additions & 4 deletions src/user/user.validator.ts
@@ -1,14 +1,26 @@
import { Injectable } from '@nestjs/common';
import { Prisma } from '@prisma/client';

import { CreateUserBody } from '@user/dto/create_user.dto';
import type { CreateUserBody } from '@user/dto/create_user.dto';
import type { GetUserParam } from '@user/dto/get_user.dto';

@Injectable()
export class UserValidator {
createUserValidator({ email, name }: CreateUserBody) {
return Prisma.validator<Prisma.UserCreateInput>()({
email,
name,
return Prisma.validator<Prisma.UserCreateArgs>()({
data: {
email,
name,
},
});
}

getUserValidator({ userId }: GetUserParam) {
return Prisma.validator<Prisma.UserFindUniqueArgs>()({
rejectOnNotFound: true,
where: {
id: Number(userId),
},
});
}
}
5 changes: 5 additions & 0 deletions yarn.lock
Expand Up @@ -1630,6 +1630,11 @@ cjs-module-lexer@^1.0.0:
resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40"
integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==

class-transformer@^0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/class-transformer/-/class-transformer-0.5.1.tgz#24147d5dffd2a6cea930a3250a677addf96ab336"
integrity sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==

class-validator@^0.13.2:
version "0.13.2"
resolved "https://registry.yarnpkg.com/class-validator/-/class-validator-0.13.2.tgz#64b031e9f3f81a1e1dcd04a5d604734608b24143"
Expand Down

0 comments on commit f92af43

Please sign in to comment.