mirror of
https://github.com/gotson/komga.git
synced 2026-04-29 02:14:07 +02:00
refactor: express BookMetadataPatchCapability as a set instead of list
This commit is contained in:
parent
5a464fd13e
commit
6d3fe6922c
10 changed files with 21 additions and 21 deletions
|
|
@ -33,7 +33,7 @@ sealed class Task(priority: Int = DEFAULT_PRIORITY) : Serializable {
|
|||
override fun toString(): String = "GenerateBookThumbnail(bookId='$bookId', priority='$priority')"
|
||||
}
|
||||
|
||||
class RefreshBookMetadata(val bookId: String, val capabilities: List<BookMetadataPatchCapability>, priority: Int = DEFAULT_PRIORITY) : Task(priority) {
|
||||
class RefreshBookMetadata(val bookId: String, val capabilities: Set<BookMetadataPatchCapability>, priority: Int = DEFAULT_PRIORITY) : Task(priority) {
|
||||
override fun uniqueId() = "REFRESH_BOOK_METADATA_$bookId"
|
||||
override fun toString(): String = "RefreshBookMetadata(bookId='$bookId', capabilities=$capabilities, priority='$priority')"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ class TaskReceiver(
|
|||
|
||||
fun refreshBookMetadata(
|
||||
bookId: String,
|
||||
capabilities: List<BookMetadataPatchCapability> = BookMetadataPatchCapability.values().toList(),
|
||||
capabilities: Set<BookMetadataPatchCapability> = BookMetadataPatchCapability.values().toSet(),
|
||||
priority: Int = DEFAULT_PRIORITY,
|
||||
) {
|
||||
submitTask(Task.RefreshBookMetadata(bookId, capabilities, priority))
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ class BookMetadataLifecycle(
|
|||
private val eventPublisher: EventPublisher,
|
||||
) {
|
||||
|
||||
fun refreshMetadata(book: Book, capabilities: List<BookMetadataPatchCapability>) {
|
||||
fun refreshMetadata(book: Book, capabilities: Set<BookMetadataPatchCapability>) {
|
||||
logger.info { "Refresh metadata for book: $book with capabilities: $capabilities" }
|
||||
val media = mediaRepository.findById(book.id)
|
||||
|
||||
|
|
@ -89,7 +89,7 @@ class BookMetadataLifecycle(
|
|||
existing.bookIds.lastKey() + 1
|
||||
} else {
|
||||
logger.debug { "Adding book '${book.name}' to existing read list '${existing.name}'" }
|
||||
readList.number ?: existing.bookIds.lastKey() + 1
|
||||
readList.number ?: (existing.bookIds.lastKey() + 1)
|
||||
}
|
||||
map[key] = book.id
|
||||
readListLifecycle.updateReadList(
|
||||
|
|
|
|||
|
|
@ -336,7 +336,7 @@ class LibraryContentLifecycle(
|
|||
title = if (deleted.titleLock) deleted.title else newlyAdded.title,
|
||||
)
|
||||
)
|
||||
if (!deleted.titleLock) taskReceiver.refreshBookMetadata(bookToAdd.id, listOf(BookMetadataPatchCapability.TITLE))
|
||||
if (!deleted.titleLock) taskReceiver.refreshBookMetadata(bookToAdd.id, setOf(BookMetadataPatchCapability.TITLE))
|
||||
}
|
||||
|
||||
// copy read progress
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@ class SeriesLifecycle(
|
|||
oldToNew.forEach { (old, new) ->
|
||||
if (old.number != new.number || old.numberSort != new.numberSort) {
|
||||
logger.debug { "Metadata numbering has changed, refreshing metadata for book ${new.bookId} " }
|
||||
taskReceiver.refreshBookMetadata(new.bookId, listOf(BookMetadataPatchCapability.NUMBER, BookMetadataPatchCapability.NUMBER_SORT))
|
||||
taskReceiver.refreshBookMetadata(new.bookId, setOf(BookMetadataPatchCapability.NUMBER, BookMetadataPatchCapability.NUMBER_SORT))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,6 @@ import org.gotson.komga.domain.model.BookMetadataPatchCapability
|
|||
import org.gotson.komga.domain.model.BookWithMedia
|
||||
|
||||
interface BookMetadataProvider {
|
||||
fun getCapabilities(): List<BookMetadataPatchCapability>
|
||||
fun getCapabilities(): Set<BookMetadataPatchCapability>
|
||||
fun getBookMetadataFromBook(book: BookWithMedia): BookMetadataPatch?
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,8 +33,8 @@ class IsbnBarcodeProvider(
|
|||
DecodeHintType.TRY_HARDER to true
|
||||
)
|
||||
|
||||
override fun getCapabilities(): List<BookMetadataPatchCapability> =
|
||||
listOf(BookMetadataPatchCapability.ISBN)
|
||||
override fun getCapabilities(): Set<BookMetadataPatchCapability> =
|
||||
setOf(BookMetadataPatchCapability.ISBN)
|
||||
|
||||
override fun getBookMetadataFromBook(book: BookWithMedia): BookMetadataPatch? {
|
||||
val pagesToTry = (1..book.media.pages.size).toList().let {
|
||||
|
|
|
|||
|
|
@ -27,11 +27,11 @@ private const val COMIC_INFO = "ComicInfo.xml"
|
|||
@Service
|
||||
class ComicInfoProvider(
|
||||
@Autowired(required = false) private val mapper: XmlMapper = XmlMapper(),
|
||||
private val bookAnalyzer: BookAnalyzer
|
||||
private val bookAnalyzer: BookAnalyzer,
|
||||
) : BookMetadataProvider, SeriesMetadataFromBookProvider {
|
||||
|
||||
override fun getCapabilities(): List<BookMetadataPatchCapability> =
|
||||
listOf(
|
||||
override fun getCapabilities(): Set<BookMetadataPatchCapability> =
|
||||
setOf(
|
||||
BookMetadataPatchCapability.TITLE,
|
||||
BookMetadataPatchCapability.SUMMARY,
|
||||
BookMetadataPatchCapability.NUMBER,
|
||||
|
|
@ -63,8 +63,8 @@ class ComicInfoProvider(
|
|||
readLists.add(
|
||||
BookMetadataPatch.ReadListEntry(
|
||||
comicInfo.alternateSeries!!,
|
||||
comicInfo.alternateNumber?.toIntOrNull()
|
||||
)
|
||||
comicInfo.alternateNumber?.toIntOrNull(),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -130,7 +130,7 @@ class ComicInfoProvider(
|
|||
language = if (comicInfo.languageISO != null && BCP47TagValidator.isValid(comicInfo.languageISO!!)) comicInfo.languageISO else null,
|
||||
genres = if (!genres.isNullOrEmpty()) genres.toSet() else null,
|
||||
totalBookCount = comicInfo.count,
|
||||
collections = listOfNotNull(comicInfo.seriesGroup?.ifBlank { null })
|
||||
collections = listOfNotNull(comicInfo.seriesGroup?.ifBlank { null }),
|
||||
)
|
||||
}
|
||||
return null
|
||||
|
|
|
|||
|
|
@ -34,8 +34,8 @@ class EpubMetadataProvider(
|
|||
"trl" to "translator",
|
||||
)
|
||||
|
||||
override fun getCapabilities(): List<BookMetadataPatchCapability> =
|
||||
listOf(
|
||||
override fun getCapabilities(): Set<BookMetadataPatchCapability> =
|
||||
setOf(
|
||||
BookMetadataPatchCapability.TITLE,
|
||||
BookMetadataPatchCapability.SUMMARY,
|
||||
BookMetadataPatchCapability.RELEASE_DATE,
|
||||
|
|
|
|||
|
|
@ -771,7 +771,7 @@ class LibraryContentLifecycleTest(
|
|||
|
||||
// then
|
||||
verify(exactly = 1) { mockHasher.computeHash(any()) }
|
||||
verify(exactly = 0) { mockTaskReceiver.refreshBookMetadata(bookRenamed.id, listOf(BookMetadataPatchCapability.TITLE)) }
|
||||
verify(exactly = 0) { mockTaskReceiver.refreshBookMetadata(bookRenamed.id, setOf(BookMetadataPatchCapability.TITLE)) }
|
||||
|
||||
val allSeries = seriesRepository.findAll()
|
||||
val allBooks = bookRepository.findAll().sortedBy { it.number }
|
||||
|
|
@ -815,7 +815,7 @@ class LibraryContentLifecycleTest(
|
|||
|
||||
// then
|
||||
verify(exactly = 1) { mockHasher.computeHash(any()) }
|
||||
verify(exactly = 1) { mockTaskReceiver.refreshBookMetadata(bookRenamed.id, listOf(BookMetadataPatchCapability.TITLE)) }
|
||||
verify(exactly = 1) { mockTaskReceiver.refreshBookMetadata(bookRenamed.id, setOf(BookMetadataPatchCapability.TITLE)) }
|
||||
|
||||
val allSeries = seriesRepository.findAll()
|
||||
val allBooks = bookRepository.findAll().sortedBy { it.number }
|
||||
|
|
@ -1140,7 +1140,7 @@ class LibraryContentLifecycleTest(
|
|||
libraryContentLifecycle.scanRootFolder(library) // rename
|
||||
|
||||
// then
|
||||
verify(exactly = 0) { mockTaskReceiver.refreshBookMetadata(book2Moved.id, listOf(BookMetadataPatchCapability.TITLE)) }
|
||||
verify(exactly = 0) { mockTaskReceiver.refreshBookMetadata(book2Moved.id, setOf(BookMetadataPatchCapability.TITLE)) }
|
||||
|
||||
val allSeries = seriesRepository.findAll()
|
||||
val allBooks = bookRepository.findAll().sortedBy { it.number }
|
||||
|
|
@ -1198,7 +1198,7 @@ class LibraryContentLifecycleTest(
|
|||
libraryContentLifecycle.scanRootFolder(library) // rename
|
||||
|
||||
// then
|
||||
verify(exactly = 1) { mockTaskReceiver.refreshBookMetadata(book2Moved.id, listOf(BookMetadataPatchCapability.TITLE)) }
|
||||
verify(exactly = 1) { mockTaskReceiver.refreshBookMetadata(book2Moved.id, setOf(BookMetadataPatchCapability.TITLE)) }
|
||||
|
||||
val allSeries = seriesRepository.findAll()
|
||||
val allBooks = bookRepository.findAll().sortedBy { it.number }
|
||||
|
|
|
|||
Loading…
Reference in a new issue