💤 Rest API NodeJS para MySQL utilizando TypeScript, TypeORM, express. JWT, bcrypt e Docker
A API foi desenvolvida com TypeScript e NodeJS, utilizando algumas tecnologias, incluindo:
Antes da execução da API é necessário incluir um arquivo .env
na raiz do diretório, um exemplo .env.sample
foi incluído e deve ser usado como base.
Também é necessário modificar o arquivo orm.config.json
com as credenciais do banco de dados instalado:
{
...
"type": "mysql",
"host": "localhost",
"port": 3306,
"username": "USERNAME",
"password": "PASSWORD",
"database": "DATABASE_NAME",
...
}
Primeiramente na raiz do repositório instale as dependências do NodeJS com o comando:
>> npm install
>> npm run typeorm:migration
Para iniciar a API em modo de desenvolvimento, execute:
>> npm run dev
Para a execução em modo de produção um container docker pode ser criado, para tal na raiz do repositório execute:
>> docker-compose up --build
Após o comando algumas imagens serão baixadas e os containers serão construídos e executados.
Foram inclusas as imagens do mysql:5.7
e phpmyadmin
, que podem ser retiradas com a edição do arquivo docker-compose.yml
conforme desejado.
Para a execução no Raspberry Pi é necessário instalar os pacotes do docker, para tal execute:
>> sudo apt-get install docker docker-compose
No diretório desejado clone o repositório:
>> git clone https://github.com/Asimovjr/chaveiro-smart-rest-api.git
Troque para branch feature/raspberry-pi
:
>> git checkout feature/raspberry-pi
Crie os containers docker:
>> docker-compose up --build
Entre no container:
>> docker exec -it chaveiro-smart-rest-api_api_1 /bin/sh
Execute as migrations:
>> npm run typeorm:migration
{
"username": "user",
"password": "password"
}
{
"username": "user",
"password": "password"
}
{
"username": "username",
"oldPassword": "password",
"newPassword": "newPassword"
}
{
"username": "new-username"
}
{
"name": "name",
"sector": "sector"
}
{
"name": "new-name",
"sector": "new-sector"
}
{
"position": 0
}
{
"id": 1,
"available": true
}
{
"available": false
}
{
"id_key": 1,
"employee": {
"id": "b081c0c1-42d2-4812-b704-974b4949d5b2"
},
"action": true
}