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)

Strawberry Playground

上看到这个