팀 프로젝트 5일차 기술 회고

·2022년 5월 14일
0

팀 프로젝트

목록 보기
7/34

오늘은 토요일이지만 금요일에도 작업을 했으니 올려야한다.

간단한 중간 점검이 있었는데 딱히 할 말이 없었는지 그냥 이대로 진행하면 될 것 같다는 이야기를 들어서
팀원들 모두 뿌듯해있는 상황이라서 좋다!

쪽지 시스템 구현

게시판의 검색 문제는 아직 해결이 되지 않았고(오늘 토요일맞다) 쪽지 시스템부터 일단 해결을 해야할 것 같아서 만들어놨다.

어떤 구조로 짜면 좋을까 고민을 좀 해봤는데

  1. 유저는 1개의 쪽지함을 가지고 있고
  2. 쪽지함 속에는 보낸 쪽지함, 받은 쪽지함이 1:N의 구조로 있다!

라고 생각을 했는데 쪽지함 하나에 테이블이 3개...?라고 해서 그냥 검색해봤다.

그러던 와중 이런 글을 발견하게 되었다. => https://meetup.toast.com/posts/108

구조가 너무 명확하고 쉽게 나와있어서 이것으로 진행을 하자! 라고 바로 작업에 들어갔다.

쪽지 시스템을 왜 만들게 되었냐면 팀프로젝트로 작업하는 사이트가 커뮤니티성도 짙고 이벤트가 많을 것 같아서
통신(?) 수단이 필요하다고 생각이 들어서 쪽지로 결정하게 되었다.

채팅을 넣어보자는 이야기도 있긴 했는데, 웹소켓을 어떻게 해야할지 갈피를 잡지 못한 상황이였고
그냥 쪽지 만들어놓고 거기에 오픈카톡링크 보내면 될 것 같은데? 라고 의견이 나와서 쪽지로 결정하게 되었다.


조금 신경을 쓴 것은 messageState 인데 거창한 것까진 아니고
보지 않은 쪽지가 있을 경우 프론트엔드에서 팝업이라던가 알람을 띄워주기 위하여 구성을 해놓았다.

해보고 싶었는데 잘 되지 않은 것

맨 처음 받은 쪽지함을 보면 받은 쪽지의 리스트들이 존재하고, 그것을 누르면 내용을 볼 수 있는 디테일로 넘어가게 된다.

쪽지를 한번 보낼 때, 보낸 유저는 보낸 쪽지함에 해당하는 쪽지가 들어가고
받은 유저는 받은 쪽지함에 해당하는 쪽지가 들어가있게 된다.

그리고 삭제를 할 경우에는 쪽지의 리스트에서 제외가 되는 구조로 되어있는데
양쪽 다 지울 경우에 messageInfo 에서도 지우기 위하여

이벤트 트리거를 사용을 해보려고 코드를 적어봤는데.....

afterInsert같은 경우 event.entity에 해당하는 정보들이 다 들어있는데
그것을 제외하고 다른 이벤트들에는 도대체가 값이 없다. 별걸 다 들어가서 콘솔 다찍어봤는데도 뭔가 나오지가 않았다.

그래서 검색을 하던 와중 위의 코드처럼 event.connection.getRepository를 사용하는 코드를 적어봤는데
데이터는 불러와지는데, 한번 업데이트를 한 이후의 데이터만 불러와지고 또 다시 갱신이 되어있는 데이터는 불러오지 않더라.

원래는 한쪽에서 지우면 deleteCheckData가 number라서 +1이 되고
양쪽에서 둘 다 지우면 +2가 되어서 그것을 캐치해서 메세지 서비스 내부의 코드가 아니라 트리거로 빼가지고 지우려고 했는데 해결을 못했다..

생각만 해본 것

사실 맨처음 쪽지 시스템을 구상할 때, 레디스를 써보는건 어떨까? 라는 생각을 해보았는데
이게 말처럼 쉽지가 않았다.

레디스에 리스트 형태의 구조나 다른 여러 구조들이 있는 것은 알고 있는데
도대체가 어떤 옵션을 추가를 해줘야 쓸 수 있는건지 기본적으로 제공하는 레디스의 문법이 코드상에서 아예 없는 옵션이라 엎어버렸다.

뭐 이야기를 듣기로는 store에 지금은 redisStore를 사용하는데 다른 것을 사용할 경우에 추가적인 구현이 가능하다고 본 것 같은데..
한번 찾아보던가 해야할 것 같다.

profile
물류 서비스 Backend Software Developer

0개의 댓글