원티드 프리온보딩 백엔드 인턴십 7th : 231108 TIL

원티드 프리온보딩 백엔드 인턴십 7th : 231108 TIL

1️⃣ 할당된 업무에 대한 진행상황.

In Progress: 코드 검토 및 Readme.md 및 REST API 작성
Done: 마이그레이션, 사용자 회원가입 및 로그인, 사용자 정보 조회 및 변경, 맛집 조회 API

2️⃣ 진행한 작업에 대한 리뷰 및 커밋한 내용 리뷰진행.

  • 맛집 조회할 때 쿼리문 내 거리 조건에 대한 filter를 진행하고 정렬할 수가 없어 당장은 모든 맛집을 조회한 후 then을 통해 filter를 진행하였습니다.
  • 하지만 맛집 목록이 많아진다면 이는 데이터 조회에 많은 시간을 소모할 것으로 생각하고, 이를 개선하는 방향을 찾아보고 싶습니다. 🤔
await this.restaurantRepository
      .createQueryBuilder('r')
      .select(`r.id`, `id`)
      .addSelect(`r.placeName`, `placeName`)
      .addSelect(`r.business_type`, `business_type`)
      .addSelect(`r.business_state`, `business_state`)
      .addSelect(`r.road_name_address`, `road_name_address`)
      .addSelect(`r.city_name`, `city_name`)
      .addSelect(`r.latitude`, `latitude`)
      .addSelect(`r.longitude`, `longitude`)
      .addSelect(`r.view_count`, `view_count`)
      .addSelect(`r.total_rating`, `total_rating`)
      .where(`r.placeName LIKE :placeName`, {
        placeName: `%${search}%`,
      })
      .getRawMany()
      .then((result: any[]) => {
        // NOTE: 거리 조건에 대한 filter 진행 후 거리순 대한 정렬 작업
        const startIndex = (page - 1) * pageCount;
        return result
          .filter((item) => {
            return (
              this.utilService.latLonToKm(
                [item.latitude, item.longitude],
                [lat, lon],
              ) < range
            );
          })
          .map((item) => {
            return {
              ...item,
              distance: this.utilService.latLonToKm(
                [item.latitude, item.longitude],
                [lat, lon],
              ),
            };
          })
          .sort((a, b) =>
            orderBy === 'DESC'
              ? b[`${sortBy}`] - a[`${sortBy}`]
              : a[`${sortBy}`] - b[`${sortBy}`],
          )
          .slice(startIndex, startIndex + pageCount);
      });

3️⃣ Today I Learned

  • 기능 별 개발에 대한 스케줄을 정하고 수행하는 것에 대한 필요성을 느꼈습니다. 😢
  • 프로젝트를 하면서 cache(캐시) 사용에 대해 배우게 되었는데 이에 대해 정리해 볼 계획입니다!

📁 수행 기업 과제 Repository

이 글이 도움이 되었나요?

신고하기
0분 전
작성된 댓글이 없습니다. 첫 댓글을 달아보세요!
    댓글을 작성하려면 로그인이 필요합니다.