Skip to content

💤 Rest API NodeJS para MySQL utilizando TypeScript, TypeORM, express. JWT, bcrypt e Docker

Notifications You must be signed in to change notification settings

mat-furla/rest-api-typeorm-mysql

Repository files navigation

Rest API

A API foi desenvolvida com TypeScript e NodeJS, utilizando algumas tecnologias, incluindo:

  • TypeORM
  • class-validator
  • express
  • helmet
  • JWT
  • bcrypt
  • Docker

Sumário

Variáveis de Ambiente

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.

MySQL

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",
    ...
}

Instalação

Primeiramente na raiz do repositório instale as dependências do NodeJS com o comando:

>> npm install

Migrations

>> npm run typeorm:migration 

Execução em Desenvolvimento: ts-node-dev

Para iniciar a API em modo de desenvolvimento, execute:

>> npm run dev 

Execução em Produção: Docker

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.

Raspberry Pi

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

Entidades

Rotas

Autenticação

post-login

{
    "username": "user",
    "password": "password"
}

post-register

{
    "username": "user",
    "password": "password"
}

post-change_password

{
    "username": "username",
    "oldPassword": "password",
    "newPassword": "newPassword"
}

Usuários

get-user

get-id-user

patch-user

{
    "username": "new-username"
}

delete-user

Funcionários

get-employee

get-id-employee

post-employee

{
	"name": "name",
	"sector": "sector"
}

patch-employee

{
	"name": "new-name",
	"sector": "new-sector"
}

delete-employee

Motor

get-id-engine

post-engine

patch-engine

{
	"position": 0
}

Chaves

get-key

get-id-key

post-key

{
	"id": 1,
	"available": true
}

patch-key

{
	"available": false
}

delete-key

Requisições

get-requisition

get-id-requisition

post-requisition

{
	"id_key": 1,
	"employee": {
		"id": "b081c0c1-42d2-4812-b704-974b4949d5b2"
	},
	"action": true
}

patch-requisition

delete-requisition

About

💤 Rest API NodeJS para MySQL utilizando TypeScript, TypeORM, express. JWT, bcrypt e Docker

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages