diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/queries/MangaQuery.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/queries/MangaQuery.kt index af5aa8ad..9a9a7520 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/queries/MangaQuery.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/queries/MangaQuery.kt @@ -122,7 +122,7 @@ class MangaQuery { opAnd.eq(artist, MangaTable.artist) opAnd.eq(author, MangaTable.author) opAnd.eq(description, MangaTable.description) - opAnd.eq(genre?.joinToString(), MangaTable.genre) + genre?.forEach { opAnd.like("%$it%", MangaTable.genre) } opAnd.eq(status?.value, MangaTable.status) opAnd.eq(inLibrary, MangaTable.inLibrary) opAnd.eq(inLibraryAt, MangaTable.inLibraryAt) @@ -172,7 +172,7 @@ class MangaQuery { val artist: StringFilter? = null, val author: StringFilter? = null, val description: StringFilter? = null, - // val genre: List? = null, // todo + val genre: StringFilter? = null, val status: MangaStatusFilter? = null, val inLibrary: BooleanFilter? = null, val inLibraryAt: LongFilter? = null, @@ -194,6 +194,7 @@ class MangaQuery { andFilterWithCompareString(MangaTable.artist, artist), andFilterWithCompareString(MangaTable.author, author), andFilterWithCompareString(MangaTable.description, description), + andFilterWithCompareString(MangaTable.genre, genre), andFilterWithCompare(MangaTable.status, status?.asIntFilter()), andFilterWithCompare(MangaTable.inLibrary, inLibrary), andFilterWithCompare(MangaTable.inLibraryAt, inLibraryAt), diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/queries/filter/Filter.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/queries/filter/Filter.kt index 6c482432..6c706395 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/queries/filter/Filter.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/queries/filter/Filter.kt @@ -391,6 +391,11 @@ class OpAnd(var op: Op? = null) { value: T?, column: Column>, ) = andWhere(value) { column eq it } + + fun like( + value: String?, + column: Column, + ) = andWhere(value) { column like it } } fun > andFilterWithCompare(