package main
import (
"encoding/json"
"github.com/hypermodeinc/modus/sdk/go/pkg/dgraph"
)
// the name of the Dgraph connection, as specified in the modus.json manifest
const hostName = "my-dgraph"
// declare structures used to parse the JSON document returned by Dgraph query.
type Person struct {
Name string `json:"name,omitempty"`
Age int32 `json:"age,omitempty"`
}
// Dgraph returns an array of Persons
type GetPersonResponse struct {
Persons []*Person `json:"persons"`
}
func GetPerson(name string) (*Person, error) {
statement := `query getPerson($name: string!) {
persons(func: eq(name, $name)) {
name
age
}
}
`
variables := map[string]string{
"$name": name,
}
response, _ := dgraph.Execute(hostName, &dgraph.Request{
Query: &dgraph.Query{
Query: statement,
Variables: variables,
},
})
var data GetPersonResponse
json.Unmarshal([]byte(response.Json), &data)
return data.Persons[0], nil
}