feat: add supportsChapterFetch flag to Provider and update related services

This commit is contained in:
Rodrigo Verdiani 2025-10-25 13:41:52 -03:00
parent 69ee91b9c6
commit 6b527a1728
5 changed files with 19 additions and 5 deletions

View File

@ -50,7 +50,8 @@ public record MangaDTO(
@NotNull long id,
@NotBlank String providerName,
@NotNull Integer chaptersAvailable,
@NotNull Integer chaptersDownloaded) {
@NotNull Integer chaptersDownloaded,
@NotNull Boolean supportsChapterFetch) {
public static MangaProviderDTO from(MangaProvider mangaProvider) {
var chapters = mangaProvider.getMangaChapters();
var chaptersAvailable = chapters.size();
@ -60,7 +61,8 @@ public record MangaDTO(
mangaProvider.getId(),
mangaProvider.getProvider().getName(),
chaptersAvailable,
chaptersDownloaded);
chaptersDownloaded,
mangaProvider.getProvider().getSupportsChapterFetch());
}
}
}

View File

@ -30,5 +30,7 @@ public class Provider {
@UpdateTimestamp private Instant updatedAt;
@OneToMany(mappedBy = "provider")
List<MangaProvider> mangaProviders;
private List<MangaProvider> mangaProviders;
private Boolean supportsChapterFetch;
}

View File

@ -48,7 +48,7 @@ public class MangaImportService {
public void importMangaFiles(String malId, List<MultipartFile> files) {
log.info("Importing manga files for MAL ID {}", malId);
var provider = providerService.getOrCreateProvider("Manual Import");
var provider = providerService.getOrCreateProvider("Manual Import", false);
rateLimiter.acquire();
var mangaData = jikanClient.getMangaById(Long.parseLong(malId));

View File

@ -12,11 +12,19 @@ public class ProviderService {
private final ProviderRepository providerRepository;
public Provider getOrCreateProvider(String providerName) {
return getOrCreateProvider(providerName, true);
}
public Provider getOrCreateProvider(String providerName, Boolean supportsChapterFetch) {
return providerRepository
.findByNameIgnoreCase(providerName)
.orElseGet(
() ->
providerRepository.save(
Provider.builder().name(providerName).status(ProviderStatus.ACTIVE).build()));
Provider.builder()
.name(providerName)
.status(ProviderStatus.ACTIVE)
.supportsChapterFetch(supportsChapterFetch)
.build()));
}
}

View File

@ -0,0 +1,2 @@
ALTER TABLE providers
ADD COLUMN supports_chapter_fetch BOOLEAN NOT NULL DEFAULT true;