feat: integrate UpdateMangaDataProducer in MangaCreationService for real-time updates
This commit is contained in:
parent
bfd415a60d
commit
0f448f3d6d
@ -3,11 +3,13 @@ package com.magamochi.mangamochi.service;
|
||||
import com.google.common.util.concurrent.RateLimiter;
|
||||
import com.magamochi.mangamochi.client.JikanClient;
|
||||
import com.magamochi.mangamochi.client.RapidFuzzClient;
|
||||
import com.magamochi.mangamochi.model.dto.UpdateMangaDataCommand;
|
||||
import com.magamochi.mangamochi.model.entity.Manga;
|
||||
import com.magamochi.mangamochi.model.entity.MangaImportReview;
|
||||
import com.magamochi.mangamochi.model.entity.Provider;
|
||||
import com.magamochi.mangamochi.model.repository.MangaImportReviewRepository;
|
||||
import com.magamochi.mangamochi.model.repository.MangaRepository;
|
||||
import com.magamochi.mangamochi.queue.UpdateMangaDataProducer;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -24,6 +26,8 @@ public class MangaCreationService {
|
||||
|
||||
private final RateLimiter jikanRateLimiter;
|
||||
|
||||
private final UpdateMangaDataProducer updateMangaDataProducer;
|
||||
|
||||
public Manga getOrCreateManga(String title, String url, Provider provider) {
|
||||
var existingManga = mangaRepository.findByTitleIgnoreCase(title);
|
||||
if (existingManga.isPresent()) {
|
||||
@ -74,9 +78,16 @@ public class MangaCreationService {
|
||||
|
||||
existingManga = mangaRepository.findByTitleIgnoreCase(result.title());
|
||||
return existingManga.orElseGet(
|
||||
() ->
|
||||
mangaRepository.save(
|
||||
Manga.builder().title(result.title()).malId(result.mal_id()).build()));
|
||||
() -> {
|
||||
var manga =
|
||||
mangaRepository.save(
|
||||
Manga.builder().title(result.title()).malId(result.mal_id()).build());
|
||||
|
||||
updateMangaDataProducer.sendUpdateMangaDataCommand(
|
||||
new UpdateMangaDataCommand(manga.getId()));
|
||||
|
||||
return manga;
|
||||
});
|
||||
}
|
||||
|
||||
private void createMangaImportReview(String title, String url, Provider provider) {
|
||||
|
||||
@ -9,13 +9,11 @@ import com.magamochi.mangamochi.exception.UnprocessableException;
|
||||
import com.magamochi.mangamochi.model.dto.ContentProviderMangaChapterResponseDTO;
|
||||
import com.magamochi.mangamochi.model.dto.ContentProviderMangaInfoResponseDTO;
|
||||
import com.magamochi.mangamochi.model.dto.ImportMangaDexResponseDTO;
|
||||
import com.magamochi.mangamochi.model.dto.UpdateMangaDataCommand;
|
||||
import com.magamochi.mangamochi.model.entity.MangaProvider;
|
||||
import com.magamochi.mangamochi.model.entity.Provider;
|
||||
import com.magamochi.mangamochi.model.enumeration.ProviderStatus;
|
||||
import com.magamochi.mangamochi.model.repository.MangaProviderRepository;
|
||||
import com.magamochi.mangamochi.model.repository.ProviderRepository;
|
||||
import com.magamochi.mangamochi.queue.UpdateMangaDataProducer;
|
||||
import com.magamochi.mangamochi.service.MangaCreationService;
|
||||
import com.magamochi.mangamochi.service.providers.ContentProvider;
|
||||
import com.magamochi.mangamochi.service.providers.ContentProviders;
|
||||
@ -34,7 +32,6 @@ public class MangaDexProvider implements ContentProvider {
|
||||
private final MangaCreationService mangaCreationService;
|
||||
private final ProviderRepository providerRepository;
|
||||
private final MangaProviderRepository mangaProviderRepository;
|
||||
private final UpdateMangaDataProducer updateMangaDataProducer;
|
||||
|
||||
private final RateLimiter mangaDexRateLimiter;
|
||||
|
||||
@ -164,8 +161,6 @@ public class MangaDexProvider implements ContentProvider {
|
||||
.url(id.toString())
|
||||
.build());
|
||||
|
||||
updateMangaDataProducer.sendUpdateMangaDataCommand(new UpdateMangaDataCommand(manga.getId()));
|
||||
|
||||
return new ImportMangaDexResponseDTO(manga.getId());
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user