[TIL] 코드 리뷰 & API 최종 수정 사항

김시원·2023년 6월 1일
0

TIL

목록 보기
35/50
post-custom-banner

📌 What I did today

  • 팀원들과 코드 리뷰
  • 환자 이송 신청 API 수정 → 병원 id 설정 추가
  • 증상 보고서 환자 정보 수정 PATCH API => update DTO 정의
import { OmitType } from '@nestjs/mapped-types';
import { CreateReportDto } from './create-report.dto';

export class UpdateReportDto extends OmitType(CreateReportDto, [
  'symptoms',
  'symptom_level',
]) {}
  • 병원 조회 API 반경 몇 km & max_count 쿼리 파람으로 넘기기 (spatial index & ST_Distance_Sphere)
async getHospitalsWithinRadius(
    startLat: number,
    startLng: number,
    radius: number,
  ) {
    return await this.query(
      `
        SELECT geo_id, name, phone, available_beds, latitude, longitude, emogList, ST_Distance_Sphere(Point(${startLng}, ${startLat}),
        point) as 'distance'
        FROM geohospital
        WHERE ST_Distance_Sphere(POINT(${startLng}, ${startLat}), point) < (${radius})
        order by distance;
      `,
    );
  }
  • 종합상황판 웹사이트 크롤링 병원 데이터와 공공데이터 병원 데이터의 차이로 인해 실시간 병상 데이터를 가지고 오지 못하는 병원들 삭제 함수 구현
async getHospitals(): Promise<Hospitals[]> {
    const hospitals = await this.hospitalsRepository.query(
      `
        SELECT * FROM geohospital
      `,
    );
    console.log('hospitals : ', hospitals);

    let emogList = [];
    let count = 0;
    for (const hospital of hospitals) {
      console.log('====================================');
      emogList.push(hospital.emogList);
      const datas = await this.crawling.getNearbyHospitals(emogList);

      console.log('data 수', datas.length);
      if (datas.length === 1) {
        await this.hospitalsRepository.query(`
            DELETE FROM geohospital WHERE emogList = '${hospital.emogList}'
            `);
        count++;
        console.log('삭제된 병원 : ', hospital.name);
      }
      emogList = [];
    }
    console.log('삭제된 병원 수 : ', count);
    return hospitals;
  }
post-custom-banner

0개의 댓글