fix: error importing reading list with non-numerical number

closes #499
This commit is contained in:
Gauthier Roebroeck 2021-04-21 10:02:31 +08:00
parent fbb4171d9b
commit 3ef02409ba
10 changed files with 35 additions and 35 deletions

View file

@ -31,5 +31,5 @@ interface ReadListRequestResultBookDto {
interface ReadListRequestBookDto {
series: string,
number: number,
number: string,
}

View file

@ -10,7 +10,7 @@ data class ReadListRequest(
data class ReadListRequestBook(
val series: String,
val number: Int,
val number: String,
)
data class ReadListRequestResult(

View file

@ -40,7 +40,7 @@ class ReadListMatcher(
val seriesId = seriesMatches.first().id
val seriesBooks = bookRepository.findBySeriesId(seriesId)
val bookMatches = bookMetadataRepository.findByIds(seriesBooks.map { it.id })
.filter { it.number.toIntOrNull()?.equals(book.number) ?: false }
.filter { (it.number.trimStart('0') == book.number.trimStart('0')) }
.map { it.bookId }
when {
bookMatches.size > 1 -> unmatchedBooks += ReadListRequestResultBook(book, "ERR_1013")

View file

@ -28,7 +28,7 @@ class ReadListProvider(
val books = readingList.books.mapNotNull {
val series = computeSeriesFromSeriesAndVolume(it.series, it.volume)
if (!series.isNullOrBlank() && it.number != null)
ReadListRequestBook(series, it.number!!)
ReadListRequestBook(series, it.number!!.trim())
else {
logger.warn { "Book is missing series or number, skipping: $it" }
null

View file

@ -9,7 +9,7 @@ class Book {
var series: String? = null
@JsonProperty(value = "Number")
var number: Int? = null
var number: String? = null
@JsonProperty(value = "Volume")
var volume: Int? = null

View file

@ -6,7 +6,7 @@ import org.gotson.komga.domain.model.ReadListRequestResultBook
data class ReadListRequestBookDto(
val series: String,
val number: Int,
val number: String,
)
data class ReadListRequestResultDto(

View file

@ -78,17 +78,17 @@ class ReadListMatcherTest(
seriesLifecycle.sortBooks(s)
bookMetadataRepository.findById(booksSeries2[0].id).let {
bookMetadataRepository.update(it.copy(number = "025"))
bookMetadataRepository.update(it.copy(number = "0025"))
}
}
val request = ReadListRequest(
name = "readlist",
books = listOf(
ReadListRequestBook(series = "Batman: White Knight", number = 1),
ReadListRequestBook(series = "joker", number = 2),
ReadListRequestBook(series = "Batman: White Knight", number = 2),
ReadListRequestBook(series = "joker", number = 25),
ReadListRequestBook(series = "Batman: White Knight", number = "1"),
ReadListRequestBook(series = "joker", number = "02"),
ReadListRequestBook(series = "Batman: White Knight", number = "2"),
ReadListRequestBook(series = "joker", number = "25"),
)
)
@ -99,7 +99,7 @@ class ReadListMatcherTest(
with(result) {
assertThat(readList).isNotNull
assertThat(unmatchedBooks).isEmpty()
assertThat(errorCode).isBlank()
assertThat(errorCode).isBlank
with(readList!!) {
assertThat(name).isEqualTo(request.name)
assertThat(bookIds).hasSize(4)
@ -125,10 +125,10 @@ class ReadListMatcherTest(
val request = ReadListRequest(
name = "my readlist",
books = listOf(
ReadListRequestBook(series = "batman: white knight", number = 1),
ReadListRequestBook(series = "joker", number = 2),
ReadListRequestBook(series = "BATMAN: WHITE KNIGHT", number = 2),
ReadListRequestBook(series = "joker", number = 25),
ReadListRequestBook(series = "batman: white knight", number = "1"),
ReadListRequestBook(series = "joker", number = "2"),
ReadListRequestBook(series = "BATMAN: WHITE KNIGHT", number = "2"),
ReadListRequestBook(series = "joker", number = "25"),
)
)
@ -176,10 +176,10 @@ class ReadListMatcherTest(
val request = ReadListRequest(
name = "readlist",
books = listOf(
ReadListRequestBook(series = "tokyo ghost", number = 1),
ReadListRequestBook(series = "batman", number = 3),
ReadListRequestBook(series = "joker", number = 3),
ReadListRequestBook(series = "batman", number = 2),
ReadListRequestBook(series = "tokyo ghost", number = "1"),
ReadListRequestBook(series = "batman", number = "3"),
ReadListRequestBook(series = "joker", number = "3"),
ReadListRequestBook(series = "batman", number = "2"),
)
)

View file

@ -21,12 +21,12 @@ class ReadListProviderTest {
books = listOf(
Book().apply {
series = "series 1"
number = 4
number = " 4 "
volume = 2005
},
Book().apply {
series = "series 2"
number = 1
number = "1"
},
)
}
@ -44,12 +44,12 @@ class ReadListProviderTest {
with(books[0]) {
assertThat(series).isEqualTo("series 1 (2005)")
assertThat(number).isEqualTo(4)
assertThat(number).isEqualTo("4")
}
with(books[1]) {
assertThat(series).isEqualTo("series 2")
assertThat(number).isEqualTo(1)
assertThat(number).isEqualTo("1")
}
}
}
@ -62,12 +62,12 @@ class ReadListProviderTest {
books = listOf(
Book().apply {
series = " "
number = 4
number = "4"
volume = 2005
},
Book().apply {
series = null
number = 1
number = "1"
},
Book().apply {
series = "Series"
@ -110,12 +110,12 @@ class ReadListProviderTest {
books = listOf(
Book().apply {
series = "series 1"
number = 4
number = "4"
volume = 2005
},
Book().apply {
series = "series 2"
number = 1
number = "1"
},
)
}
@ -137,12 +137,12 @@ class ReadListProviderTest {
books = listOf(
Book().apply {
series = "series 1"
number = 4
number = "4"
volume = 2005
},
Book().apply {
series = "series 2"
number = 1
number = "1"
},
)
}

View file

@ -21,7 +21,7 @@ class ReadingListTest {
with(books[0]) {
assertThat(series).isEqualTo("Civil War")
assertThat(number).isEqualTo(1)
assertThat(number).isEqualTo("1")
assertThat(volume).isEqualTo(2006)
assertThat(year).isEqualTo(2006)
assertThat(fileName).isEqualTo("Civil War Vol.2006 #01 (July, 2006)")
@ -29,7 +29,7 @@ class ReadingListTest {
with(books[1]) {
assertThat(series).isEqualTo("Wolverine")
assertThat(number).isEqualTo(42)
assertThat(number).isEqualTo("42")
assertThat(volume).isEqualTo(2003)
assertThat(year).isEqualTo(2006)
assertThat(fileName).isEqualTo("Wolverine Vol.2003 #42 (July, 2006)")
@ -37,7 +37,7 @@ class ReadingListTest {
with(books[2]) {
assertThat(series).isEqualTo("X-Factor")
assertThat(number).isEqualTo(8)
assertThat(number).isEqualTo("HS")
assertThat(volume).isEqualTo(2006)
assertThat(year).isEqualTo(2006)
assertThat(fileName).isEqualTo("X-Factor Vol.2006 #08 (August, 2006)")

View file

@ -1,5 +1,5 @@
<?xml version="1.0"?>
<ReadingList xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ReadingList>
<Name>Civil War</Name>
<Books>
<Book Series="Civil War" Number="1" Volume="2006" Year="2006">
@ -10,7 +10,7 @@
<Id>29a69cbf-af64-471d-889c-8fc0f0080f7c</Id>
<FileName>Wolverine Vol.2003 #42 (July, 2006)</FileName>
</Book>
<Book Series="X-Factor" Number="8" Volume="2006" Year="2006">
<Book Series="X-Factor" Number="HS" Volume="2006" Year="2006">
<Id>ec70e585-5a80-428c-a67e-fd22b668449b</Id>
<FileName>X-Factor Vol.2006 #08 (August, 2006)</FileName>
</Book>