Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Refactor/tests coverage #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Uh oh!
There was an error while loading. Please reload this page.
Refactor/tests coverage #1
Changes from all commits
101a608f45b8fb7dc26d476c6c25d2932038f79895b3cb187a258b17caba89e198242d023bb00807e2fae3ebfae1e9ecc4f637ef093ee7b1a0c35605edfec7fb8c0976d63239b8d65b5bbee0c8db58e66f42eb14a62927fde68f799e7b309c1241f12f3b866b42b03414e71a8d88b8f8254cc7ebcc71840430b2eaa0703c4955611File filter
Filter by extension
Conversations
Uh oh!
There was an error while loading. Please reload this page.
Jump to
Uh oh!
There was an error while loading. Please reload this page.
There are no files selected for viewing
CompassCar - API de venda de carros 🚗
Uma API para o gerenciamento de vendas de veículos, permitindo o cadastro, listagem, atualização e exclusão de usuários, clientes, carros (bem como a manipulação de itens relacionados a eles) e pedido.
💻 Tecnologias Utilizadas
As tecnologias e ferramentas utilizadas nesse projeto incluem:
Node.js - v20.17.0TypeScript - v5.6.3TS-Node: v10.9.2Express - v4.21.1MySQL2 - v3.11.3TypeORM - v0.3.20jsonwebtoken - v9.0.2bcryptjs - v2.4.3Swagger - v5.0.1dotenv - v16.4.5nodemon - v3.1.7UUID - v11.0.2ESLint: v9.13.0Prettier: v3.3.3Docker: v25.0.5🚀 Funcionalidades
Para visualizar a documentação, acesse a rota:
http://localhost:{suaPorta}/api/v1/api-docs🛠️ Como
UtilizarRodar localmente a AplicaçãoPré-requisitos
Passo a Passo para Rodar a Aplicação
Clone o Repositório:
Clone o Repositório:
Instale as Dependências: Execute o seguinte comando para instalar as dependências do projeto:
Configuração do Banco de Dados: Crie um arquivo
.envna raiz do projeto e adicione as variáveis de ambiente necessárias. Um exemplo de configuração pode ser encontrado no arquivo.env.examplenesse repositório.Inicie os serviços com Docker e rode a aplicação: A aplicação utiliza Docker para gerenciar os serviços. Para iniciar a aplicação em modo de desenvolvimento com hot-reload, execute:
Acesse a API: A API estará disponível em
http://localhost:{suaPorta}/api/v1/.Rodar migrations: Rode as migrations com o comando:
Rodar os Seeds: Rode os seeds para inserir dados dentro do banco, incluindo um User Admin:
O User Admin inserido após rodar o seed apresenta como informações para login o seguinte:
{ "email": "[email protected]", "password": "123456" }🛠️ Como Rodar a Aplicação no EC2 AWS
Clone o Repositório dentro da VM:
Rode o comando para subir o banco:
OBS: Esse comando ira subir o banco de dados mariadb junto com as migrations e as seeds.
Execute a API:
para acessa a api via IP Público procure por Endereço IPv4 público dentro da sua instância e acesse a porta 8080.
🧪 Instruções para rodar os testes
Execute todos os teste:
npm run testExecute os teste em modo watch:
🌐 Endpoints Principais
Rota de autenteicação
Rota de usuários
Rota de clientes
Rota de carros
Rota de pedidos
Obs: Algumas rotas, como as de cars, orders, user e cliets, requerem que o usuário esteja autenticado, para testá-las faça login na rota pública
POST /api/v1/logine insira as informações do User Admin disponíveis após rodar o seed.Exemplo de Requisição
Endpoint:
POST /api/v1/user{ "full_name": "João Silva", "email": "[email protected]", "password": "senha123" }Endpoint:
PATCH /api/v1/user/{id}{ "full_name": "João Silva Atualizado", "email": "[email protected]", "password": "senha123" }Endpoint:
POST /api/v1/login{ "email": "[email protected]", "password": "senha123" }Endpoint:
POST /api/v1/client{ "name": "Maria Souza", "birthday": "1990-08-15", "email": "[email protected]", "phone": "123456789", "cpf": "78113959246" }Endpoint:
PATCH /api/v1/client/{id}{ "phone": "987654321" }Endpoint:
POST /api/v1/cars{ "plate": "ABC1234", "brand": "Tesla", "model": "Model S", "km": 20000, "year": 2021, "price": 800000, "status": "ativo", "items": [ "autopilot", "câmbio automático", "câmera de ré", "ar-condicionado" ] }Endpoint:
PATCH /api/v1/cars/{id}{ "price": 24000 }Endpoint:
POST /api/v1/orders{ "clientId": "123e4567-e89b-12d3-a456-426655440000", "carId": "22ed1a08-cfe8-4833-b8a0-945a0264beb6" }Obs: mude os
clientIdecarIdpor valores que sejam válidos em seu ambiente.Endpoint:
PUT /api/v1/orders/{id}{ "cep": "59650-000", "status": "Aprovado" }🗂️ Estrutura de Arquivos
. ├── src/ │ ├── application/ │ │ ├── params/ │ │ │ ├── ListCarsParams.type.ts │ │ │ ├── ListClientParams.type.ts │ │ │ └── ListUserParams.type.ts │ │ ├── services/ │ │ │ ├── auth/ │ │ │ │ └── LoginService.ts │ │ │ ├── car/ │ │ │ │ ├── CreateCarService.ts │ │ │ │ ├── DeleteCarService.ts │ │ │ │ ├── ListCarService.ts │ │ │ │ ├── ShowCarService.ts │ │ │ │ └── UpdateCarService.t │ │ │ ├── client/ │ │ │ │ ├── CreateClientService.ts │ │ │ │ ├── DeletClientService.ts │ │ │ │ ├── ListClientService.ts │ │ │ │ ├── ReadClientService.ts │ │ │ │ └── UpdateClientService.ts │ │ │ ├── order/ │ │ │ │ ├── CreateOrderService.ts │ │ │ │ ├── DeleteOrderSerice.ts │ │ │ │ ├── FindOrderService.ts │ │ │ │ ├── ListOrderService.ts │ │ │ │ └── UpdateOrderService.ts │ │ │ ├── user/ │ │ │ │ ├── CreateUserSerice.ts │ │ │ │ ├── DeleteUserService.ts │ │ │ │ ├── LisUserService.ts │ │ │ │ ├── SelectUserByIdService.ts │ │ │ │ └── UpdateUserService.ts │ ├── domain/ │ │ ├── entities/ │ │ │ ├── Car.ts │ │ │ ├── CarItem.ts │ │ │ ├── Client.ts │ │ │ ├── Order.ts │ │ │ └── User.ts │ │ ├── repositories/ │ │ │ ├── CarRepository.ts │ │ │ ├── ClientRepository.ts │ │ │ ├── OrderRepository.ts │ │ │ └── UserRepository.ts │ ├── http/ │ │ ├── controller/ │ │ │ ├── AuthController.ts │ │ │ ├── CarController.ts │ │ │ ├── ClientController.ts │ │ │ ├── OrderController.ts │ │ │ └── UserController.ts │ │ ├── dtos/ │ │ │ ├── CreateCar.dto.ts │ │ │ ├── CreateClient.dto.ts │ │ │ ├── CreateOrder.dto.ts │ │ │ ├── CreateUser.dto.ts │ │ │ ├── UpdateCar.dto.ts │ │ │ ├── UpdateClient.dto.ts │ │ │ ├── UpdateOrder.dto.ts │ │ │ └── UpdateUser.dto.ts │ │ ├── middleware/ │ │ │ └── Auth.ts │ ├── infra/ │ │ ├── config/ │ │ ├── migrations/ │ │ ├── seeds/ │ │ ├── compose.yaml │ │ └── data-source.ts │ ├── routes/ │ │ └── route.ts │ ├── index.ts │ └── swagger.json ├── .editorconfig ├── .eslint.config.mjs ├── .gitignore ├── .nvmrc ├── .tsconfig.json ├── .prettierrc ├── package.json ├── README.md └── .env.example🗂️ Principais desafios enfrentados durante o desafio
Uh oh!
There was an error while loading. Please reload this page.