Skip to content

michurin/playground-graphql-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

dde6293 · Nov 10, 2018

History

34 Commits
Nov 10, 2018
Sep 28, 2018
Sep 21, 2018
Sep 21, 2018
Sep 28, 2018

Repository files navigation

Playing with GraphQL

Install

go get github.com/michurin/playground-graphql-go

Setup

$GOPATH/src/github.com/michurin/playground-graphql-go/database_init.sh

By the way, you can easily view db using database_show.sh.

Run

$GOPATH/bin/playground-graphql-go

or

go run $GOPATH/src/github.com/michurin/playground-graphql-go/main.go

Enjoy

Q='query {x_customer(id: 200) {name rides {destination driver {rides {destination customer{name}}}}}}'
curl -XPOST http://localhost:8080/gql -H 'Content-Type: application/graphql' -d "$Q"
{
    "data": {
        "x_customer": {
            "name": "Customer_200",
            "rides": [
                {
                    "destination": "Address_for_ride_2",
                    "driver": {
                        "rides": [
                            {
                                "customer": {
                                    "name": "Customer_100"
                                },
                                "destination": "Adderss_for_ride_1"
                            },
                            {
                                "customer": {
                                    "name": "Customer_200"
                                },
                                "destination": "Address_for_ride_2"
                            }
                        ]
                    }
                },
                {
                    "destination": "Address_for_ride_3",
                    "driver": {
                        "rides": [
                            {
                                "customer": {
                                    "name": "Customer_200"
                                },
                                "destination": "Address_for_ride_3"
                            }
                        ]
                    }
                }
            ]
        }
    }
}

GraphQL schema

type Query {
  x_customer(id: Int!): Customer
  x_ride(id: Int!): Ride
  x_rides(ids: [Int!]!): [Ride]
}

type Customer {
  deep_rides: [Ride!]!
  id: Int!
  name: String!
  rides: [Ride!]!
}

type Driver {
  id: Int!
  name: String!
  rides: [Ride!]!
}

type Ride {
  customer: Customer!
  destination: String!
  driver: Driver!
  id: Int!
}

input RideInput {
  customer_id: Int!
  driver_id: Int!
  destination: String!
}

type Mutation {
  add_ride(params: RideInput!): Ride
}

Database schema

                Ride
Driver          +-------------+
+-----------+   | ride_id     |   Customer
| driver_id |--<| driver_id   |   +-------------+
| name      |   | customer_id |>--| customer_id |
+-----------+   | destination |   | name        |
                +-------------+   +-------------+

More details in database_init.sh script.

Related tools