<Project 2 - KREAM >
기간 : 2주
팀원 : 프론트 2명 (PM) / 백엔드 4명
필수 구현 사항 : 로그인, 회원가입, 리스트페이지, 상품 디테일페이지 ,주문, 결제
이번 KREAM에 대한 모식도를 그렸다
모식도를 그려야겠다라고 생각한 계기가 있었다.
먼저 ERD가 확정된 상태에서 한정적인 정보를 받고 client 가 필요한 정보를 뽑아내야하는 상황이라 상당히 코드가 복잡해지겠다 생각이 들었다.
두번째는 즉시판매/구매 와 판매/구매 입찰 을 어떻게 구현해야할지 감이 오지를 않아서다.
나의 담당부분은 하단의 즉시구매계속 버튼을 누르면 시작이 된다.
client로부터 POST 의 body 로부터 userid /price/ productid/ size 4가지를 받고 나서 bid 라는 테이블(채결 전의 주문서)에 작성을 해야한다.
bid 라는 테이블의 column에는 bid_product_size_id 라는 product_id,size_id의 join 테이블의 id를 담아낸다.
1차로 size는 220 과 같은 숫자로 받지만 테이블에는 type 이라는 문자열로서 고정값으로 저장되어있고 size_id를 먼저 구하는 코드를 짜야한다.
const getSizeId = async (size) => {
const sizeId = await AppDataSource.query(
`select
sizes.id
from sizes
where type = ?`,
[size]
);
return sizeId;
};
그리고 2차적으로 bid_product_size_id 를 먼저 구하는 코드를 작성을 해야한다.
const searchBidProductSize = async (productId, getSizeId) => {
const searchBidProductSize = await AppDataSource.query(
`select
bid_product_size.id
from bid_product_size
where product_id = ?
and size_id = ?`,
[productId, getSizeId]
);
return searchBidProductSize;
};
내가 그린 모식도에서 이 두 가지 코드가 제일 기본적으로 자주 사용되는 필요한 정보다.
맨 처음에는 채결에 대한 과정을 모르겠어서 입찰(bid)를 먼저 작성했다. 구해온 bid_product_size_id를 나머지 정보들과 함께 작성한다.
const bidSellId = await queryRunner.query(
`insert into
bid_sells
(seller_id,bid_product_size_id,status,price)
values (?,?,?,?)`,
[sellerId, bidProductSizeId, status, price]
여기까지가 입찰주문서를 작성한 코드들이다.
이제부터 채결에 관한 코드를 작성해야하는데 채결에 관한 이해가 부족한것 같다. 해당 이해과정은 다음 글에서 올리겠다!