Spaces:
Running
Running
// _ _ | |
// __ _____ __ ___ ___ __ _| |_ ___ | |
// \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ | |
// \ V V / __/ (_| |\ V /| | (_| | || __/ | |
// \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| | |
// | |
// Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. | |
// | |
// CONTACT: [email protected] | |
// | |
package nearText | |
import ( | |
"fmt" | |
"github.com/tailor-inc/graphql" | |
"github.com/weaviate/weaviate/adapters/handlers/graphql/descriptions" | |
) | |
func (g *GraphQLArgumentsProvider) getNearTextArgumentFn(classname string) *graphql.ArgumentConfig { | |
return g.nearTextArgument("GetObjects", classname) | |
} | |
func (g *GraphQLArgumentsProvider) aggregateNearTextArgumentFn(classname string) *graphql.ArgumentConfig { | |
return g.nearTextArgument("Aggregate", classname) | |
} | |
func (g *GraphQLArgumentsProvider) exploreNearTextArgumentFn() *graphql.ArgumentConfig { | |
return g.nearTextArgument("Explore", "") | |
} | |
func (g *GraphQLArgumentsProvider) nearTextArgument(prefix, className string) *graphql.ArgumentConfig { | |
prefixName := fmt.Sprintf("%s%s", prefix, className) | |
return &graphql.ArgumentConfig{ | |
Type: graphql.NewInputObject( | |
graphql.InputObjectConfig{ | |
Name: fmt.Sprintf("%sNearTextInpObj", prefixName), | |
Fields: g.nearTextFields(prefixName), | |
Description: descriptions.GetWhereInpObj, | |
}, | |
), | |
} | |
} | |
func (g *GraphQLArgumentsProvider) nearTextFields(prefix string) graphql.InputObjectConfigFieldMap { | |
nearTextFields := graphql.InputObjectConfigFieldMap{ | |
"concepts": &graphql.InputObjectFieldConfig{ | |
// Description: descriptions.Concepts, | |
Type: graphql.NewNonNull(graphql.NewList(graphql.String)), | |
}, | |
"moveTo": &graphql.InputObjectFieldConfig{ | |
Description: descriptions.VectorMovement, | |
Type: graphql.NewInputObject( | |
graphql.InputObjectConfig{ | |
Name: fmt.Sprintf("%sMoveTo", prefix), | |
Fields: g.movementInp(fmt.Sprintf("%sMoveTo", prefix)), | |
}), | |
}, | |
"certainty": &graphql.InputObjectFieldConfig{ | |
Description: descriptions.Certainty, | |
Type: graphql.Float, | |
}, | |
"distance": &graphql.InputObjectFieldConfig{ | |
Description: descriptions.Distance, | |
Type: graphql.Float, | |
}, | |
"moveAwayFrom": &graphql.InputObjectFieldConfig{ | |
Description: descriptions.VectorMovement, | |
Type: graphql.NewInputObject( | |
graphql.InputObjectConfig{ | |
Name: fmt.Sprintf("%sMoveAwayFrom", prefix), | |
Fields: g.movementInp(fmt.Sprintf("%sMoveAwayFrom", prefix)), | |
}), | |
}, | |
} | |
if g.nearTextTransformer != nil { | |
nearTextFields["autocorrect"] = &graphql.InputObjectFieldConfig{ | |
Description: "Autocorrect input text values", | |
Type: graphql.Boolean, | |
} | |
} | |
return nearTextFields | |
} | |
func (g *GraphQLArgumentsProvider) movementInp(prefix string) graphql.InputObjectConfigFieldMap { | |
return graphql.InputObjectConfigFieldMap{ | |
"concepts": &graphql.InputObjectFieldConfig{ | |
Description: descriptions.Keywords, | |
Type: graphql.NewList(graphql.String), | |
}, | |
"objects": &graphql.InputObjectFieldConfig{ | |
Description: "objects", | |
Type: graphql.NewList(g.objectsInpObj(prefix)), | |
}, | |
"force": &graphql.InputObjectFieldConfig{ | |
Description: descriptions.Force, | |
Type: graphql.NewNonNull(graphql.Float), | |
}, | |
} | |
} | |
func (g *GraphQLArgumentsProvider) objectsInpObj(prefix string) *graphql.InputObject { | |
return graphql.NewInputObject( | |
graphql.InputObjectConfig{ | |
Name: fmt.Sprintf("%sMovementObjectsInpObj", prefix), | |
Fields: graphql.InputObjectConfigFieldMap{ | |
"id": &graphql.InputObjectFieldConfig{ | |
Type: graphql.String, | |
Description: "id of an object", | |
}, | |
"beacon": &graphql.InputObjectFieldConfig{ | |
Type: graphql.String, | |
Description: descriptions.Beacon, | |
}, | |
}, | |
Description: "Movement Object", | |
}, | |
) | |
} | |