Compare commits
2 Commits
e4f672a5f8
...
284f40c279
| Author | SHA1 | Date | |
|---|---|---|---|
| 284f40c279 | |||
| d1b7fa4f89 |
@ -11,13 +11,15 @@ public record ContentProviderListDTO(@NotNull List<ContentProviderDTO> providers
|
|||||||
contentProviders.stream().map(ContentProviderDTO::from).toList());
|
contentProviders.stream().map(ContentProviderDTO::from).toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
public record ContentProviderDTO(long id, @NotBlank String name, String url, boolean active) {
|
public record ContentProviderDTO(
|
||||||
|
long id, @NotBlank String name, String url, boolean active, boolean supportsContentFetch) {
|
||||||
public static ContentProviderDTO from(ContentProvider contentProvider) {
|
public static ContentProviderDTO from(ContentProvider contentProvider) {
|
||||||
return new ContentProviderDTO(
|
return new ContentProviderDTO(
|
||||||
contentProvider.getId(),
|
contentProvider.getId(),
|
||||||
contentProvider.getName(),
|
contentProvider.getName(),
|
||||||
contentProvider.getUrl(),
|
contentProvider.getUrl(),
|
||||||
contentProvider.isActive());
|
contentProvider.isActive(),
|
||||||
|
contentProvider.getSupportsContentFetch());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,7 +7,9 @@ import com.magamochi.common.exception.NotFoundException;
|
|||||||
import com.magamochi.ingestion.model.dto.ContentProviderListDTO;
|
import com.magamochi.ingestion.model.dto.ContentProviderListDTO;
|
||||||
import com.magamochi.ingestion.model.entity.ContentProvider;
|
import com.magamochi.ingestion.model.entity.ContentProvider;
|
||||||
import com.magamochi.ingestion.model.repository.ContentProviderRepository;
|
import com.magamochi.ingestion.model.repository.ContentProviderRepository;
|
||||||
|
import java.util.List;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.data.domain.Sort;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@ -16,7 +18,7 @@ public class ContentProviderService {
|
|||||||
private final ContentProviderRepository contentProviderRepository;
|
private final ContentProviderRepository contentProviderRepository;
|
||||||
|
|
||||||
public ContentProviderListDTO getProviders(Boolean manualImport) {
|
public ContentProviderListDTO getProviders(Boolean manualImport) {
|
||||||
var providers = contentProviderRepository.findAll();
|
var providers = contentProviderRepository.findAll(Sort.by(Sort.Direction.ASC, "name"));
|
||||||
|
|
||||||
if (nonNull(manualImport) && manualImport) {
|
if (nonNull(manualImport) && manualImport) {
|
||||||
providers = providers.stream().filter(ContentProvider::getManualImport).toList();
|
providers = providers.stream().filter(ContentProvider::getManualImport).toList();
|
||||||
@ -34,6 +36,14 @@ public class ContentProviderService {
|
|||||||
"Content Provider not found (ID: " + contentProviderId + ")."));
|
"Content Provider not found (ID: " + contentProviderId + ")."));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<ContentProvider> getUpdatableProviders() {
|
||||||
|
return contentProviderRepository.findAll().stream()
|
||||||
|
.filter(
|
||||||
|
contentProvider ->
|
||||||
|
contentProvider.isActive() && contentProvider.getSupportsContentFetch())
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
public ContentProvider getManualImportProvider(Long providerId) {
|
public ContentProvider getManualImportProvider(Long providerId) {
|
||||||
var provider = find(providerId);
|
var provider = find(providerId);
|
||||||
|
|
||||||
|
|||||||
@ -37,6 +37,17 @@ public class IngestionService {
|
|||||||
|
|
||||||
public void fetchContentProviderMangas(long contentProviderId) {
|
public void fetchContentProviderMangas(long contentProviderId) {
|
||||||
var contentProvider = contentProviderService.find(contentProviderId);
|
var contentProvider = contentProviderService.find(contentProviderId);
|
||||||
|
|
||||||
|
if (!contentProvider.isActive()) {
|
||||||
|
throw new IllegalStateException(
|
||||||
|
"Content provider is not active: " + contentProvider.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!contentProvider.getSupportsContentFetch()) {
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
"Content provider does not support content fetch: " + contentProvider.getName());
|
||||||
|
}
|
||||||
|
|
||||||
var pagedContentProvider =
|
var pagedContentProvider =
|
||||||
pagedContentProviderFactory.getPagedContentProvider(contentProvider.getName());
|
pagedContentProviderFactory.getPagedContentProvider(contentProvider.getName());
|
||||||
var pages = pagedContentProvider.getTotalPages();
|
var pages = pagedContentProvider.getTotalPages();
|
||||||
@ -50,6 +61,12 @@ public class IngestionService {
|
|||||||
|
|
||||||
public void fetchProviderPageMangas(long providerId, int page) {
|
public void fetchProviderPageMangas(long providerId, int page) {
|
||||||
var contentProvider = contentProviderService.find(providerId);
|
var contentProvider = contentProviderService.find(providerId);
|
||||||
|
|
||||||
|
if (!contentProvider.isActive()) {
|
||||||
|
throw new IllegalStateException(
|
||||||
|
"Content provider is not active: " + contentProvider.getName());
|
||||||
|
}
|
||||||
|
|
||||||
var pagedContentProvider =
|
var pagedContentProvider =
|
||||||
pagedContentProviderFactory.getPagedContentProvider(contentProvider.getName());
|
pagedContentProviderFactory.getPagedContentProvider(contentProvider.getName());
|
||||||
|
|
||||||
@ -62,8 +79,9 @@ public class IngestionService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void fetchAllContentProviderMangas() {
|
public void fetchAllContentProviderMangas() {
|
||||||
var contentProviders = contentProviderService.getProviders(null);
|
var contentProviders = contentProviderService.getUpdatableProviders();
|
||||||
contentProviders.providers().forEach(dto -> fetchContentProviderMangas(dto.id()));
|
contentProviders.forEach(
|
||||||
|
contentProvider -> fetchContentProviderMangas(contentProvider.getId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void fetchMangaContentProviderContentList(Long mangaContentProviderId) {
|
public void fetchMangaContentProviderContentList(Long mangaContentProviderId) {
|
||||||
|
|||||||
@ -0,0 +1,7 @@
|
|||||||
|
UPDATE content_providers
|
||||||
|
SET supports_content_fetch = FALSE
|
||||||
|
WHERE name = 'MangaDex';
|
||||||
|
|
||||||
|
UPDATE content_providers
|
||||||
|
SET url = 'https://mangadex.org/'
|
||||||
|
WHERE name = 'MangaDex';
|
||||||
Loading…
x
Reference in New Issue
Block a user