Skip to content

Commit daff3de

Browse files
committed
Refactor: LikeTargetType enum 엔티티용과 이벤트용으로 분리
1 parent d51c9bd commit daff3de

17 files changed

Lines changed: 98 additions & 82 deletions

src/main/java/project/flipnote/cardset/listener/CardSetLikeEventHandler.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
import lombok.RequiredArgsConstructor;
1313
import lombok.extern.slf4j.Slf4j;
1414
import project.flipnote.cardset.service.CardSetService;
15-
import project.flipnote.common.entity.LikeType;
1615
import project.flipnote.common.model.event.LikeEvent;
16+
import project.flipnote.common.model.event.LikeEventTargetType;
1717

1818
@Slf4j
1919
@RequiredArgsConstructor
@@ -30,7 +30,7 @@ public class CardSetLikeEventHandler {
3030
)
3131
@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
3232
public void handleLikeEvent(LikeEvent event) {
33-
if (event.likeType() != LikeType.CARD_SET) {
33+
if (event.targetType() != LikeEventTargetType.CARD_SET) {
3434
return;
3535
}
3636

@@ -40,8 +40,8 @@ public void handleLikeEvent(LikeEvent event) {
4040
@Recover
4141
public void recover(Exception ex, LikeEvent event) {
4242
log.error(
43-
"좋아요 수 반영 처리 중 예외 발생 : likeType={}, targetId={}, userId={}",
44-
event.likeType(), event.targetId(), event.userId(), ex
43+
"좋아요 수 반영 처리 중 예외 발생 : targetType={}, targetId={}, userId={}",
44+
event.targetType(), event.targetId(), event.userId(), ex
4545
);
4646
}
4747
}

src/main/java/project/flipnote/cardset/listener/CardSetUnlikeEventHandler.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import lombok.RequiredArgsConstructor;
1313
import lombok.extern.slf4j.Slf4j;
1414
import project.flipnote.cardset.service.CardSetService;
15-
import project.flipnote.common.entity.LikeType;
15+
import project.flipnote.common.model.event.LikeEventTargetType;
1616
import project.flipnote.common.model.event.UnlikeEvent;
1717

1818
@Slf4j
@@ -30,7 +30,7 @@ public class CardSetUnlikeEventHandler {
3030
)
3131
@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
3232
public void handleUnlikeEvent(UnlikeEvent event) {
33-
if (event.likeType() != LikeType.CARD_SET) {
33+
if (event.targetType() != LikeEventTargetType.CARD_SET) {
3434
return;
3535
}
3636

@@ -40,8 +40,8 @@ public void handleUnlikeEvent(UnlikeEvent event) {
4040
@Recover
4141
public void recover(Exception ex, UnlikeEvent event) {
4242
log.error(
43-
"좋아요 취소 수 반영 처리 중 예외 발생 : likeType={}, targetId={}, userId={}",
44-
event.likeType(), event.targetId(), event.userId(), ex
43+
"좋아요 취소 수 반영 처리 중 예외 발생 : targetType={}, targetId={}, userId={}",
44+
event.targetType(), event.targetId(), event.userId(), ex
4545
);
4646
}
4747
}

src/main/java/project/flipnote/common/entity/LikeType.java

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

src/main/java/project/flipnote/common/model/event/LikeEvent.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
package project.flipnote.common.model.event;
22

3-
import project.flipnote.common.entity.LikeType;
4-
53
public record LikeEvent(
6-
LikeType likeType,
4+
LikeEventTargetType targetType,
75
Long targetId,
86
Long userId
97
) {
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package project.flipnote.common.model.event;
2+
3+
public enum LikeEventTargetType {
4+
CARD_SET
5+
}

src/main/java/project/flipnote/common/model/event/UnlikeEvent.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
package project.flipnote.common.model.event;
22

3-
import project.flipnote.common.entity.LikeType;
4-
53
public record UnlikeEvent(
6-
LikeType likeType,
4+
LikeEventTargetType targetType,
75
Long targetId,
86
Long userId
97
) {

src/main/java/project/flipnote/like/controller/LikeController.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import project.flipnote.like.model.LikeResponse;
1919
import project.flipnote.like.model.LikeSearchRequest;
2020
import project.flipnote.like.model.LikeTargetResponse;
21-
import project.flipnote.like.model.LikeTypeRequest;
21+
import project.flipnote.like.model.LikeTargetTypeRequest;
2222
import project.flipnote.like.service.LikeService;
2323

2424
@RequiredArgsConstructor
@@ -28,36 +28,36 @@ public class LikeController implements LikeControllerDocs {
2828

2929
private final LikeService likeService;
3030

31-
@PostMapping("/{type}/{targetId}")
31+
@PostMapping("/{targetType}/{targetId}")
3232
public ResponseEntity<Void> addLike(
33-
@PathVariable("type") LikeTypeRequest likeType,
33+
@PathVariable("targetType") LikeTargetTypeRequest targetType,
3434
@PathVariable("targetId") Long targetId,
3535
@AuthenticationPrincipal AuthPrinciple authPrinciple
3636
) {
37-
likeService.addLike(authPrinciple.userId(), likeType.toDomain(), targetId);
37+
likeService.addLike(authPrinciple.userId(), targetType.toDomainType(), targetId);
3838

3939
return ResponseEntity.ok().build();
4040
}
4141

42-
@DeleteMapping("/{type}/{targetId}")
42+
@DeleteMapping("/{targetType}/{targetId}")
4343
public ResponseEntity<Void> removeLike(
44-
@PathVariable("type") LikeTypeRequest likeType,
44+
@PathVariable("targetType") LikeTargetTypeRequest targetType,
4545
@PathVariable("targetId") Long targetId,
4646
@AuthenticationPrincipal AuthPrinciple authPrinciple
4747
) {
48-
likeService.removeLike(authPrinciple.userId(), likeType.toDomain(), targetId);
48+
likeService.removeLike(authPrinciple.userId(), targetType.toDomainType(), targetId);
4949

5050
return ResponseEntity.ok().build();
5151
}
5252

53-
@GetMapping("/{type}")
53+
@GetMapping("/{targetType}")
5454
public ResponseEntity<PagingResponse<LikeResponse<LikeTargetResponse>>> getLikes(
55-
@PathVariable(name = "type") LikeTypeRequest likeType,
55+
@PathVariable(name = "targetType") LikeTargetTypeRequest targetType,
5656
@Valid @ModelAttribute LikeSearchRequest req,
5757
@AuthenticationPrincipal AuthPrinciple authPrinciple
5858
) {
5959
PagingResponse<LikeResponse<LikeTargetResponse>> res
60-
= likeService.getLikes(authPrinciple.userId(), likeType.toDomain(), req);
60+
= likeService.getLikes(authPrinciple.userId(), targetType.toDomainType(), req);
6161

6262
return ResponseEntity.ok(res);
6363
}

src/main/java/project/flipnote/like/controller/docs/LikeControllerDocs.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,20 @@
1010
import project.flipnote.like.model.LikeResponse;
1111
import project.flipnote.like.model.LikeSearchRequest;
1212
import project.flipnote.like.model.LikeTargetResponse;
13-
import project.flipnote.like.model.LikeTypeRequest;
13+
import project.flipnote.like.model.LikeTargetTypeRequest;
1414

1515
@Tag(name = "Like", description = "Like API")
1616
public interface LikeControllerDocs {
1717

1818
@Operation(summary = "좋아요 추가", security = {@SecurityRequirement(name = "access-token")})
19-
ResponseEntity<Void> addLike(LikeTypeRequest likeType, Long targetId, AuthPrinciple authPrinciple);
19+
ResponseEntity<Void> addLike(LikeTargetTypeRequest targetType, Long targetId, AuthPrinciple authPrinciple);
2020

2121
@Operation(summary = "좋아요 취소", security = {@SecurityRequirement(name = "access-token")})
22-
ResponseEntity<Void> removeLike(LikeTypeRequest likeType, Long targetId, AuthPrinciple authPrinciple);
22+
ResponseEntity<Void> removeLike(LikeTargetTypeRequest targetType, Long targetId, AuthPrinciple authPrinciple);
2323

2424
@Operation(summary = "좋아요 누른 목록 조회", security = {@SecurityRequirement(name = "access-token")})
2525
ResponseEntity<PagingResponse<LikeResponse<LikeTargetResponse>>> getLikes(
26-
LikeTypeRequest likeType,
26+
LikeTargetTypeRequest targetType,
2727
LikeSearchRequest req,
2828
AuthPrinciple authPrinciple
2929
);

src/main/java/project/flipnote/like/entity/Like.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import lombok.Getter;
1616
import lombok.NoArgsConstructor;
1717
import project.flipnote.common.entity.BaseEntity;
18-
import project.flipnote.common.entity.LikeType;
1918

2019
@Getter
2120
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@@ -40,7 +39,7 @@ public class Like extends BaseEntity {
4039

4140
@Enumerated(EnumType.STRING)
4241
@Column(nullable = false)
43-
private LikeType type;
42+
private LikeTargetType targetType;
4443

4544
@Column(nullable = false)
4645
private Long targetId;
@@ -49,8 +48,8 @@ public class Like extends BaseEntity {
4948
private Long userId;
5049

5150
@Builder
52-
public Like(LikeType type, Long targetId, Long userId) {
53-
this.type = type;
51+
public Like(LikeTargetType targetType, Long targetId, Long userId) {
52+
this.targetType = targetType;
5453
this.targetId = targetId;
5554
this.userId = userId;
5655
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package project.flipnote.like.entity;
2+
3+
import lombok.extern.slf4j.Slf4j;
4+
import project.flipnote.common.model.event.LikeEventTargetType;
5+
6+
@Slf4j
7+
public enum LikeTargetType {
8+
CARD_SET;
9+
10+
public LikeEventTargetType toEventType() {
11+
try {
12+
return LikeEventTargetType.valueOf(this.name());
13+
} catch (IllegalArgumentException e) {
14+
log.error("Failed to map LikeTargetType '{}' to LikeEventTargetType", this.name(), e);
15+
throw new IllegalStateException(
16+
"Invalid mapping from LikeTargetType to LikeEventTargetType: " + this.name(),
17+
e
18+
);
19+
}
20+
}
21+
}

0 commit comments

Comments
 (0)