backend/src/main/java/com/magamochi/content/service/ContentIngestService.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());
}
}