57 lines
1.8 KiB
Java
57 lines
1.8 KiB
Java
package com.magamochi.content.service;
|
|
|
|
import com.magamochi.catalog.service.LanguageService;
|
|
import com.magamochi.catalog.service.MangaContentProviderService;
|
|
import com.magamochi.content.model.entity.MangaContent;
|
|
import com.magamochi.content.model.repository.MangaContentRepository;
|
|
import jakarta.validation.constraints.NotBlank;
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.extern.log4j.Log4j2;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
@Log4j2
|
|
@Service
|
|
@RequiredArgsConstructor
|
|
public class ContentIngestService {
|
|
private final MangaContentProviderService mangaContentProviderService;
|
|
private final LanguageService languageService;
|
|
|
|
private final MangaContentRepository mangaContentRepository;
|
|
|
|
public void ingest(
|
|
long mangaContentProviderId,
|
|
@NotBlank String title,
|
|
@NotBlank String url,
|
|
@NotBlank String languageCode) {
|
|
log.info("Ingesting Manga Content ({}) for provider {}", title, mangaContentProviderId);
|
|
|
|
var mangaContentProvider = mangaContentProviderService.find(mangaContentProviderId);
|
|
|
|
if (mangaContentRepository.existsByMangaContentProvider_IdAndUrlIgnoreCase(
|
|
mangaContentProvider.getId(), url)) {
|
|
log.info(
|
|
"Manga Content ({}) for provider {} already exists. Skipped.",
|
|
title,
|
|
mangaContentProviderId);
|
|
return;
|
|
}
|
|
|
|
var language = languageService.find(languageCode);
|
|
|
|
var mangaContent =
|
|
mangaContentRepository.save(
|
|
MangaContent.builder()
|
|
.mangaContentProvider(mangaContentProvider)
|
|
.title(title)
|
|
.url(url)
|
|
.language(language)
|
|
.build());
|
|
|
|
log.info(
|
|
"Ingested Manga Content ({}) for provider {}: {}",
|
|
title,
|
|
mangaContentProviderId,
|
|
mangaContent.getId());
|
|
}
|
|
}
|