FastAPI + Strawberry GraphQL 过滤条件
FastAPI + Strawberry GraphQL Filter Conditions
我目前正在使用 FastAPI + Strawberry GraphQL 构建微服务。我想为具有 and/or 条件的模型公开过滤器。例如,
{
Student(where:{and[{AgeGt: 15},{PercentageLt: 75}]}) {
edges {
node {
Name
Age
Percentage
}
}
}
这可能吗?任何参考或示例都会有很大帮助。
在 Strawberry 中,您可以使用 input types 为您的查询定义参数
这是一个示例,可以帮助您使用草莓定义过滤器:
from typing import Optional, List, TypeVar, Generic
from datetime import date
import strawberry
T = TypeVar("T")
@strawberry.input
class AbelFilter(Generic[T]):
eq: Optional[T] = None
gt: Optional[T] = None
lt: Optional[T] = None
@strawberry.input
class WhereFilter:
foo: Optional[AbelFilter[str]] = None
bar: Optional[AbelFilter[int]] = None
baz: Optional[AbelFilter[str]] = None
@strawberry.type
class Query:
@strawberry.field
def student(self, where: WhereFilter) -> str:
return str(where)
schema = strawberry.Schema(query=Query)
上看到这个
我目前正在使用 FastAPI + Strawberry GraphQL 构建微服务。我想为具有 and/or 条件的模型公开过滤器。例如,
{
Student(where:{and[{AgeGt: 15},{PercentageLt: 75}]}) {
edges {
node {
Name
Age
Percentage
}
}
}
这可能吗?任何参考或示例都会有很大帮助。
在 Strawberry 中,您可以使用 input types 为您的查询定义参数
这是一个示例,可以帮助您使用草莓定义过滤器:
from typing import Optional, List, TypeVar, Generic
from datetime import date
import strawberry
T = TypeVar("T")
@strawberry.input
class AbelFilter(Generic[T]):
eq: Optional[T] = None
gt: Optional[T] = None
lt: Optional[T] = None
@strawberry.input
class WhereFilter:
foo: Optional[AbelFilter[str]] = None
bar: Optional[AbelFilter[int]] = None
baz: Optional[AbelFilter[str]] = None
@strawberry.type
class Query:
@strawberry.field
def student(self, where: WhereFilter) -> str:
return str(where)
schema = strawberry.Schema(query=Query)
上看到这个