func getSubResourceResolver(r *resource.Resource) graphql.FieldResolveFn { return func(p graphql.ResolveParams) (interface{}, error) { parent, ok := p.Source.(map[string]interface{}) if !ok { return nil, nil } lookup, page, perPage, err := listParamResolver(r, p, nil) if err != nil { return nil, err } // Limit the connection to parent's owned lookup.AddQuery(schema.Query{ schema.Equal{ Field: r.ParentField(), Value: parent["id"], }, }) list, err := r.Find(p.Context, lookup, page, perPage) if err != nil { return nil, err } result := make([]map[string]interface{}, len(list.Items)) for i, item := range list.Items { result[i] = item.Payload } return result, nil } }