Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;

@EnableAsync
@EnableScheduling
@SpringBootApplication
public class PalgoosamApplication {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.samyookgoo.palgoosam.auction.event;

import com.samyookgoo.palgoosam.search.domain.AuctionSearchDocument;

public class ElasticsearchAuctionEvent {
private final AuctionSearchDocument searchDocument;

public ElasticsearchAuctionEvent(AuctionSearchDocument searchDocument) {
this.searchDocument = searchDocument;
}

public AuctionSearchDocument getSearchDocument() {
return searchDocument;
}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.samyookgoo.palgoosam.auction.event_listener;

import com.samyookgoo.palgoosam.auction.event.ElasticsearchAuctionEvent;
import com.samyookgoo.palgoosam.search.repository.AuctionSearchElasticsearchRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.transaction.event.TransactionPhase;
import org.springframework.transaction.event.TransactionalEventListener;

@Component
@RequiredArgsConstructor
public class AuctionEventListener {

private final AuctionSearchElasticsearchRepository auctionSearchElasticsearchRepository;

@Async
@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
public void onAuctionCreated(ElasticsearchAuctionEvent event) {
auctionSearchElasticsearchRepository.save(event.getSearchDocument());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import com.samyookgoo.palgoosam.auction.dto.request.AuctionSearchRequestDto;
import com.samyookgoo.palgoosam.auction.dto.request.AuctionUpdateRequest;
import com.samyookgoo.palgoosam.auction.dto.response.*;
import com.samyookgoo.palgoosam.auction.event.ElasticsearchAuctionEvent;
import com.samyookgoo.palgoosam.auction.exception.AuctionCategoryException;
import com.samyookgoo.palgoosam.auction.exception.AuctionForbiddenException;
import com.samyookgoo.palgoosam.auction.exception.AuctionImageException;
Expand Down Expand Up @@ -59,6 +60,7 @@
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.data.redis.core.RedisTemplate;
//import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.elasticsearch.client.elc.NativeQuery;
Expand All @@ -83,6 +85,7 @@ public class AuctionService {
private final AuctionSearchElasticsearchRepository auctionSearchElasticsearchRepository;
private final ElasticsearchOperations elasticsearchOperations;
private final CategoryService categoryService;
private final ApplicationEventPublisher publisher;
// private final S3Service s3Service;
// private final StringRedisTemplate stringRedisTemplate;

Expand Down Expand Up @@ -133,12 +136,14 @@ public AuctionCreateResponse createAuction(AuctionCreateRequest request) {
savedAuction.getEndTime(),
imageResponses.getFirst().getUrl()
);
this.auctionSearchElasticsearchRepository.save(searchDocument);
publisher.publishEvent(new ElasticsearchAuctionEvent(searchDocument));

return AuctionCreateResponse.of(auction, imageResponses, category,
request.getStartDelay(), request.getDurationTime());
}



@Transactional(readOnly = true)
public AuctionDetailResponse getAuctionDetail(Long auctionId) {
User user = authService.getCurrentUser();
Expand Down