반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- nestjs공부
- 플러터 개발
- K8S
- JPA
- nestjs스터디
- JPA예제
- JPA공부
- JPA스터디
- 자료구조공부
- 카프카
- 기술공부
- JPA 공부
- 플러터 공부
- 스프링부트
- DDD
- 코테준비
- 스프링공부
- 스프링 공부
- nestjs
- 스프링
- querydsl
- Kafka
- Axon framework
- 알고리즘공부
- Flutter
- 프로그래머스
- 스프링부트공부
- 자바공부
- 기술면접공부
- 코테공부
Archives
- Today
- Total
DevBoi
[NestJS] Repository Pattern 본문
반응형
단순히 nestJS 관련 API를 개발했다.
스웨거를 붙였고, 해당 관련되서, 단순히 조회해서, 리턴하는 (DTO) 로직을 구현했다.
typeorm 0.3버전 부터 좀 많이 바뀌어서, 버전은 0.2.45로 변경해서 작업을 했다.
1) 컨트롤러
import { Controller, Get, Post, Body, Patch, Param, Delete, UseGuards } from '@nestjs/common';
import { CorpService } from './corp.service';
import { JwtAuthGuard } from 'src/auth/auth-guard';
import { Corp } from './entities/corp.entity';
import { ApiTags, ApiOperation, ApiResponse, ApiQuery, ApiParam, ApiBody } from '@nestjs/swagger';
import { CorpDto } from './corp.dto';
@ApiTags('corp') // (옵션) 태그 추가
@Controller('corp')
export class CorpController {
constructor(private readonly corpService: CorpService) {}
@ApiOperation({ summary: '업체 조회 (id)' }) // (옵션) API 동작 설명
@ApiParam({
description: 'corp find by id',
type: CorpDto,
name: 'id'
})
@Get(':id')
findOne(@Param('id') id: string) : Promise<Corp>{
return this.corpService.findbyCorpId(id);
}
}
2) 서비스
import { Inject, Injectable } from '@nestjs/common';
import { CorpRepostiory } from './corp.repository';
import { Corp } from './entities/corp.entity';
import { InjectRepository } from '@nestjs/typeorm';
@Injectable()
export class CorpService {
constructor(
private corpRepository : CorpRepostiory
){
}
// create(createFoodDto: CreateFoodDto) {
// return 'This action adds a new';
// }
async findbyCorpId(id:string) : Promise<Corp> {
return this.corpRepository.findbyCorpId(id);
}
// findOne(id: number) {
// return `This action returns a #${id} food`;
// }
// update(id: number, updateFoodDto: UpdateFoodDto) {
// return `This action updates a #${id} food`;
// }
// remove(id: number) {
// return `This action removes a #${id} food`;
// }
}
3) 레파지토리
import { AbstractRepository, EntityRepository, Repository } from "typeorm";
import { Corp } from "./entities/corp.entity";
import {getRepository} from "typeorm";
@EntityRepository(Corp)
export class CorpRepostiory extends Repository<Corp>{
async findbyCorpId(id: string): Promise<Corp>{
const corp =
await getRepository(Corp)
.createQueryBuilder("corp")
.where("corp.id = :id",{id})
.getOne();
return corp;
}
}
4) 디티오
import { IsNotEmpty } from "class-validator";
export class CorpDto {
@IsNotEmpty()
readonly id: string;
@IsNotEmpty()
readonly name: string;
}
5) 엔티티
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';
@Entity()
export class Corp{
@PrimaryGeneratedColumn() //업체 아이디
id: number;
@Column({ length: 500 }) //업체 이름
name: string;
}
6) 모듈
import { Module } from '@nestjs/common';
import { CorpController } from './corp.controller';
import { CorpService } from './corp.service';
import { CorpRepostiory } from './corp.repository';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Corp } from './entities/corp.entity';
@Module({
imports: [TypeOrmModule.forFeature([Corp])],
controllers: [CorpController],
providers: [CorpService,CorpRepostiory],
})
export class CorpModule {}
참, 모듈에 대한 건 작업을 까먹으면 에러가 모듈에 대한 내용으로 나오지 않아서, 한참 걸린다.
참고하자.
반응형
'Develop > [NestJs]' 카테고리의 다른 글
[NestJs] 수정, 삭제 (0) | 2023.06.18 |
---|---|
[NestJs] Post , 생성 (0) | 2023.06.18 |
[NestJS] Guard로, 인증 로직 구현 (0) | 2023.06.04 |
[NestJs] TypeOrm 변경 및 Repository (0) | 2023.05.30 |
[NestJS] MariaDB , TypeOrm 세팅 (0) | 2023.05.29 |