paddockpass/graph/main.go
2020-07-26 01:41:30 +02:00

110 lines
1.6 KiB
Go

package graph
import (
"context"
"log"
"github.com/dgraph-io/dgo/v2"
"github.com/dgraph-io/dgo/v2/protos/api"
"google.golang.org/grpc"
)
func ConnectToDgraph() (*dgo.Dgraph, error) {
client, err := grpc.Dial("localhost:9080", grpc.WithInsecure())
if err != nil {
log.Fatal(err)
}
return dgo.NewDgraphClient(
api.NewDgraphClient(client),
), err
}
func InitSchema(c *dgo.Dgraph) error {
err := c.Alter(context.Background(), &api.Operation{
DropAll: true,
Schema: `
averageSpeed: uid .
circuit: uid .
constructor: uid .
constructorId: string .
date: string .
dob: string .
driver: uid .
fastestLap: uid .
firstName: string .
grid: string .
lap: string .
laps: string .
lastName: string @index(term) .
location: string @index(term) .
millis: string .
name: string @index(term) .
nationality: string @index(term) .
number: string .
points: string .
position: string @index(term) .
raceName: string @index(term) .
rank: string .
round: string .
season: string @index(term) .
speed: string .
status: string .
time: string .
type: string @index(term) .
units: string .
url: string .
type Driver {
firstName: string
lastName: string
nationality: string
dob: string
type: string
}
type Constructor {
constructorId: string
url: string
name: string
nationality: string
}
type Result {
number: string
position: string
points: string
driver: Driver
constructor: Constructor
grid: string
laps: string
status: string
time: Time
}
type Circuit {
name: string
location: string
url: string
type: string
}
type Race {
season: string
round: string
raceName: string
circuit: Circuit
date: string
url: string
type: string
}
`})
if err != nil {
return err
}
return nil
}