Operações básicas CRUD
Sobre o Projeto | Tecnologias | Introdução | Licença
Esta API fornece informações dos clientes e dos endereços que pertence ao cliente.
Cliente pode ter vários endereços cadastrados.
Possui cobertura de testes Integração | Unitário
Tendo o Docker como uma ferramenta para auxilia na criação das images e banco de dados, possibilidando ter a mesmas configuração em outra máquina para executar esse projeto, tanto local ou em produção.
Tecnologias que usei para desenvolver esta API.
- Node.js
- TypeScript
- Express
- TypeORM
- uuid v4
- Yup
- Tsyringe
- Docker
- Docker Compose
- MySQL
- Jest
- SuperTest
- Eslint
- Prettier
- EditorConfig
Para executar este projeto em sua máquina, segue abaixo alguns requisitos.
Obs.: Eu recomendo usar o Docker Compose
Clona este projeto e acessa a pasta
$ git clone https://github.com/WalleksMR/joinBackend.git && cd joinBackend
Segue o passo a passo a baixo
# Instalar as dependências
$ yarn
# Faz uma copia de '.env-example' para '.env'
# as configuração já estão aplicadas.
$ cp .env-example .env
# Ira cria a instância do MySQL usando o Docker Compose
# junto com o banco de dados de teste
# e a imagem da aplicação rodando na porta 3232.
$ docker-compose up -d
# Quando os serviços estiverem em execução, execute as migrações
$ yarn typeorm migration:run
# Muito bem, aplicação está em executação
Para realizar os testes basta executar:
# Executar todos os testes
$ yarn test
GET /clients/
HTTP/1.1 200 OK
Status: 200 OK
Connection: close
Content-Type: application/json
[
{
id: string;
name: string;
cnpj: string;
corporate_name: string;
contact: string;
address: [
{
id: string;
client_id?: string;
street: string;
number: string;
complement: string;
neighborhood: string;
city: string;
state: string;
zip_code: string;
latitude: string;
longitude: string;
}
}
]
}
]
POST /clients/
Body{
name: 'New Client',
cnpj: '80212855000115',
corporate_name: 'Razao social',
contact: '5594991008899',
}
HTTP/1.1 201 Created
Status: 201 Created
Connection: close
Content-Type: application/json
[
{
id: 658c157e-25d3-489c-bc7b-9710fbee2119
name: 'New Client',
cnpj: '80212855000115',
corporate_name: 'Razao social',
contact: '5594991008899',
}
]
PATCH /clients/:id
Params: 658c157e-25d3-489c-bc7b-9710fbee2119
Body{
name: 'New Client 2',
cnpj: '80212855000115',
corporate_name: 'Razao social update',
contact: '5594991008899',
}
HTTP/1.1 201 Updated
Status: 201 Updated
Connection: close
Content-Type: application/json
[
{
id: 658c157e-25d3-489c-bc7b-9710fbee2119
name: 'New Client 2',
cnpj: '80212855000115',
corporate_name: 'Razao social update',
contact: '5594991008899',
}
]
GET /address/
HTTP/1.1 200 OK
Status: 200 OK
Connection: close
Content-Type: application/json
[
{
id: string;
client_id?: string;
street: string;
number: string;
complement: string;
neighborhood: string;
city: string;
state: string;
zip_code: string;
latitude: string;
longitude: string;
}
]
POST /address/:client_id
Params: 658c157e-25d3-489c-bc7b-9710fbee2119
Body{
street: 'Rua Rex',
number: '1234',
complement: 'Casa',
neighborhood: 'Bairro Local',
city: 'Ourilândia',
state: 'PA',
zip_code: '68390000',
latitude: '22222',
longitude: '333333'
}
HTTP/1.1 201 Created
Status: 201 Created
Connection: close
Content-Type: application/json
[
{
id: 658c157e-25d3-489c-bc7b-9710fbee2119
client_id: 158c227e-55d3-489c-bc7b-9710fbee29bc
street: 'Rua Rex',
number: '1234',
complement: 'Casa',
neighborhood: 'Bairro Local',
city: 'Ourilândia',
state: 'PA',
zip_code: '68390000',
latitude: '22222',
longitude: '333333'
}
]
PATCH /address/update/:id
Params: 658c157e-25d3-489c-bc7b-9710fbee2119
Body{
street: 'Rua Sao Francisco',
number: '2222',
complement: 'Apartamento',
neighborhood: 'Bairro Mineiro',
city: 'Parauapebas',
state: 'PA',
zip_code: '68390000',
latitude: '222222',
longitude: '333333'
}
HTTP/1.1 201 Updated
Status: 201 Updated
Connection: close
Content-Type: application/json
[
{
id: 658c157e-25d3-489c-bc7b-9710fbee2119
client_id: 158c227e-55d3-489c-bc7b-9710fbee29bc
street: 'Rua Sao Francisco',
number: '2222',
complement: 'Apartamento',
neighborhood: 'Bairro Mineiro',
city: 'Parauapebas',
state: 'PA',
zip_code: '68390000',
latitude: '222222',
longitude: '333333'
}
]
Este projeto está licenciado sob a licença MIT - Veja Licença para mais detalhes.
Made with ❤️ by Walleks Miranda 👋 See my linkedin