cleanUrl: /TypeORM을-이용한-쿼리-빌더
floatFirstTOC: right

image.png

자동차 견적 시스템 만들기

자동차 견적을 정확하게 뽑는 건 쉽지 않지만, 데이터를 기준으로 대략적인 시세를 추정하는 건 가능하다. 이제 사용자가 보낸 조건에 따라 유사한 자동차를 필터링하고 평균값을 계산해 견적을 산출하는 시스템을 설계해보자.

이 과정의 핵심은 정확한 시세 추정보다는, TypeORM을 통해 복합적인 조건의 쿼리를 어떻게 작성하고 실행할 수 있는지를 배우는 것에 있다.

견적 생성 로직은 아래 다이어그램처럼 생각할 수 있다.

image.png

견적 생성을 위한 쿼리 작성하기

이제 위 기준을 기반으로 실제 쿼리를 작성해보자.

ReportsServicecreateEstimate() 메서드를 만든다.

// reports.service.ts

createEstimate(estimateDto: GetEstimateDto) {
  return this.repo
    .createQueryBuilder()
    .select('*')
    .where('make = :make', { make: estimateDto.make })
    .getRawMany();
}

이 쿼리는 make가 사용자가 입력한 값과 일치하는 모든 레코드를 반환한다.

<aside> 💡

파라미터 바인딩


참고로, :make는 파라미터 바인딩을 위한 문법이다. { make: estimateDto.make }는 실제 값을 바인딩하여 SQL 인젝션 공격을 방지하는 역할을 한다.

</aside>