위코드 1차 프로젝트 진행시 공부한 내용을 정리하였습니다.
장바구니에 POST하는 API를 다 만들고 나서 코드 refactoring하는 시간을 가지다 연속해서 장바구니 버튼을 눌렀을 때 수량이 변경되는 코드로 바꾸고 싶다는 생각을 하였습니다.
기존에 있는 코드에서 조금만 수정하면 될것같았는데 생각보다 쉽지 않은 작업이였습니다.🥹
INSERT INTO carts(
item_id, user_id, quantity)
VALUES(?,?,?),
[itemId, userId, quantity]
)
기존에 제가 작성한 코드입니다. 리스트 & 상세페이지에서 장바구니 버튼을 누르면 단순히 장바구니에 추가되는 코드를 작성했었습니다. 이렇게 작성하다보니 연속추가하는 기능은 구현할 수 없었습니다.
const [cartItem] = await appDataSource.query(
SELECT
id,quantity
FROM carts
WHERE item_id = ?
`,
[itemId]
) //(1)
if (!cartItem) {
return await appDataSource.query(
INSERT INTO carts
(item_id, user_id, quantity)
VALUES (?, ?, ?)`,
[itemId, userId, quantity]
)
} //(2)
const cartId = cartItem.id
const cartQuantity = cartItem.quantity
const newQuantity = cartQuantity + quantity
//(3)
return await appDataSource.query(
`UPDATE carts
SET quantity = ${newQuantity}
WHERE id = ${cartId}`
)
} //(4)
이렇게 정리를 하고 보니 정말 많은 refactoring이 있었네요!
코드를 다 작성하였다고 끝난 것이 아니라 계속해서 분석하면서 refactoring하는 것이 중요하다는 걸 깨달은 코드 작성이였습니다!