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(캐시) 사용에 대해 배우게 되었는데 이에 대해 정리해 볼 계획입니다!
Ghost