Skip to content

Commit f63bfd3

Browse files
committed
CLAP-220 Fix: 댓글 관련 아키텍처 구조에 맞게 전체 수정
1 parent 98552f9 commit f63bfd3

File tree

14 files changed

+80
-57
lines changed

14 files changed

+80
-57
lines changed

src/main/java/clap/server/adapter/inbound/web/comment/CommandCommentController.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
package clap.server.adapter.inbound.web.comment;
22

33
import clap.server.adapter.inbound.security.SecurityUserDetails;
4-
import clap.server.adapter.inbound.web.dto.task.PostAndEditCommentRequest;
5-
import clap.server.application.port.inbound.comment.CommandCommentUsecase;
4+
import clap.server.adapter.inbound.web.dto.comment.EditCommentRequest;
5+
import clap.server.application.port.inbound.comment.DeleteCommentUsecase;
6+
import clap.server.application.port.inbound.comment.EditCommentUsecase;
67
import clap.server.common.annotation.architecture.WebAdapter;
78
import io.swagger.v3.oas.annotations.Operation;
89
import io.swagger.v3.oas.annotations.Parameter;
910
import io.swagger.v3.oas.annotations.enums.ParameterIn;
1011
import io.swagger.v3.oas.annotations.tags.Tag;
12+
import jakarta.validation.Valid;
1113
import lombok.RequiredArgsConstructor;
1214
import org.springframework.security.access.annotation.Secured;
1315
import org.springframework.security.core.annotation.AuthenticationPrincipal;
@@ -20,7 +22,8 @@
2022
@RequestMapping("/api/comment")
2123
public class CommandCommentController {
2224

23-
private final CommandCommentUsecase commandCommentUsecase;
25+
private final EditCommentUsecase editCommentUsecase;
26+
private final DeleteCommentUsecase deleteCommentUsecase;
2427

2528
@Operation(summary = "댓글 수정")
2629
@Parameter(name = "commentId", description = "수정할 댓글 고유 ID", required = true, in = ParameterIn.PATH)
@@ -29,8 +32,8 @@ public class CommandCommentController {
2932
public void editComment(
3033
@AuthenticationPrincipal SecurityUserDetails userInfo,
3134
@PathVariable Long commentId,
32-
@RequestBody PostAndEditCommentRequest request) {
33-
commandCommentUsecase.updateComment(userInfo.getUserId(), commentId, request);
35+
@Valid @RequestBody EditCommentRequest request) {
36+
editCommentUsecase.editComment(userInfo.getUserId(), commentId, request);
3437
}
3538

3639
@Operation(summary = "댓글 삭제", description = "첨부파일 댓글일 경우 request body에 삭제할 파일 ID를 리스트로 전달")
@@ -40,7 +43,7 @@ public void editComment(
4043
public void deleteComment(
4144
@AuthenticationPrincipal SecurityUserDetails userInfo,
4245
@PathVariable Long commentId) {
43-
commandCommentUsecase.deleteComment(userInfo.getUserId(), commentId);
46+
deleteCommentUsecase.deleteComment(userInfo.getUserId(), commentId);
4447
}
4548

4649
}
Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,31 @@
11
package clap.server.adapter.inbound.web.comment;
22

33
import clap.server.adapter.inbound.security.SecurityUserDetails;
4-
import clap.server.adapter.inbound.web.dto.task.PostAndEditCommentRequest;
5-
import clap.server.application.port.inbound.comment.PostCommentUsecase;
4+
import clap.server.adapter.inbound.web.dto.comment.CreateCommentRequest;
5+
import clap.server.application.port.inbound.comment.SaveCommentAttachmentUsecase;
6+
import clap.server.application.port.inbound.comment.SaveCommentUsecase;
67
import clap.server.common.annotation.architecture.WebAdapter;
78
import io.swagger.v3.oas.annotations.Operation;
89
import io.swagger.v3.oas.annotations.Parameter;
910
import io.swagger.v3.oas.annotations.enums.ParameterIn;
1011
import io.swagger.v3.oas.annotations.tags.Tag;
12+
import jakarta.validation.Valid;
1113
import jakarta.validation.constraints.NotNull;
1214
import lombok.RequiredArgsConstructor;
1315
import org.springframework.security.access.annotation.Secured;
1416
import org.springframework.security.core.annotation.AuthenticationPrincipal;
1517
import org.springframework.web.bind.annotation.*;
1618
import org.springframework.web.multipart.MultipartFile;
1719

18-
import java.util.List;
19-
2020
@Tag(name = "02. Task [생성/수정]", description = "작업 생성/수정 API")
2121
@WebAdapter
2222
@RestController
2323
@RequiredArgsConstructor
2424
@RequestMapping("/api/comment")
2525
public class PostCommentController {
2626

27-
private final PostCommentUsecase postCommentUsecase;
27+
private final SaveCommentUsecase saveCommentUsecase;
28+
private final SaveCommentAttachmentUsecase saveCommentAttachmentUsecase;
2829

2930
@Operation(summary = "댓글 작성")
3031
@Parameter(name = "taskId", description = "댓글 작성할 작업 고유 ID", required = true, in = ParameterIn.PATH)
@@ -33,8 +34,8 @@ public class PostCommentController {
3334
public void createComment(
3435
@AuthenticationPrincipal SecurityUserDetails userInfo,
3536
@PathVariable Long taskId,
36-
@RequestBody(required = true) PostAndEditCommentRequest request){
37-
postCommentUsecase.save(userInfo.getUserId(), taskId, request);
37+
@Valid @RequestBody CreateCommentRequest request){
38+
saveCommentUsecase.save(userInfo.getUserId(), taskId, request);
3839
}
3940

4041
@Operation(summary = "댓글 작성(첨부 파일)")
@@ -45,7 +46,7 @@ public void createAttachmentComment(
4546
@AuthenticationPrincipal SecurityUserDetails userInfo,
4647
@PathVariable Long taskId,
4748
@RequestPart(name = "attachment") @NotNull MultipartFile attachment) {
48-
postCommentUsecase.saveCommentAttachment(userInfo.getUserId(), taskId, attachment);
49+
saveCommentAttachmentUsecase.saveCommentAttachment(userInfo.getUserId(), taskId, attachment);
4950
}
5051

5152
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package clap.server.adapter.inbound.web.dto.comment;
2+
3+
import io.swagger.v3.oas.annotations.media.Schema;
4+
import jakarta.validation.constraints.NotBlank;
5+
6+
public record CreateCommentRequest(
7+
@Schema(description = "댓글 내용")
8+
@NotBlank
9+
String content
10+
) {
11+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package clap.server.adapter.inbound.web.dto.comment;
2+
3+
import io.swagger.v3.oas.annotations.media.Schema;
4+
import jakarta.validation.constraints.NotBlank;
5+
6+
public record EditCommentRequest(
7+
@Schema(description = "댓글 내용")
8+
@NotBlank
9+
String content
10+
) {
11+
}

src/main/java/clap/server/adapter/inbound/web/dto/task/PostAndEditCommentRequest.java

Lines changed: 0 additions & 10 deletions
This file was deleted.

src/main/java/clap/server/application/port/inbound/comment/CommandCommentUsecase.java

Lines changed: 0 additions & 10 deletions
This file was deleted.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package clap.server.application.port.inbound.comment;
2+
3+
public interface DeleteCommentUsecase {
4+
5+
void deleteComment(Long userId, Long commentId);
6+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package clap.server.application.port.inbound.comment;
2+
3+
import clap.server.adapter.inbound.web.dto.comment.EditCommentRequest;
4+
5+
public interface EditCommentUsecase {
6+
7+
void editComment(Long userId, Long commentId, EditCommentRequest request);
8+
}

src/main/java/clap/server/application/port/inbound/comment/PostCommentUsecase.java

Lines changed: 0 additions & 13 deletions
This file was deleted.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package clap.server.application.port.inbound.comment;
2+
3+
import org.springframework.web.multipart.MultipartFile;
4+
5+
public interface SaveCommentAttachmentUsecase {
6+
7+
void saveCommentAttachment(Long userId, Long taskId, MultipartFile file);
8+
}

0 commit comments

Comments
 (0)