star-planet

command module
v0.0.0-...-6452c0a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 6, 2022 License: BSD-3-Clause Imports: 9 Imported by: 0

README

Star Wars API to Game

Este projeto tem o objetivo de fornecer uma API Rest com operações de consulta, inserção e carregamento para os planetas da saga Star Wars.

Começando

Essas instruções fornecerão uma cópia do projeto que pode ser executada em sua máquina local para fins de desenvolvimento e teste. Consulte o item de implantação para obter notas sobre como implantar o projeto em um sistema ativo.

Pré-requisitos

Este pacote foi criado com go 1.19 e tudo que você precisa é a biblioteca go padrão. O projeto ate o momento possui somente 3 dependências

  • mock - para geração dos mocks nos testes unitários
  • pq - driver de conexão para o banco postgres
  • sqlx - para manipulação das queries na camada repository

Variáveis

Para facilitar a execução da aplicação, o projeto possui um arquivo .env para declarar as variáveis de ambiente

HOST - Endereço do host que a aplicação usará.
PORT - Número da porta onde a aplicação escutará as requisições http.
DEBUG - Variável para definir se uma API produzirá logs para stdout.
STORAGE - Endereço do banco de dados.

Observação

A maior parte das operações descritas nessa documentação, como instalação, teste e etc, possuem tarefas definidas no arquivo Makefile. Facilitando no processo de execução e mantenabilidade do projeto.

Instalação

Isto é o que você precisa para instalar o aplicativo a partir do código-fonte:

git clone https://github.com/paraizofelipe/star-planet.git 

Para construir a versão do docker você pode utilizar o CLI docker-compose com o comando:

make dk-deploy

Executando os testes

Até eu terminar este README não há tantos testes de unidade escritos.

Você pode executar testes assim:

make test

Para rodar a API local em sua workstation você pode executar o comando:

STORAGE=postgres://star:planet@localhost:5432/star-planet?sslmode=disable DEBUG=true HOST=0.0.0.0 PORT=3000 make run

Lembrando que todas a variáveis de ambiente podem ser consultadas no arquivo .env e até mesmo utilizadas em conjunto com o direnv

API

Load

Carrega um planeta não existente na base de dados, consultando outra API swapi.dev. Caso o planeta já exista, o processo de load sera ignorado.

curl -i -X POST "http://localhost:300/api/planets/1"

FindByBy

Busca um planeta na base de dados pelo seu ID.

curl -i -X GET "http://localhost:300/api/planets/id/1"

FindByName

Busca um planeta na base de dados pelo seu nome.

curl -i -X GET "http://localhost:300/api/planets/name/Tatooine"

Remove

Remove um planeta da base de dados pelo seu ID.

curl -i -X DELETE "http://localhost:300/api/planets/id/1"

List

Lista todos os planetas existentes na base de dados.

curl -i -X GET "http://localhost:300/api/planets/"

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
film
repository
Package repository is a generated GoMock package.
Package repository is a generated GoMock package.
service
Package service is a generated GoMock package.
Package service is a generated GoMock package.
planet
repository
Package repository is a generated GoMock package.
Package repository is a generated GoMock package.
service
Package service is a generated GoMock package.
Package service is a generated GoMock package.
Package swapi is a generated GoMock package.
Package swapi is a generated GoMock package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL