Skip to content

jeffersonto/feira-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FEIRA-API

golang sqllite

Menu

Visão Geral

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.

Architectural Decision Record (ADR)

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

Requisitos

Como executar

Seguir os comandos abaixo:

  1. Clone do projeto através do Git
git clone https://github.com/jeffersonto/feira-api.git
  1. Na pasta raiz do projeto, executar a integração das dependências:
go mod tidy
  1. 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.

Testes

Para acessar o coverage clique aqui

Para execução dos testes com cobertura, na pasta raiz do projeto, seguir os passos:

  1. Executar o go test
go test -v -coverprofile cover.out ./...
  1. Executar o go tool cover
go tool cover -html cover.out -o cover.html
  1. Abrir o cover.html no seu navegador de preferência.

Principais End-Points e Retornos

Swagger - http://localhost:8080/swagger/index.html

  • 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

Collection Postman

No link abaixo será possível fazer o download da collection do Postman para facilitar as chamadas dos end-points:

Feita-Api Collection Postman

Débitos Técnicos

  • Implementação de cache
  • Atualização de feiras por Patch

Licença

The MIT License (MIT)

Autor

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published