File tree Expand file tree Collapse file tree 7 files changed +101
-1
lines changed
src/main/java/clap/server Expand file tree Collapse file tree 7 files changed +101
-1
lines changed Original file line number Diff line number Diff line change 1+ package clap .server .adapter .inbound .web .admin ;
2+
3+ import clap .server .adapter .inbound .security .SecurityUserDetails ;
4+ import clap .server .adapter .inbound .web .dto .label .AddLabelRequest ;
5+ import clap .server .application .port .inbound .admin .AddLabelUsecase ;
6+ import clap .server .common .annotation .architecture .WebAdapter ;
7+ import io .swagger .v3 .oas .annotations .Operation ;
8+ import io .swagger .v3 .oas .annotations .tags .Tag ;
9+ import lombok .RequiredArgsConstructor ;
10+ import org .springframework .security .access .annotation .Secured ;
11+ import org .springframework .security .core .annotation .AuthenticationPrincipal ;
12+ import org .springframework .web .bind .annotation .PostMapping ;
13+ import org .springframework .web .bind .annotation .RequestBody ;
14+ import org .springframework .web .bind .annotation .RequestMapping ;
15+
16+ @ Tag (name = "05. Admin" )
17+ @ WebAdapter
18+ @ RequiredArgsConstructor
19+ @ RequestMapping ("/api/management/label" )
20+ public class UpdateLabelController {
21+
22+ private final AddLabelUsecase addLabelUsecase ;
23+
24+ @ Operation (summary = "구분(label) 추가 API" )
25+ @ PostMapping
26+ @ Secured ({"ROLE_ADMIN" })
27+ public void addLabel (@ AuthenticationPrincipal SecurityUserDetails userInfo ,
28+ @ RequestBody AddLabelRequest request ) {
29+ addLabelUsecase .addLabel (userInfo .getUserId (), request );
30+ }
31+ }
Original file line number Diff line number Diff line change 1+ package clap .server .adapter .inbound .web .dto .label ;
2+
3+ import clap .server .adapter .outbound .persistense .entity .task .constant .LabelColor ;
4+
5+ public record AddLabelRequest (
6+
7+ String labelName ,
8+ LabelColor labelColor
9+ ) {}
Original file line number Diff line number Diff line change 88import clap .server .adapter .outbound .persistense .repository .task .LabelRepository ;
99import clap .server .application .mapper .LabelMapper ;
1010import clap .server .application .mapper .NotificationMapper ;
11+ import clap .server .application .port .outbound .task .CommandLabelPort ;
1112import clap .server .application .port .outbound .task .LoadLabelPort ;
1213import clap .server .common .annotation .architecture .PersistenceAdapter ;
1314import clap .server .domain .model .notification .Notification ;
2223
2324@ PersistenceAdapter
2425@ RequiredArgsConstructor
25- public class LabelPersistenceAdapter implements LoadLabelPort {
26+ public class LabelPersistenceAdapter implements LoadLabelPort , CommandLabelPort {
2627
2728 private final LabelRepository labelRepository ;
2829 private final LabelPersistenceMapper labelPersistenceMapper ;
@@ -51,4 +52,10 @@ public SliceResponse<FindLabelListResponse> findLabelListBySlice(Pageable pageab
5152 labelList .map (LabelMapper ::toFindLabelListResponse )
5253 );
5354 }
55+
56+ @ Override
57+ public void save (Label label ) {
58+ LabelEntity labelEntity = labelPersistenceMapper .toEntity (label );
59+ labelRepository .save (labelEntity );
60+ }
5461}
Original file line number Diff line number Diff line change 1+ package clap .server .application .port .inbound .admin ;
2+
3+ import clap .server .adapter .inbound .web .dto .label .AddLabelRequest ;
4+
5+ public interface AddLabelUsecase {
6+
7+ void addLabel (Long adminId , AddLabelRequest request );
8+
9+
10+ }
Original file line number Diff line number Diff line change 1+ package clap .server .application .port .outbound .task ;
2+
3+ import clap .server .domain .model .task .Label ;
4+
5+ public interface CommandLabelPort {
6+ void save (Label label );
7+ }
Original file line number Diff line number Diff line change 1+ package clap .server .application .service .label ;
2+
3+ import clap .server .adapter .inbound .web .dto .label .AddLabelRequest ;
4+ import clap .server .application .port .inbound .admin .AddLabelUsecase ;
5+ import clap .server .application .port .inbound .domain .MemberService ;
6+ import clap .server .application .port .outbound .task .CommandLabelPort ;
7+ import clap .server .common .annotation .architecture .ApplicationService ;
8+ import clap .server .domain .model .member .Member ;
9+ import clap .server .domain .model .task .Label ;
10+ import lombok .RequiredArgsConstructor ;
11+
12+ @ ApplicationService
13+ @ RequiredArgsConstructor
14+ public class AddLabelService implements AddLabelUsecase {
15+
16+ private final MemberService memberService ;
17+ private final CommandLabelPort commandLabelPort ;
18+
19+ @ Override
20+ public void addLabel (Long adminId , AddLabelRequest request ) {
21+ Member admin = memberService .findActiveMember (adminId );
22+ Label label = Label .addLabel (admin , request );
23+ commandLabelPort .save (label );
24+ }
25+ }
Original file line number Diff line number Diff line change 11package clap .server .domain .model .task ;
22
3+ import clap .server .adapter .inbound .web .dto .label .AddLabelRequest ;
34import clap .server .adapter .outbound .persistense .entity .task .constant .LabelColor ;
5+ import clap .server .adapter .outbound .persistense .entity .task .constant .TaskStatus ;
46import clap .server .domain .model .common .BaseTime ;
57import clap .server .domain .model .member .Member ;
68import lombok .AccessLevel ;
@@ -17,4 +19,13 @@ public class Label extends BaseTime {
1719 private String labelName ;
1820 private LabelColor labelColor ;
1921 private boolean isDeleted ;
22+
23+ public static Label addLabel (Member admin , AddLabelRequest request ) {
24+ return Label .builder ()
25+ .admin (admin )
26+ .labelName (request .labelName ())
27+ .labelColor (request .labelColor ())
28+ .isDeleted (false )
29+ .build ();
30+ }
2031}
You can’t perform that action at this time.
0 commit comments