Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
1905c54
:tada: Commit inicial
carlosgizbertfc May 2, 2022
1eac762
:sparkles: feat: Modulos Estabelecimentos e Veiculos
carlosgizbertfc May 2, 2022
4929ae7
:sparkles: feat: dto create estabelecimento
carlosgizbertfc May 3, 2022
2ee41ae
:sparkles: feat: estabelecimento - service, controller mock
carlosgizbertfc May 3, 2022
d991361
:sparkles: feat: veiculos - service, controller mock
carlosgizbertfc May 3, 2022
3b53b45
:sparkles: feat: create estalabelecimento
carlosgizbertfc May 5, 2022
73ff5e8
:sparkles: feat: crud veiculos
carlosgizbertfc May 5, 2022
fd0d05d
:boom: fix: estabelecimentos update
carlosgizbertfc May 5, 2022
bacb998
:boom: fix: syncronize
carlosgizbertfc May 5, 2022
004cd6c
:boom: fix: relação estabelecimento e veiculos
carlosgizbertfc May 5, 2022
08f8d0e
:boom: fix: objetos
carlosgizbertfc May 5, 2022
d2494f5
:boom: fix: relações
carlosgizbertfc May 6, 2022
5d722f1
:boom: fix: gerando data no backend
carlosgizbertfc May 6, 2022
55cda94
:sparkles: feat: tratativas respostas crud
carlosgizbertfc May 6, 2022
2c026e2
:heavy_plus_sign: build: nest/swagger swagger-ui
carlosgizbertfc May 6, 2022
830f073
:sparkles: feat: swagger documentação v1
carlosgizbertfc May 7, 2022
d203b37
Update README.md
carlosgizbert May 7, 2022
6b628c1
:sparkles: feat: preparando variaveis de producao
carlosgizbertfc May 7, 2022
f01506c
Merge branch 'master' of https://github.com/carlosgizbert/backend-tes…
carlosgizbertfc May 7, 2022
4dee487
Update README.md
carlosgizbert May 8, 2022
290890a
:boom: fix: pasta log estava no .gitignore
carlosgizbertfc May 9, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
DATABASE_HOST=localhost
DATABASE_PORT=3306
DATABASE_USERNAME=usuarioDB
DATABASE_PASSWORD=senhaDB
DATABASE_NAME=nomeDB
25 changes: 25 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
module.exports = {
parser: '@typescript-eslint/parser',
parserOptions: {
project: 'tsconfig.json',
tsconfigRootDir : __dirname,
sourceType: 'module',
},
plugins: ['@typescript-eslint/eslint-plugin'],
extends: [
'plugin:@typescript-eslint/recommended',
'plugin:prettier/recommended',
],
root: true,
env: {
node: true,
jest: true,
},
ignorePatterns: ['.eslintrc.js'],
rules: {
'@typescript-eslint/interface-name-prefix': 'off',
'@typescript-eslint/explicit-function-return-type': 'off',
'@typescript-eslint/explicit-module-boundary-types': 'off',
'@typescript-eslint/no-explicit-any': 'off',
},
};
36 changes: 36 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# compiled output
/dist
/node_modules

.env

# Logs
*.log
npm-debug.log*
pnpm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# OS
.DS_Store

# Tests
/coverage
/.nyc_output

# IDEs and editors
/.idea
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-workspace

# IDE - VSCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
4 changes: 4 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"singleQuote": true,
"trailingComma": "all"
}
22 changes: 22 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"workbench.colorCustomizations": {
"activityBar.activeBackground": "#ab307e",
"activityBar.activeBorder": "#25320e",
"activityBar.background": "#ab307e",
"activityBar.foreground": "#e7e7e7",
"activityBar.inactiveForeground": "#e7e7e799",
"activityBarBadge.background": "#25320e",
"activityBarBadge.foreground": "#e7e7e7",
"sash.hoverBorder": "#ab307e",
"statusBar.background": "#832561",
"statusBar.foreground": "#e7e7e7",
"statusBarItem.hoverBackground": "#ab307e",
"statusBarItem.remoteBackground": "#832561",
"statusBarItem.remoteForeground": "#e7e7e7",
"titleBar.activeBackground": "#832561",
"titleBar.activeForeground": "#e7e7e7",
"titleBar.inactiveBackground": "#83256199",
"titleBar.inactiveForeground": "#e7e7e799"
},
"peacock.color": "#832561"
}
111 changes: 58 additions & 53 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,58 +1,63 @@
### FCamara 🚀
*"Queremos ser como uma árvore,
crescer um pouco todos os dias e tentar tocar o céu,
sem perder a solidez de nossas raízes."*
Conheça: www.fcamara.com.br

## Teste para vaga de Desenvolvedor Back-end
Criar uma API REST para gerenciar um estacionamento de carros e motos.
# Estacionamento de Veículos com Nestjs e Mysql

## Cadastro de estabelecimento
API construída para teste de desenvolvedor fullstack para o cliente Dr. Consulta

Criar um cadastro da empresa com os seguintes campos:
- Nome;
- CNPJ;
- Endereço;
- Telefone;
- Quantidade de vagas para motos;
- Quantidade de vagas para carros.

**Todos** os campos são de preenchimento obrigatório.

## Cadastro de veículos

Criar um cadastro de veículos com os seguintes campos:
- Marca;
- Modelo;
- Cor;
- Placa;
- Tipo.

**Todos** os campos são de preenchimento obrigatório.
## Objetivo do Projeto
Permitir registro de entradas e saídas de veículos em estabelecimentos.

## Funcionalidades

- **Estabelecimento:** CRUD;
- **Veículos:** CRUD;
- **Controle de entrada e saída de veículos.**

## Requisitos

- Modelagem de dados;
- O retorno deverá ser em formato JSON e XML;
- Requisições GET, POST, PUT ou DELETE, conforme a melhor prática;
- A persistência dos dados pode ser realizada da maneira que preferir;
- Criar README do projeto descrevendo as tecnologias utilizadas, chamadas dos serviços e configurações necessário para executar a aplicação.

## Ganha mais pontos
- Desenvolver utilizando TDD;
- Criar API de relatório;
- Sumário da quantidade de entrada e saída;
- Sumário da quantidade de entrada e saída de veículos por hora;
- Criar uma solução de autenticação.

## Submissão
Crie um fork do teste para acompanharmos o seu desenvolvimento através dos seus commits.

## Obrigado!
Agradecemos sua participação no teste. Boa sorte! 😄
- [x] Estabelecimentos (Listagem, Cadastro, alteração, atualização, deleção)
- [x] Veículos (Listagem, Cadastro, alteração, atualização, deleção)
- [x] Log de eventos (Registro, listagem)

## Tecnologias utilizadas
* Framework Nodejs - <a href="https://nestjs.com/" about="_blank">Nestjs 8.0.0</a>
* Banco de dados - <a href="https://dev.mysql.com/downloads/mysql/8.0.html" about="_blank">Mysql 8.0.0</a>
* ORM - <a href="https://www.npmjs.com/package/typeorm" about="_blank">TypeORM 5.2.1</a>
* TypeScript - <a href="https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-3.html" about="_blank">4.3.5</a>
* Documentação - <a href="https://www.npmjs.com/package/@nestjs/swagger?activeTab=versions" about="_blank">Nest Swagger 5.2.1</a>

### Pré-requisitos

Você vai precisar ter instalado em sua máquina as seguintes ferramentas:
* [Git](https://git-scm.com)
* [Node.js](https://nodejs.org/en/).
* [Mysql](https://dev.mysql.com/downloads/installer/)
* [Mysql WorkBench (Criar banco de dados)](https://www.jetbrains.com/datagrip/download/?source=google&medium=cpc&campaign=15034928143&term=mysql%20gui&gclid=CjwKCAjwjtOTBhAvEiwASG4bCANtIirgdt1u0tE2VS4tCyx4oxSvZtIiAjDYLfaYSPp7Uf91JIgOwBoCrVUQAvD_BwE#section=windows)
* [Insomnia (Testar requisições)](https://insomnia.rest/download)

Arquivos Úteis:
* [Collection de exemplo para o insomnia](https://drive.google.com/file/d/1LgeC3i8azuCdpRIIeiA5wpROx7VmiT6g/view?usp=sharing)
* [Modelagem inicial do banco(rascunho)](https://drive.google.com/file/d/18H3V6Mwued1fftxeePxtz_nPAFtwUgJy/view?usp=sharing)
* [Script que comecei fazendo na mão :c](https://drive.google.com/file/d/12QlQwfOMN9PzXm88faEiakvKyRscKULa/view?usp=sharing)
* [Modelagem final do banco rsrs :E](https://drive.google.com/file/d/1awDnBSJrtl83N9f16Ek11oHj_BlPctqY/view?usp=sharing)

### 🎲 Rodando o back-end (api)

#### Certifique-se de já estar com o mysql local rodando na porta 3306, banco de dados local para teste criado, e informações como "database, host, username e password" em mãos.

```bash
# Clone este repositório
$ git clone <https://github.com/carlosgizbert/backend-test-jest>

# Acesse a pasta do projeto no terminal/cmd
$ cd backend-test-jest

# Instale as dependências
$ npm install

# Acesse a pasta de configuração do banco de dados Mysql
$ cd /src/data/database.providers.ts
altere os valores para o seu banco de dados local
username: 'nome_banco_mysql_local',
password: 'senha_banco_mysql_local',
database: 'nome_banco_mysql_local',

# Execute a aplicação em modo de desenvolvimento
$ npm run start:dev
Após isso, a aplicação irá montar as tabelas no banco de dados local de forma automática, e você já poderá utilizar a api em sua máquina.

# O servidor inciará na porta:3000 e a página inicial será a documentação do swagger explicando as rotas e propriedades.
* Acesse <http://localhost:3000>.
```
9 changes: 9 additions & 0 deletions nest-cli.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"collection": "@nestjs/schematics",
"sourceRoot": "src",
"compilerOptions": {
"assets": [
"common/envs/*"
]
}
}
Loading