[배민문방구] 찜목록을 만들고 싶어! ProductLikeView

code_sign·2021년 2월 28일
1
post-thumbnail

머리속으로 그려보기☀️

배민의 경우에는 좀 독특한 방식의 찜하기를 지원하고 있다.
위에서처럼 하트를 누르는 동시에 찜리스트 목록으로 이동한다.

그리고 마치 생김새도 장바구니의 하위 호환처럼 생겼다.
(내가 생각한 찜목록과 전혀 다르다!)

이것을 구현하려면,
RESTful하게 하려면, GET POST를 한번씩 해야하는건지,
아니면 POST/GET에서 다른 것의 역할까지 해야하는지 많은 고민을 했다.

결국 Frontend에서 두번 요청하는 것으로 하였다.

실제 코드 짜기🚀

일단 찜 기능은 회원을 타겟으로 한 기능이기에 login-decorator기능을 활용했다.

My Page에서 볼 수 있는 GET

일단 로직자체는 간단하다.
로그인을 성공하면 login-decorator에서 request.userpayload에 담긴 정보를 담아준다. (유저 id)

그것을 바탕으로 productlike_set을 활용하여 모든것을 가져온다.
(userproductlike는 M2M 관계다.)

하트를 눌렀을때 delete_or_create

찜을 처음하는 상품이라면 당연히 create를 하지만, 이미 찜한 상품이라면?!
그럴땐 언팔의 기능처럼 찜을 취소해야 할 것이다.
그래서 이미 있는 상품에 대해선 delete를 시켜준다.

profile
방탈출 좋아하는 코딩덕후

0개의 댓글