Skip to content

ropehapi/graphql-go-expert

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GraphQL API

Antes de mais nada: No linux, talvez seja necessário o pacote build essentials para rodar esse projeto. sudo apt install --reinstall build-essential

Devemos sempre nos lembrar que GraphQL é apenas uma das várias formas de expor nossa aplicação. Nesse projeto teremos um servidor web responsável apenas por expor uma rota para a manipulação da nossa aplicação através de um playground GraphQL.

A nível de desenvolvimento, utilizaremos uma biblioteca chamada QQLGen para gerar código boilerplate para nós a partir da definição de entidades, porém essa lib qqlgen não precisa ser compilada para o nosso produto final, visto que é apenas uma ferramenta de desenvolvimento, por isso foi importada com o _ em um arquivo chamado tools.go.

Dev

Para inicializar um projeto GraphQL:

go run github.com/99designs/gqlgen init

Para gerar um schema das entidades:

Esse comando lê o arquivo schema.graphqls e gera o código boilerplate a partir dele. A partir desse comando, será criado um arquivo schema.resolvers.go contendo todos os resolvers onde deverá ser implementado o consumo do código da nossa aplicação de fato, a nossa regra de negócio que deverá estar dentro da internal.

go run github.com/99designs/gqlgen generate

Cada objeto de banco de dados criado deve ser injetada no arquivo resolver.go para permitir que através da injeção de dependências consigamos acessar os "repositórios" dentro da implementação do consumo do nosso código de aplicação em schema.resolvers.go

Cada objeto de banco de dados injetado no arquivo resolver.go deve ser inicializado e injetado no resolver no arquivo main.go.

Banco de dados

Para esse projeto, escolhemos trabalhar com um banco em memória como o SQLite3. Para rodar queries nesse banco, você vai precisar do sqlite3 instalado em sua máquina, e para isso basta instala-lo com o comando sudo apt install sqlite3. Para acessar os dados desse banco e manipula-lo via terminal, basta rodar sqlite3 nome_banco.db e rodar suas queries.

Migrations (a fins de registro apenas)

create table categories (id string, name string, description string)

create table courses (id string, name string, description string, category_id int)

Usando a API

Para usar a API, basta acessar o servidor da aplicação (no caso http://localhost:8080) e rodar as queries GraphQL.

Queries

mutation createCategory {
  createCategory(input:{
    name: "Joaquin Phoenix",
    description: "Ator que interpreta o personagem coringa no filme da DC"
  }) {
    id,
    name,
    description
  }
}

mutation createCourse {
  createCourse(input: {
    	name: "Apenda Golang",
    description: "Curso do thiago temporim",
    categoryId: "3ab1ce4f-0484-4dfc-98b2-af7e7c120499"
  }) {
    id,
    name
  }
}

query queryCategories {
  categories {
    id,
    name,
    description
  }
}

query queryCourses {
  courses {
    id,
    name,
    description,
  }
}

query queryCategoriesWithCourses {
  categories {
    id,
    name,
    courses {
      id,
      name
    }
  }
}

About

Estudos (Go Expert) | API | Go | Finalizado

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages