feat(api): search series by language

This commit is contained in:
Gauthier Roebroeck 2020-08-24 17:30:42 +08:00
parent 115ad42d9c
commit 723d7c1fe9
3 changed files with 8 additions and 3 deletions

View file

@ -5,7 +5,8 @@ open class SeriesSearch(
val collectionIds: Collection<Long>? = null,
val searchTerm: String? = null,
val metadataStatus: Collection<SeriesMetadata.Status>? = null,
val publishers: Collection<String>? = null
val publishers: Collection<String>? = null,
val languages: Collection<String>? = null
)
class SeriesSearchWithReadProgress(
@ -14,5 +15,6 @@ class SeriesSearchWithReadProgress(
searchTerm: String? = null,
metadataStatus: Collection<SeriesMetadata.Status>? = null,
publishers: Collection<String>? = null,
languages: Collection<String>? = null,
val readStatus: Collection<ReadStatus>? = null
) : SeriesSearch(libraryIds, collectionIds, searchTerm, metadataStatus, publishers)
) : SeriesSearch(libraryIds, collectionIds, searchTerm, metadataStatus, publishers, languages)

View file

@ -186,6 +186,7 @@ class SeriesDtoDao(
searchTerm?.let { c = c.and(d.TITLE.containsIgnoreCase(it)) }
metadataStatus?.let { c = c.and(d.STATUS.`in`(it)) }
publishers?.let { publishers -> c = c.and(lower(d.PUBLISHER).`in`(publishers.map { it.toLowerCase() })) }
languages?.let { languages -> c = c.and(lower(d.LANGUAGE).`in`(languages.map { it.toLowerCase() })) }
return c
}

View file

@ -78,6 +78,7 @@ class SeriesController(
@RequestParam(name = "status", required = false) metadataStatus: List<SeriesMetadata.Status>?,
@RequestParam(name = "read_status", required = false) readStatus: List<ReadStatus>?,
@RequestParam(name = "publisher", required = false) publishers: List<String>?,
@RequestParam(name = "language", required = false) languages: List<String>?,
@RequestParam(name = "unpaged", required = false) unpaged: Boolean = false,
@Parameter(hidden = true) page: Pageable
): Page<SeriesDto> {
@ -99,7 +100,8 @@ class SeriesController(
searchTerm = searchTerm,
metadataStatus = metadataStatus,
readStatus = readStatus,
publishers = publishers
publishers = publishers,
languages = languages
)
return seriesDtoRepository.findAll(seriesSearch, principal.user.id, pageRequest)