[2024.06.18 TIL] 내일배움캠프 44일차 (팀프로젝트, 펫시터 API 구현)

My_Code·2024년 6월 18일
0

TIL

목록 보기
57/112
post-thumbnail

본 내용은 내일배움캠프에서 활동한 내용을 기록한 글입니다.


💻 TIL(Today I Learned)

📌 Today I Done

✏️ 펫시터 검색 기능 구현(Controller)

  • 펫시터 관련 여러 API를 만들었지만, 그 중에서도 조금 헷갈리던 펫시터 검색 기능에 대해서 기록을 남길 예정

  • 펫시터 검색 기능은 펫시터의 이름, 경력, 지역, 가격을 기준으로 Query에 검색을 통해서 데이터를 찾음

  • 아래의 코드는 펫시터 검색 기능의 Controller 부분

  // 펫시터 검색 기능
  searchPetsitter = async (req, res, next) => {
    try {
      // 펫시터를 검색하기 위한 쿼리를 가져옴
      const { name, region, price, career } = req.query;
      let petsitters;

      // 각 쿼리로 검색할 때의 where 조건절
      if (name) {
        petsitters = await this.petsitterService.searchPetsitter({ petsitterName: name });
      } else if (region) {
        petsitters = await this.petsitterService.searchPetsitter({ region });
      } else if (price) {
        petsitters = await this.petsitterService.searchPetsitter({ price: { lte: +price } });
      } else if (career) {
        petsitters = await this.petsitterService.searchPetsitter({
          petsitterCareer: { gte: +career },
        });
      } else {
        petsitters = await this.petsitterService.searchPetsitter({});
      }

      return res
        .status(200)
        .json({ status: 200, message: '펫시터 검색에 성공했습니다.', data: { petsitters } });
    } catch (err) {
      next(err);
    }
  };
  • 각 쿼리로 검색할 쿼리에 맞는 데이터를 출력하기 위해서 where절에 넣을 조건 객체를 설정해서 서비스로 넘김

  • 만약 아무런 쿼리가 없으면 그냥 모든 펫시터를 시간 순으로 정렬함


✏️ 펫시터 검색 기능 구현(Service)

  • 펫시터의 Service 코드는 생각보다 간단함

  • 그저 Controller에서 가져온 where 절의 조건을 그대로 Repository에 전달함

  // 펫시터 검색 기능
  searchPetsitter = async (whereCondition) => {
    const petsitters = await this.petsitterRepository.searchPetsitter(whereCondition);

    return petsitters;
  };

✏️ 펫시터 검색 기능 구현(Repository)

  • 펫시티의 Repository 코드도 마찬가지로 간단하게 구현이 가능함

  • 아직까지는 'desc'와 같이 문자열을 그대로 사용했지만 객체화 해서 관리할 예정

  // 펫시터 검색 기능
  searchPetsitter = async (whereCondition) => {
    
    const petsitters = await this.prisma.petsitter.findMany({
      where: whereCondition,
      orderBy: { createdAt: 'desc' },
    });

    return petsitters;
  };


📌 Tomorrow's Goal

✏️ 펫시터 팀프로젝트 기능 구현

  • 오늘 팀원들도 어느정도 필수 구현이 완료되었기에 내일은 코드들을 연결할 예정

  • 원래는 각제 독자적으로 더미 데이터를 이용해서 구현했음

  • 그리고 에러 처리, 유효성 검사 등도 같이 진행할 예정



📌 Today's Goal I Done

✔️ 팀프로젝트 펫시터 API 구현

  • 펫시터에 대한 구현은 생각보다 그렇게 어렵진 않았음

  • 하지만 3계층으로 분리된 만큼 생각해야 하는게 많았고 아직까지 낯설게 느껴짐

  • 오늘은 펫시터 검색, 목록 조회, 상세 조회, 수정, 예약 현황 조회, 예약 상태 변경 API를 구현함

  • 펫시터 예약 현황 예약 상태 변경 API는 예약 테이블에 접근해서 조회하거나 수정해야 하는데 petsitter.repository 에 넣는게 맞는지 잘 모르겠음

  • 펫시터 검색 기능에서는 코드 자체의 난이도가 있는 것은 아니었지만 처음에 이름, 경력, 가격, 지역에 대한 쿼리를 어떻게 처리할 지에 대해 고민을 많이함


profile
조금씩 정리하자!!!

0개의 댓글