[WIL] 내일배움캠프 12주차

My_Code·2024년 7월 8일
0

TIL

목록 보기
74/112
post-thumbnail

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


💻 WIL(Weekly I Learned)

📌 주간 학습 목차

✏️ 월요일

  • 개인과제가 발제되어 티켓 예매 서비스를 주제로 프로젝트를 진행함

  • 첫 날이기에 기본적인 설계인 ERD와 API 명세서를 작성함

  • 나는 처음부터 도전 과제인 지정 좌석 예매 기능을 넣을 것이기 때문에 ERD가 다소 복잡해짐

  • 공연은 한 번만 진행하는 것이 아니라 시간에 따라 여러 번 진행됨

  • 그렇기에 공연은 공연 시간이라는 테이블을 여러 개 가져야 함

  • 생각보다 ERD에서 시간이 너무 오래 걸려서 기본적인 파일의 구조만 만들었음


✏️ 화요일

  • 관리자만이 사용할 수 있는 공연 등록 기능을 구현함

  • 공연을 등록하는 로직이 생각보다 길어지고 관계가 만들어진 엔티티가 많아서 거의 하루 종일 구현함

  • 그리고 트랜젝션과 Multer & AWS S3를 구현하는 과정에서 원인 모르는 에러가 발생했음

  • 몇 시간동안 에러를 해결하려고 노력했고 결국 .env의 키 이름 오타로 인해 발생했다는 것을 찾음


✏️ 수요일

  • 공연과 관련된 조회 및 검색 기능을 구현함

  • 사실 이 날 작성한 TIL을 모르고 삭제해서 TIL 기록이 남지 않았음

  • 처음에는 다시 작성할까 했는데 양이 너무 많아서 일단 보류함

  • 공연 목록 조회와 상세 조회는 그냥 데이터베이스 Show 테이블에서 해당하는 데이터를 검색함

  • 공연 검색은 사용자가 입력한 검색어를 쿼리 스트링을 통해서 가져와서 Service에 넘김


✏️ 목요일

  • 좌석 정보 추가 및 좌석 예매 기능을 구현함

  • 좌석 정보 생성은 특히나 고민을 많이 했음

  • 그래서 처음에 ERD에서의 관계라든지, 컬럼 설정 등을 굉장히 고민을 많이 했음

  • 공연 하나에는 여러 시간대가 있기 때문에 시간대 별 레코드 데이터가 필요하고 그 시간대별 데이터에는 좌석의 수를 관리하는 테이블이 필요함

  • 그리고 좌석 정보는 공연, 시간에 따라서 좌석의 정보가 필요하기에 그에 대한 관계를 설정하느라 엔티티를 많이 수정함


✏️ 금요일

  • 티켓 예매 취소 기능을 구현함

  • 예매 취소는 좌석 예매 기능과 유사한 점이 많았음

  • 트랜젝션을 이용해서 사용자 포인트, 좌석 수, 좌석 상태, 티켓 상태을 묶어서 진행하면되기에 좌석 예매 기능과 구조는 크게 다르지 않았음

  • 그리고 업데이트한 Insomnia가 망가졌음

  • 수정이 끝나고 Multipart 형태로 공연 등록 API를 테스트하니 무언가 이상한게 보였음

  • 내가 Send 버튼을 눌러서 보낸 값이 바로바로 적용되지 않는 것임

  • 결과적으로 다운그레이드를 통해서 멀쩡한 예전 버전으로 바꿔서 해결을 함



📌 향후 계획

  • 기본적인 기능 구현이 끝났으니 추가적인 예외처리나 빠진 부분이 없는지 확인하는 작업을 진행할 예정

  • 그리고 API 명세서는 아직 내용이 구체적으로 채워지지 않았기에 코드와 Insomnia를 기반으로 작성할 예정

  • ERD 역시 기능을 구현하면서 추가된 컬럼도 있고 추가로 생긴 관계도 있기 때문에 그에 맞춰서 수정할 예정

  • 마지막으로는 Readme 파일을 작성해서 구현한 내용들을 간단하게 정리할 예정



📌 이번 주 느낀 점

  • 한 줄 요약 : Nest.js야 살려줘

  • 위에서 말한 것은 농담이고, Nest.js가 어렵긴 하지만 그래도 생각보다 유용한 기능들이 많아서 놀랐음

  • 다만 제공하는 기능들이 너무 많아서 이번 과제랑 강의만으로는 온전히 이해하는 것은 어려웠음

  • 특히, Express와 다르게 Nest.js에서 자동으로 지원해주는 과정들이 있어서 서버가 돌아가는 과정을 한번에 이해하기 어려웠음

  • 그래도 공식문서, 블로그, 튜터님께 헬프 요청을 통해서 어느 정도 실행에 대한 흐름을 파악할 수 있었음

  • 앞으로의 과제는 Nest.js와 TypeORM을 사용할 것 같기 때문에, 조금 더 공부가 필요할 것 같음

  • (공식문서를 다시 정독하자!!)

profile
조금씩 정리하자!!!

0개의 댓글