feat: add previous and next chapter IDs to MangaChapterImagesDTO and update retrieval logic #10
@ -10,11 +10,15 @@ import java.util.List;
|
||||
public record MangaChapterImagesDTO(
|
||||
@NotNull Long id,
|
||||
@NotBlank String mangaTitle,
|
||||
Long previousChapterId,
|
||||
Long nextChapterId,
|
||||
@NotNull List<@NotBlank String> chapterImageKeys) {
|
||||
public static MangaChapterImagesDTO from(MangaChapter mangaChapter) {
|
||||
public static MangaChapterImagesDTO from(MangaChapter mangaChapter, Long prevId, Long nextId) {
|
||||
return new MangaChapterImagesDTO(
|
||||
mangaChapter.getId(),
|
||||
mangaChapter.getTitle(),
|
||||
prevId,
|
||||
nextId,
|
||||
mangaChapter.getMangaChapterImages().stream()
|
||||
.sorted(Comparator.comparing(MangaChapterImage::getPosition))
|
||||
.map(mangaChapterImage -> mangaChapterImage.getImage().getFileKey())
|
||||
|
||||
@ -99,7 +99,26 @@ public class MangaChapterService {
|
||||
public MangaChapterImagesDTO getMangaChapterImages(Long chapterId) {
|
||||
var chapter = getMangaChapterThrowIfNotFound(chapterId);
|
||||
|
||||
return MangaChapterImagesDTO.from(chapter);
|
||||
var chapters = chapter.getMangaProvider().getMangaChapters();
|
||||
Long prevId = null;
|
||||
Long nextId = null;
|
||||
|
||||
// TODO: this doesn't perform well for large datasets
|
||||
for (var i = 0; i < chapters.size(); i++) {
|
||||
if (chapters.get(i).getId().equals(chapterId)) {
|
||||
if (i > 0) {
|
||||
prevId = chapters.get(i - 1).getId();
|
||||
}
|
||||
|
||||
if (i < chapters.size() - 1) {
|
||||
nextId = chapters.get(i + 1).getId();
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return MangaChapterImagesDTO.from(chapter, prevId, nextId);
|
||||
}
|
||||
|
||||
public void markAsRead(Long chapterId) {
|
||||
|
||||
@ -31,9 +31,9 @@ public class JwtUtil {
|
||||
return extractClaim(token, Claims::getSubject, getAccessSigningKey());
|
||||
}
|
||||
|
||||
public String extractUsernameFromRefreshToken(String token) {
|
||||
return extractClaim(token, Claims::getSubject, getRefreshSigningKey());
|
||||
}
|
||||
public String extractUsernameFromRefreshToken(String token) {
|
||||
return extractClaim(token, Claims::getSubject, getRefreshSigningKey());
|
||||
}
|
||||
|
||||
public String generateAccessToken(UserDetails userDetails) {
|
||||
Map<String, Object> claims = new HashMap<>();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user