- Visão Geral
- Architectural Decision Record (ADR)
- Requisitos
- Como executar
- Collection Postman
- Débitos Técnicos
- Licença
- Autor
Este projeto visa carregar informações das feiras públicas disponibilizadas no formato CSV pela Prefeitura de São Paulo, e alimentar um banco de dados em memória (SQL Lite) para simular um fluxo de CRUD com os recursos: GET, POST, PUT e DELETE.
1. Atributos de Estruturas de Dados e Documentação em Português
2. Banco de Dados em Memória (SQL Lite) para Gerenciamento de Feiras
3. Layout de Estrutura de Pasta e Arquitetura de Software
4. Testes focados no core da aplicação e percentual de cobertura de testes
5. Desnormalização da tabela de feiras livres
Seguir os comandos abaixo:
- Clone do projeto através do Git
git clone https://github.com/jeffersonto/feira-api.git
- Na pasta raiz do projeto, executar a integração das dependências:
go mod tidy
- Executar o run do GO
go run github.com/jeffersonto/feira-api/cmd
Ou abrir o projeto em sua IDE preferida e executá-lo através de atalhos disponíveis.
O arquivo de feira será importado automaticamente a cada execução da aplicação, não sendo necessário quaisquer passos adicionais.
Para acessar o coverage clique aqui
Para execução dos testes com cobertura, na pasta raiz do projeto, seguir os passos:
- Executar o go test
go test -v -coverprofile cover.out ./...
- Executar o go tool cover
go tool cover -html cover.out -o cover.html
- Abrir o
cover.html
no seu navegador de preferência.
- Verifica se a aplicação está em execução (Ping)
curl --location --request GET 'http://localhost:8080/ping'
200 - Ok: busca realizada com registros
- Busca uma feira por ID
curl --location --request GET 'http://localhost:8080/v1/feiras/1'
200 - Ok: busca realizada com registros
204 - No Content: busca realizada sem registros
400 - Bad Request: path parameter inválido
500 - Internal Server Error: erro desconhecido na busca dos dados
- Busca feiras Por Query Params
curl --location --request GET 'http://localhost:8080/v1/feiras?bairro=VL FORMOSA'
Parameters | Type |
---|---|
distrito | string |
regiao5 | string |
nomeFeira | string |
bairro | string |
200 - Ok: busca realizada com registros
204 - No Content: busca realizada sem registros
400 - Bad Request: query parameter inválido
500 - Internal Server Error: erro desconhecido na busca dos dados
- Busca todas as feiras
curl --location --request GET 'http://localhost:8080/v1/feiras''
200 - Ok: busca realizada com registros
204 - No Content: busca realizada sem registros
500 - Internal Server Error: erro desconhecido na busca dos dados
- Cria uma Nova Feira
curl --location --request POST 'http://localhost:8080/v1/feiras' \
--header 'Content-Type: application/json' \
--data-raw '{
"longitude": -46550164,
"latitude": -23558733,
"setor_censitario": 355030885000091,
"area_ponderacao": 3550308005040,
"codigo_ibge": "87",
"distrito": "VILA FORMOSA",
"codigo_subprefeitura": 26,
"subprefeitura": "ARICANDUVA-FORMOSA-CARRAO",
"regiao5": "Leste",
"regiao8": "Leste 1",
"nome_feira": "VILA FORMOSA",
"registro": "4041-0",
"logradouro": "RUA MARAGOJIPE",
"numero": "S/N",
"bairro": "VL FORMOSA",
"referencia": "TV RUA PRETORIA"
}'
O novo recurso gerado será retornado no header location
Exemplo:
content-length: 0
content-type: application/json
date: Mon,19 Sep 2022 13:22:26 GMT
location: http://localhost:8080/v1/feiras/881
201 - Created: novo registro criado com sucesso
400 - Bad Request: body passado incorretamente
500 - Internal Server Error: erro desconhecido na busca dos dados
- Atualiza uma Feira
curl --location --request PUT 'http://localhost:8080/v1/feiras/1' \
--header 'Content-Type: application/json' \
--data-raw '{
"longitude": -46550164,
"latitude": -23558733,
"setor_censitario": 355030885000091,
"area_ponderacao": 3550308005040,
"codigo_ibge": "87",
"distrito": "VILA FORMOSA",
"codigo_subprefeitura": 26,
"subprefeitura": "ARICANDUVA-FORMOSA-CARRAO",
"regiao5": "Leste",
"regiao8": "Leste 1",
"nome_feira": "VILA FORMOSA",
"registro": "4041-0",
"logradouro": "RUA MARAGOJIPE",
"numero": "S/N",
"bairro": "VL FORMOSA",
"referencia": "TV RUA PRETORIA - 3"
}'
200 - Ok
204 - No Content: não foi encontrado registro para atualizar
400 - Bad Request: body ou path parameter passado incorretamente
500 - Internal Server Error: erro desconhecido na busca dos dados
- Deleta uma Feira por ID
curl --location --request DELETE 'http://localhost:8080/v1/feiras/1'
204 - No Content: deleção executada corretamente ou não houve afetação por ausência do dado
404 - Bad Request: path parameter inválido
500 - Internal Server Error: erro desconhecido na busca dos dado
No link abaixo será possível fazer o download da collection do Postman para facilitar as chamadas dos end-points:
- Implementação de cache
- Atualização de feiras por Patch
The MIT License (MIT)
-
Jefferson de Almeida Costa:
- Linkedin: https://www.linkedin.com/in/jeffersonacosta/
- Email: jefferson.acosta@hotmail.com