Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Be/#185 Comment 도메인 리팩토링 및 테스트 코드 수정 #187

Merged
merged 9 commits into from
Aug 18, 2023
8 changes: 0 additions & 8 deletions backend/Dockerfile

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package com.graphy.backend.domain.comment.controller;

import com.graphy.backend.domain.comment.dto.request.CreateCommentRequest;
import com.graphy.backend.domain.comment.dto.request.UpdateCommentRequest;
import com.graphy.backend.domain.comment.dto.response.CreateCommentResponse;
import com.graphy.backend.domain.comment.dto.response.GetReplyListResponse;
import com.graphy.backend.domain.comment.service.CommentService;
import com.graphy.backend.domain.member.domain.Member;
import com.graphy.backend.global.auth.jwt.annotation.CurrentUser;
Expand All @@ -16,7 +20,6 @@

import java.util.List;

import static com.graphy.backend.domain.comment.dto.CommentDto.*;

@Tag(name = "CommentController", description = "댓글 관련 API")
@RestController
Expand All @@ -27,35 +30,39 @@ public class CommentController {

@Operation(summary = "createComment", description = "댓글 생성")
@PostMapping
public ResponseEntity<ResultResponse> createComment(@Validated @RequestBody CreateCommentRequest dto, @CurrentUser Member loginUser) {
CreateCommentResponse response = commentService.createComment(dto, loginUser);
public ResponseEntity<ResultResponse> commentAdd(@Validated @RequestBody CreateCommentRequest dto,
@CurrentUser Member loginUser) {
commentService.addComment(dto, loginUser);

return ResponseEntity.status(HttpStatus.CREATED)
.body(ResultResponse.of(ResultCode.COMMENT_CREATE_SUCCESS, response));
.body(ResultResponse.of(ResultCode.COMMENT_CREATE_SUCCESS));
}

@Operation(summary = "updateComment", description = "댓글 수정")
@PutMapping("/{commentId}")
public ResponseEntity<ResultResponse> updateComment(@Validated @RequestBody UpdateCommentRequest dto, @PathVariable Long commentId, @CurrentUser Member loginUser) {
commentService.updateComment(commentId, dto);
Comment on lines -39 to -40
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@currentuser 같은 경우에는 당장 사용하지 않아서 삭제하신 거죠!? 댓글은 작성자만 삭제할 수 있도록 하는 로직이 나중에는 필요할 것 같긴해요 !

public ResponseEntity<ResultResponse> commentUpdate(@Validated @RequestBody UpdateCommentRequest dto,
@PathVariable Long commentId,
@CurrentUser Member loginUser) {
commentService.modifyComment(commentId, dto);

return ResponseEntity.status(HttpStatus.OK)
.body(ResultResponse.of(ResultCode.COMMENT_UPDATE_SUCCESS));
}

@Operation(summary = "deleteComment", description = "댓글 삭제")
@DeleteMapping("/{id}")
public ResponseEntity<ResultResponse> deleteComment(@PathVariable Long id, @CurrentUser Member loginUser) {
public ResponseEntity<ResultResponse> commentDelete(@PathVariable Long id,
@CurrentUser Member loginUser) {
commentService.deleteComment(id);
return ResponseEntity.status(HttpStatus.OK)
.body(ResultResponse.of(ResultCode.COMMENT_DELETE_SUCCESS));
}

@Operation(summary = "getReComment", description = "답글 조회")
@GetMapping("/{commentId}")
public ResponseEntity<ResultResponse> getReComment(@PathVariable Long commentId) {
List<GetReplyListResponse> replyList = commentService.getReplyList(commentId);
public ResponseEntity<ResultResponse> commentDetails(@PathVariable Long commentId) {
List<GetReplyListResponse> result = commentService.findCommentList(commentId);
return ResponseEntity.status(HttpStatus.OK)
.body(ResultResponse.of(ResultCode.RECOMMENT_GET_SUCCESS, replyList));
.body(ResultResponse.of(ResultCode.RECOMMENT_GET_SUCCESS, result));
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.graphy.backend.domain.comment.dto.request;

import com.graphy.backend.domain.comment.domain.Comment;
import com.graphy.backend.domain.member.domain.Member;
import com.graphy.backend.domain.project.domain.Project;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CreateCommentRequest {

@NotBlank
private String content;

@NotNull
private Long projectId;

private Long parentId;

public Comment toEntity(Project project,
Comment parentComment,
Member member) {
return Comment.builder()
.member(member)
.content(content)
.parent(parentComment)
.project(project)
.build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.graphy.backend.domain.comment.dto.request;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;

@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UpdateCommentRequest {
@NotBlank
private String content;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.graphy.backend.domain.comment.dto.response;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class CreateCommentResponse {
private Long commentId;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.graphy.backend.domain.comment.dto.response;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class GetCommentWithMaskingResponse {
private String content;
private Long commentId;
private LocalDateTime createdAt;
private String nickname;
private Long childCount;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.graphy.backend.domain.comment.dto.response;

import com.graphy.backend.domain.comment.domain.Comment;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class GetReplyListResponse {
private String nickname;
private String content;
private Long commentId;
private LocalDateTime createdAt;

public static GetReplyListResponse from(Comment comment) {
return GetReplyListResponse.builder()
.nickname(comment.getMember().getNickname())
.content(comment.getContent())
.commentId(comment.getId())
.createdAt(comment.getCreatedAt())
.build();
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package com.graphy.backend.domain.comment.repository;


import com.graphy.backend.domain.comment.domain.Comment;
import com.graphy.backend.domain.comment.dto.response.GetCommentWithMaskingResponse;
import com.graphy.backend.domain.comment.dto.response.GetReplyListResponse;

import java.util.List;

import static com.graphy.backend.domain.comment.dto.CommentDto.*;

public interface CommentCustomRepository {
List<GetCommentWithMaskingResponse> findCommentsWithMasking(Long id);
List<GetReplyListResponse> findReplyList(Long parentId);
List<Comment> findReplyList(Long parentId);
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
package com.graphy.backend.domain.comment.repository;

import com.graphy.backend.domain.comment.domain.Comment;
import com.graphy.backend.domain.comment.domain.QComment;
import com.graphy.backend.domain.comment.dto.response.GetCommentWithMaskingResponse;
import com.graphy.backend.domain.comment.dto.response.GetReplyListResponse;
import com.querydsl.core.types.Projections;
import com.querydsl.core.types.dsl.CaseBuilder;
import com.querydsl.jpa.impl.JPAQueryFactory;
import lombok.RequiredArgsConstructor;


import java.util.List;

import static com.graphy.backend.domain.comment.domain.QComment.comment;
import static com.graphy.backend.domain.comment.dto.CommentDto.*;
import static com.graphy.backend.domain.member.domain.QMember.member;

@RequiredArgsConstructor
Expand Down Expand Up @@ -41,18 +44,10 @@ public List<GetCommentWithMaskingResponse> findCommentsWithMasking(Long id) {
}

@Override
public List<GetReplyListResponse> findReplyList(Long parentId) {
public List<Comment> findReplyList(Long parentId) {
return jpaQueryFactory
.select(Projections.constructor(GetReplyListResponse.class,
new CaseBuilder()
.when(comment.isDeleted.isTrue()).then("삭제된 댓글입니다.")
.otherwise(comment.content),
comment.id,
comment.createdAt,
member.nickname
))
.from(comment)
.join(comment.member, member)
.selectFrom(comment)
.join(comment.member, member).fetchJoin()
.where(comment.parent.id.eq(parentId))
.orderBy(comment.createdAt.asc())
.fetch();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@

import com.graphy.backend.domain.comment.domain.Comment;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;


public interface CommentRepository extends JpaRepository<Comment, Long>, CommentCustomRepository {
Expand Down
Loading
Loading