항해99 주특기심화- 팀과제 프로젝트

한동훈·2022년 8월 5일
0

항해99

목록 보기
16/29

내가 담당하는 기능/역할

요구사항

기능

- **대댓글**
    - **`200`** AccessToken이 있고, 유효한 Token일 때(== 로그인 상태일 때)만 댓글/대댓글 작성 가능하게 하기
    - 댓글 리스트 response할 때 대댓글 리스트도 모두 포함해서 보여주기
    - **`Exception`** AccessToken이 없거나, 유효하지 않은 Token일 때 ‘로그인이 필요합니다.’를 200 정상 응답으로 나타내기
    - **API 종류**
        1.  대댓글 목록 조회 API
            - AccessToken이 없어도 댓글 목록 조회가 가능하도록 하기
            - 조회하는 게시글에 작성된 모든 댓글을 response에 포함하기
        2. 대댓글 작성 API
            - AccessToken이 있고, 유효한 Token일 때만 댓글 작성이 가능하도록 하기
        3. 대댓글 수정 API
            - AccessToken이 있고, 유효한 Token이면서 해당 사용자가 작성한 댓글만 수정 가능하도록 하기
        4. 대댓글 삭제 API
            - AccessToken이 있고, 유효한 Token이면서 해당  사용자가 작성한 댓글만 삭제 가능하도록 하기
        

기능 구현 :

  1. 대댓글

    @Builder
    @Getter
    @NoArgsConstructor
    @AllArgsConstructor
    @DynamicInsert
    @Entity
    public class Recomment extends Timestamped{
    
    // 기본키
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    // 외래키
    @JoinColumn(name = "member_id", nullable = false)
    @ManyToOne(fetch = FetchType.LAZY)
    private Member member;
    
    // 외래키
    // 디폴트로 pk값을 가져온다.
    @JoinColumn(name = "post_id", nullable = false)
    // fetch = FetchType.LAZY 지연참조
    // 다른내용을 항상 참조할 필요는 없다.
    @ManyToOne(fetch = FetchType.LAZY)
    private Post post;
    
    @JoinColumn(name = "comment_id", nullable = false)
    @ManyToOne(fetch = FetchType.LAZY)
    private Comment comment;
    
    @Column(nullable = false)
    private String content;
    
    @Column(name = "likes_count")
    @ColumnDefault("0") //default 0
    private Integer likes_count;
    
    public void updatelike_count(Integer postlike_count){
        this.likes_count = postlike_count;
    
    }
    public void update(RecommentRequestDto recommentRequestDto) {
        this.content = recommentRequestDto.getContent();
    }
    
    public boolean validateMember(Member member) {
        return !this.member.equals(member);
    }
}
profile
돌덩이

0개의 댓글