GraphQL - Return the Size of an Array Field?

Yes, Custom DQL Resolvers to the rescue:

Add this to your GraphQL schema:

type Query {
  queryGuestsByMinVisits(visits: Int!): [Guest] @custom(dql: """
    query q($visits: int) {
        var(func: type(Guest)) {
            {
                visitCount as count(Guest.guest_visit_dates)
            }
        }
    
        queryGuestsByMinVisits(func: uid(visitCount)) @filter(ge(val(visitCount), $visits)) {
            id: uid
            guest_name: Guest.guest_name
            guest_visit_dates: Guest.guest_visit_dates
            guest_visit_count: val(visitCount)
        }
    }
	"""
    )
}

Then query like this:

query {
  queryGuestsByMinVisits(visits: 2) {
    id
    guest_name
    guest_visit_dates
    guest_visit_count
  }
}

I’ve pushed all this up to my sandbox: https://github.com/matthewmcneely/dgraph-v21.03-sandbox/tree/explanations/lamda-query-resolver

2 Likes