위코드 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하는 것이 중요하다는 걸 깨달은 코드 작성이였습니다!