From 07ae17105b8fd2c7676fda59f22cac74bf34266b Mon Sep 17 00:00:00 2001 From: Syer10 Date: Wed, 17 Jun 2026 16:01:45 -0400 Subject: [PATCH] Add ContentRatingFilter --- .../graphql/queries/ExtensionQuery.kt | 6 ++-- .../tachidesk/graphql/queries/SourceQuery.kt | 6 ++-- .../graphql/queries/filter/Filter.kt | 33 ++++++++++--------- 3 files changed, 25 insertions(+), 20 deletions(-) diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/queries/ExtensionQuery.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/queries/ExtensionQuery.kt index 4ecd2071d..1daf8cf8d 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/queries/ExtensionQuery.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/queries/ExtensionQuery.kt @@ -21,6 +21,7 @@ import org.jetbrains.exposed.v1.jdbc.selectAll import org.jetbrains.exposed.v1.jdbc.transactions.transaction import suwayomi.tachidesk.graphql.directives.RequireAuth import suwayomi.tachidesk.graphql.queries.filter.BooleanFilter +import suwayomi.tachidesk.graphql.queries.filter.ContentRatingFilter import suwayomi.tachidesk.graphql.queries.filter.Filter import suwayomi.tachidesk.graphql.queries.filter.HasGetOp import suwayomi.tachidesk.graphql.queries.filter.IntFilter @@ -28,6 +29,7 @@ import suwayomi.tachidesk.graphql.queries.filter.LongFilter import suwayomi.tachidesk.graphql.queries.filter.OpAnd import suwayomi.tachidesk.graphql.queries.filter.StringFilter import suwayomi.tachidesk.graphql.queries.filter.andFilterWithCompare +import suwayomi.tachidesk.graphql.queries.filter.andFilterWithCompareEnum import suwayomi.tachidesk.graphql.queries.filter.andFilterWithCompareString import suwayomi.tachidesk.graphql.queries.filter.applyOps import suwayomi.tachidesk.graphql.server.primitives.Cursor @@ -156,7 +158,7 @@ class ExtensionQuery { val lang: StringFilter? = null, @GraphQLDeprecated("", ReplaceWith("storeIndexUrl")) val isNsfw: BooleanFilter? = null, - // val contentRating: EnumFilter? = null, + val contentRating: ContentRatingFilter? = null, val isInstalled: BooleanFilter? = null, val hasUpdate: BooleanFilter? = null, val isObsolete: BooleanFilter? = null, @@ -177,7 +179,7 @@ class ExtensionQuery { andFilterWithCompareString(ExtensionTable.versionName, versionName), andFilterWithCompare(ExtensionTable.versionCode, versionCodeLong), andFilterWithCompareString(ExtensionTable.lang, lang), - // andFilterWithCompareEnum(ExtensionTable.contentRating, contentRating), + andFilterWithCompareEnum(ExtensionTable.contentRating, contentRating), andFilterWithCompare(ExtensionTable.isInstalled, isInstalled), andFilterWithCompare(ExtensionTable.hasUpdate, hasUpdate), andFilterWithCompare(ExtensionTable.isObsolete, isObsolete), diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/queries/SourceQuery.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/queries/SourceQuery.kt index 8ded3e2b1..49bb60891 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/queries/SourceQuery.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/queries/SourceQuery.kt @@ -21,12 +21,14 @@ import org.jetbrains.exposed.v1.jdbc.selectAll import org.jetbrains.exposed.v1.jdbc.transactions.transaction import suwayomi.tachidesk.graphql.directives.RequireAuth import suwayomi.tachidesk.graphql.queries.filter.BooleanFilter +import suwayomi.tachidesk.graphql.queries.filter.ContentRatingFilter import suwayomi.tachidesk.graphql.queries.filter.Filter import suwayomi.tachidesk.graphql.queries.filter.HasGetOp import suwayomi.tachidesk.graphql.queries.filter.LongFilter import suwayomi.tachidesk.graphql.queries.filter.OpAnd import suwayomi.tachidesk.graphql.queries.filter.StringFilter import suwayomi.tachidesk.graphql.queries.filter.andFilterWithCompareEntity +import suwayomi.tachidesk.graphql.queries.filter.andFilterWithCompareEnum import suwayomi.tachidesk.graphql.queries.filter.andFilterWithCompareString import suwayomi.tachidesk.graphql.queries.filter.applyOps import suwayomi.tachidesk.graphql.server.primitives.Cursor @@ -122,7 +124,7 @@ class SourceQuery { val lang: StringFilter? = null, @GraphQLDeprecated("replace with contentRating == ContentRating.PORNOGRAPHIC", ReplaceWith("contentRating")) val isNsfw: BooleanFilter? = null, - // val contentRating: EnumFilter? = null, + val contentRating: ContentRatingFilter? = null, override val and: List? = null, override val or: List? = null, override val not: SourceFilter? = null, @@ -132,7 +134,7 @@ class SourceQuery { andFilterWithCompareEntity(SourceTable.id, id), andFilterWithCompareString(SourceTable.name, name), andFilterWithCompareString(SourceTable.lang, lang), - // andFilterWithCompareEnum(SourceTable.contentRating, contentRating) + andFilterWithCompareEnum(SourceTable.contentRating, contentRating), ) } 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 401a48797..ef178000c 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 @@ -28,6 +28,7 @@ import org.jetbrains.exposed.v1.core.upperCase import org.jetbrains.exposed.v1.core.wrap import org.jetbrains.exposed.v1.jdbc.Query import org.jetbrains.exposed.v1.jdbc.andWhere +import suwayomi.tachidesk.graphql.types.ContentRating class ILikeEscapeOp( expr1: Expression<*>, @@ -329,23 +330,23 @@ data class DoubleFilter( ) } -data class EnumFilter>( +data class ContentRatingFilter( override val isNull: Boolean? = null, - override val equalTo: T? = null, - override val notEqualTo: T? = null, - override val notEqualToAll: List? = null, - override val notEqualToAny: List? = null, - override val distinctFrom: T? = null, - override val distinctFromAll: List? = null, - override val distinctFromAny: List? = null, - override val notDistinctFrom: T? = null, - override val `in`: List? = null, - override val notIn: List? = null, - override val lessThan: T? = null, - override val lessThanOrEqualTo: T? = null, - override val greaterThan: T? = null, - override val greaterThanOrEqualTo: T? = null, -) : ComparableScalarFilter + override val equalTo: ContentRating? = null, + override val notEqualTo: ContentRating? = null, + override val notEqualToAll: List? = null, + override val notEqualToAny: List? = null, + override val distinctFrom: ContentRating? = null, + override val distinctFromAll: List? = null, + override val distinctFromAny: List? = null, + override val notDistinctFrom: ContentRating? = null, + override val `in`: List? = null, + override val notIn: List? = null, + override val lessThan: ContentRating? = null, + override val lessThanOrEqualTo: ContentRating? = null, + override val greaterThan: ContentRating? = null, + override val greaterThanOrEqualTo: ContentRating? = null, +) : ComparableScalarFilter data class StringFilter( override val isNull: Boolean? = null,