1차 프로젝트 - Code Review

soojung61·2일 전
0

project

목록 보기
3/3

1차 프로젝트 시 장바구니 기능을 구현하면서 transaction을 사용해봐서 코드 리뷰를 해보겠습니다.

먼저, 생각해야 할 조건이 세가지 있었습니다.

  1. 유저의 장바구니가 비어있는 경우
  2. 장바구니에 상품이 존재하지만 요청으로 들어온 상품은 장바구니에 존재하지 않는 경우
  3. 장바구니에 이미 담긴 상품의 요청이 또 들어오는 경우

유저의 장바구니가 비어있는 경우

이 경우, 유저의 장바구니 자체를 생성한 후, 그 장바구니와 제품이 연결된 중간테이블도 만들어줘야 합니다.

transaction을 사용하여 해당하는 유저의 Order 객체를 생성 후, 그 order와 요청으로 온 product에 맞는 ProductOrder 객체도 만들어 줍니다.
그 후, 제품의 재고를 요청으로 들어온 수량만큼 뺀 후 200을 응답합니다.

장바구니에 상품이 존재하지만 요청으로 들어온 상품은 장바구니에 존재하지 않는 경우

이 경우는 해당하는 유저의 Order 객체 중 아직 주문 전 상태인(pending) 객체를 불러와 그 order와 요청으로 온 product에 맞는 ProductOrder객체를 만듭니다.

그 후, 제품의 재고에서 요청 수량만큼 뺀 후 200을 응답합니다.

장바구니에 이미 담긴 상품의 요청이 또 들어온 경우

이 경우, 유저가 제품을 추가로 더 담는것이므로, 유저, 유저의 order 중 주문전인 order 와 해당하는 product에 맞는 ProductOrder 객체를 찾아 수량만 업데이트 해줍니다.

request로 들어온 요청만큼 주문 수량에 더해주면서, 제품의 재고를 요청 수량만큼 빼줍니다.


이번 프로젝트에 꼭 transaction을 사용해보자 라는 목표가 있었기에 장바구니 기능을 구현하면서 transaction을 사용한 것은 좋은 경험이었습니다 😄

profile
개발자 공부중입니다 :)

0개의 댓글