Skip to content

Instantly share code, notes, and snippets.

@arantesxyz
Last active September 5, 2023 16:12
Show Gist options
  • Select an option

  • Save arantesxyz/1b488fd685a2f5512f6b8d340e8dde14 to your computer and use it in GitHub Desktop.

Select an option

Save arantesxyz/1b488fd685a2f5512f6b8d340e8dde14 to your computer and use it in GitHub Desktop.
Desafio conceitos em golang

Desafio de conceitos em GoLang

Deve ser entregue um link para um repositório público no Github com o código do desafio.

O desafio consiste no desenvolvimento de duas aplicações que devem seguir os seguintes requisitos obrigatórios:

  • Desenvolvidas em Golang versão 1.21 ou superior.
  • Test Driven Development (TDD); Não é necessário testar o HTTP ou GRPC, apenas o dominio da aplicação.
  • Arquitetura hexagonal (DDD); Utilizar os conceitos para a estrutura interna dos projetos.
  • Interação com Postgres ou CockroachDB.
  • Conter um readme explicando como executar as aplicações.
  • Conter logs utilizando a biblioteca log/slog com informações úteis sobre a execução do programa.
  • Os commits devem ser bem descritos e em ordem cronológica.

Serviço

O serviço expõe 2 endpoints GRPC e faz a interação com o banco de dados.

Endpoint 1: Cria um TODO no banco de dados.

Endpoint 2: Retorna todos os TODO's do banco de dados.

Gateway

O gateway é responsável por fazer a interface entre a API pública (HTTP REST) e o serviço (GRPC). Todas as validações do body, headers, tokens, etc, devem ser feitas no gateway.

Deve expor 3 endpoints HTTP rest:

POST /auth/token

Retorna um token. Como estamos falando de uma aplicação de testes, não é necessário fazer uma conexão com um banco de dados para validar usuário e senha, pode utilizar strings fixas.

POST /todos -> Insere um novo TODO

Se o token no header for válido, fazer o proxy com o serviço, enviando via GRPC para o serviço e retornando a resposta obtida.

GET /todos -> Retorna todos os TODO's

Se o token no header for válido, fazer o proxy com o serviço, enviando via GRPC para o serviço e retornando a resposta obtida.

@arantesxyz

arantesxyz commented Aug 18, 2023

Copy link
Copy Markdown
Author

desafio-conceitos-golang-ilustracao

@arantesxyz

Copy link
Copy Markdown
Author

Não é necessária a autenticação no gRPC.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment