github.com/rodrwan/medium-example


Install
go get github.com/rodrwan/medium-example

Documentation

Medium example

Este repositorio es utilizado en un nuevo post de medium que explica el uso de GraphQL, PostgreSQL, Goose y Go.

Básicamente es un mini monolito que permite crear usuarios con direcciones usando GraphQL como protocolo de comunicación.

Librerias usadas:

  • github.com/99designs/gqlgen
  • github.com/gorilla/handlers
  • github.com/lib/pq
  • github.com/jmoiron/sqlx
  • github.com/Masterminds/squirrel

Instalar goose

$ go get -tags nosqlite3 github.com/steinbacher/goose/cmd/goose

Migraciones para postgres

$ goose -path database/postgres -env docker create base

Run server

$ go run cmd/server/main.go

queries

To get all users

query {
    users {
        id,
        first_name,
        last_name,
        email,
        phone,
        birthdate
    }
}

To get an specific user

query {
    user(id: "<id>") {
        id,
        first_name,
        last_name,
        email,
        phone,
        birthdate,
        address {
            address_line,
            city,
            locality,
            region,
            country,
            postal_code
        }
    }
}

Mutation

mutation {
  createUser(
    input: {
      email: "john.doe@example.org"
      first_name: "John"
      last_name: "Doe"
      phone: "912345678"
      birthdate: "1990-01-06T11:30:00+00:00"
      address: {
        address_line: "4129 Sycamore Lake Road"
        city: "Green Bay"
        locality: "Wisconsin"
        region: "Wisconsin"
        country: "USA"
        postal_code: 54304
      }
    }
  ) {
    id
    email
    first_name
    last_name
    phone
    address {
      address_line
      city
      locality
      region
      country
      postal_code
    }
  }
}

R.