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