code: func ConnectionDefinitions(config ConnectionConfig) *GraphQLConnectionDefinitions {
  
  	edgeType := graphql.NewObject(graphql.ObjectConfig{
  		Name:        config.Name + "Edge",
  		Description: "An edge in a connection",
  		Fields: graphql.Fields{
  			"node": &graphql.Field{
  				Type:        config.NodeType,
  				Description: "The item at the end of the edge",
  			},
  			"cursor": &graphql.Field{
  				Type:        graphql.NewNonNull(graphql.String),
  				Description: " cursor for use in pagination",
  			},
  		},
  	})
  	for fieldName, fieldConfig := range config.EdgeFields {
  		edgeType.AddFieldConfig(fieldName, fieldConfig)
  	}
  
  	connectionType := graphql.NewObject(graphql.ObjectConfig{
  		Name:        config.Name + "Connection",
  		Description: "A connection to a list of items.",
  
  		Fields: graphql.Fields{
  			"pageInfo": &graphql.Field{
  				Type:        graphql.NewNonNull(pageInfoType),
  				Description: "Information to aid in pagination.",
  			},
  			"edges": &graphql.Field{
  				Type:        graphql.NewList(edgeType),
  				Description: "Information to aid in pagination.",
  			},
  		},
  	})
  	for fieldName, fieldConfig := range config.ConnectionFields {
  		connectionType.AddFieldConfig(fieldName, fieldConfig)
  	}
  
  	return &GraphQLConnectionDefinitions{
  		EdgeType:       edgeType,
  		ConnectionType: connectionType,
  	}
  }
docs: /*
  Returns a GraphQLObjectType for a connection with the given name,
  and whose nodes are of the specified type.
  */