8. Post 모델 만들기, API 만들기
이제, 우리가 서비스에 글을 쓸 때 사용 할 Post 라는 모델을 만들고, 이를 생성하고 목록을 보여주는 API 를 만들어보도록 하겠습니다.
우선 우리가 만들 포스트 모델의 요구사항은 다음과 같습니다:
- Post 모델에는 다음 값들을 지니고 있습니다.
- 생성된 날짜
- 몇번째 생각인지 알려주는 값
- 유저명
- 내용
- 좋아요 갯수
- 좋아한사람들 배열
- 덧글 서브 다큐먼트 배열
- 유저가 좋아요를 할 때엔 따로 Like 모델을 사용하는게 아니라, 해당 다큐먼트의 좋아요 갯수를 1 추가하거나 감소시킵니다.
- 특정 유저가 좋아요를 했는지 하지 않았는지 여부를 확인 할 때엔 좋아한 사람들 배열을 사용합니다. 만약에 좋아한다면 이 안에 자신의 유저명이 들어있고, 그렇지 않다면 없습니다.
- 포스트의 덧글은 서브다큐먼트 형식으로 있으며, 가장 최근 작성된 덧글이 맨 위에있고, 담고있는 값들은 다음과 같습니다:
- 생성된 날짜
- 유저명
- 덧글 내용
그리고, 기능적 요구사항으로는, 한번 작성된 포스트는 수정되거나 삭제 될 수 없으며, 덧글 또한 마찬가지입니다.
좋아요 기능의 경우엔 취소가 가능합니다.
추가적으로 우리가 이 모델안에 만들어아 햘 임의 메소드들은 다음과 같습니다
- 작성
- 리스팅
- 리스팅의 경우엔 옴션에 따라 다른 방식으로 작동합니다.
- 기본적으로는 전체 포스트 20개를 불러옵니다.
- username 값이 주어지면 특정 유저의 포스트를 불러옵니다
- cursor 가 주어지면 특정 아이디 이전의 포스트들 20개를 불러옵니다 (추가 로딩시 사용됩니다)
- 이 메소드를 호출한 유저가 로그인중일 경우, self 란 옵션이 설정되며 이 값에 따라 해당유저가 각 포스트를 좋아요를 했는지를 판별합니다
- 리스팅의 경우엔 옴션에 따라 다른 방식으로 작동합니다.
- 좋아요
- 좋아요 취소
- 덧글 작성
이번 8장에서는 작성 부분과 리스팅 부분을 구현합니다.