Skip to content

Commit 406fccf

Browse files
committed
refactor: 좋아요 등록 Outbox 패턴 적용
1 parent 53e7b07 commit 406fccf

2 files changed

Lines changed: 13 additions & 6 deletions

File tree

apps/commerce-api/src/main/java/com/loopers/application/like/LikeFacade.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
package com.loopers.application.like;
22

3-
import com.loopers.application.product.UserActionEvent;
4-
import com.loopers.domain.actionlog.ActionType;
53
import com.loopers.domain.like.Like;
64
import com.loopers.domain.like.LikeRepository;
5+
import com.loopers.domain.outbox.AggregateType;
6+
import com.loopers.domain.outbox.OutboxEvent;
7+
import com.loopers.domain.outbox.OutboxRepository;
8+
import com.loopers.domain.outbox.OutboxType;
79
import com.loopers.domain.product.ProductRepository;
810
import com.loopers.domain.user.UserRepository;
911
import com.loopers.interfaces.api.like.LikeV1Dto;
1012
import com.loopers.support.error.CoreException;
1113
import com.loopers.support.error.ErrorType;
1214
import lombok.RequiredArgsConstructor;
13-
import org.springframework.context.ApplicationEventPublisher;
1415
import org.springframework.stereotype.Component;
1516
import org.springframework.transaction.annotation.Transactional;
1617

@@ -20,7 +21,7 @@ public class LikeFacade {
2021
private final LikeRepository likeRepository;
2122
private final UserRepository userRepository;
2223
private final ProductRepository productRepository;
23-
private final ApplicationEventPublisher publisher;
24+
private final OutboxRepository outBoxRepository;
2425

2526
@Transactional
2627
public LikeInfo doLike(LikeV1Dto.LikeRequest request) {
@@ -46,8 +47,13 @@ public LikeInfo doLike(LikeV1Dto.LikeRequest request) {
4647
Like newLike = request.toEntity();
4748
likeRepository.save(newLike);
4849

49-
publisher.publishEvent(new LikeCreateEvent(userId, productId));
50-
publisher.publishEvent(new UserActionEvent(userId, productId, ActionType.DO_LIKE));
50+
OutboxEvent outBoxEvent = OutboxEvent.of(
51+
AggregateType.PRODUCT,
52+
productId,
53+
OutboxType.PRODUCT_LIKED
54+
);
55+
56+
outBoxRepository.save(outBoxEvent);
5157

5258
return LikeInfo.from(newLike);
5359
});

apps/commerce-api/src/main/java/com/loopers/domain/outbox/OutboxType.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
public enum OutboxType {
44
PRODUCT_VIEWED,
5+
PRODUCT_LIKED,
56
ORDER_CREATED,
67
PAYMENT_COMPLETED
78
}

0 commit comments

Comments
 (0)