Search code examples
amazon-web-servicesamazon-dynamodbgraphqlaws-appsync

graphql appsync query with boolean filter


I have the need to query all incomplete projects, wherein upon completion a project will be given a status change (Completed) plus a boolean isComplete==true.

I'm working through AWS Appsync to test the queries before I hard-code them into my app, but this one doesn't seem to be effective. I want all projects where isComplete==false or isComplete==null: boolean logic doesn't work with the input1 variable below (0 results).

{"__typename":{"S":"Project"},"addressLine1":{"S":"321 Faith Cir"},"city":{"S":"Perris"},"createdAt":{"S":"2019-03-05T01:01:39.513Z"},"currentOwner":{"S":"pgres52"},"dateRequired":{"S":"2019-03-13-07:00"},"id":{"S":"89a5-42ef7efef8fb"},"status":{"S":"Created"},"statusLastChangedAt":{"S":"2019-03-05T01:01:39.513Z"}}

{
  "input1":{
    "isComplete": {
      "ne": true
    }
  }
}

query listNonCompleteProjects($input1: ModelProjectFilterInput) {
  listProjects(filter: $input1, limit: 20) {
    items {
      id
      currentOwner
      addressLine1
      city
      dateRequired
      isComplete
      statusLastChangedAt
    }
    nextToken
  }
}```

Solution

  • Solved! Partially helped with this post: Prisma.io: How do I filter items with certain fields being null?

    I was able to get it to work with an additional parameter status (string):

    query listNonCompleteProjects($input1: ModelProjectFilterInput) {
      listProjects(filter: $input1, limit: 20) {
        items {
          ...
        }
      }
    }
      "input1":{
        "and": [
          {"status": {"notContains": "Complete"}},
          {"isComplete": {
            "ne": true
          }}
        ]
      },