Skip to content

DanielXavierJob/nest-api-desafio

Repository files navigation

Nest.Js API

Uma API básica em Nest.JS com consultas e atualizações do banco de dados em MySQL.

Instalação

Instalação do MySQL

docker run --name mysql-desafio -p 3306:3306 -e MARIADB_ROOT_PASSWORD=desafio -d mariadb:latest

Crie um novo banco de dados chamado desafio

Dentro do arquivo app.module.ts, inserir as variaveis de conexão com banco de dados. Conexão padrão:

host: 192.168.0.16 (Mudar para seu IP)
database: desafio (Criar banco de dados 'desafio')
user: root
password: desafio

Caso queira mudar a conexão do SMTP de envio de E-mail, inserir as variaveis user e pass no arquivo auth.service.ts na função forget. Por padrão já existe um email configurado para enviar chamado noreplydesafio

leia sobre como utilizar o NodeMailer em https://community.nodemailer.com/using-gmail

Instalação com docker

  docker build -t nest-api-desafio .
  docker run -p 3333:3333 nest-api-desafio

Instalação com npm

  npm install
  npm run build
  npm start

A URL de acesso será http://localhost:3333

Após a instalação, rode a seguinte query no banco de dados para adicionar um novo gestor:

INSERT INTO `desafio`.`user`(`id`, `nome`, `email`, `senha`, `senha_reset`, `acesso`, `created_at`, `updated_at`) VALUES (1, 'Gestor Teste', '[email protected]', '$2b$10$XPzrp.H0FC.tElRidaH0VOcirFfcF23NL2sWx3GnHFIt3533KfpPa', '', 2, '2022-09-06 20:11:52.979420', '2022-09-07 00:26:03.413112');

O login e senha para acessar na conta do gestor são:

login: [email protected]
senha: 123456

utilize-os para fazer os testes na aplicação next-app-desafio.

Documentação da API

Todas as requisições, exceto: Login, Forget. é necessário haver autenticação.

Auth

Fazer Login na API

  POST /auth/login
Parâmetro Tipo Descrição
email string Obrigatório. E-mail cadastrado
senha string Obrigatório. Senha cadastrada

Retorna as informações da conta

  GET /auth/me
Parâmetro Tipo Descrição
Authorization Bearer Obrigatório. Chave de autenticação JWT

Forget

Recuperar senha (Etapa 1: Enviar solicitação para o e-mail)

  POST /auth/forget
Parâmetro Tipo Descrição
email string Obrigatório. E-mail cadastrado

Recuperar senha (Etapa 2: Inserir código recebido no e-mail)

  POST /auth/forget/step
Parâmetro Tipo Descrição
code string Obrigatório. Código recebido no E-mail

Recuperar senha (Etapa 3: Inserir nova senha)

  POST /auth/forget/reset
Parâmetro Tipo Descrição
code string Obrigatório. Código recebido no E-mail
password string Obrigatório. Nova senha

Usuarios

Retorna todos os usuarios

  GET /users
Parâmetro Tipo Descrição
Authorization Bearer Obrigatório. Chave de autenticação JWT

Retorna todos os usuarios colaboradores

  GET /users/colaboradores
Parâmetro Tipo Descrição
Authorization Bearer Obrigatório. Chave de autenticação JWT

Retorna um usuario

  GET /users/{id}
Parâmetro Tipo Descrição
Authorization Bearer Obrigatório. Chave de autenticação JWT
id number Obrigatório. O ID do Usuario

Cria um usuario

  POST /users
Parâmetro Tipo Descrição
Authorization Bearer Obrigatório. Chave de autenticação JWT
nome string Obrigatório. O Nome do Usuario
email string Obrigatório. O E-mail do Usuario
senha string Obrigatório. Esta senha será criptografada em Bcrypt
acesso number Obrigatório. 1 - Colaborador ou 2 - Gestor

Atualiza um usuario

  PUT /users/{id}
Parâmetro Tipo Descrição
Authorization Bearer Obrigatório. Chave de autenticação JWT
id number Obrigatório. O ID do Usuario
nome string Opcional. O Nome do Usuario
email string Opcional. O E-mail do Usuario
senha string Opcional. Esta senha será criptografada em Bcrypt
acesso number Opcional. 1 - Colaborador ou 2 - Gestor

Deleta um usuario

  DEL /users/{id}
Parâmetro Tipo Descrição
Authorization Bearer Obrigatório. Chave de autenticação JWT
id number Obrigatório. O ID do Usuario

Tasks

Retorna todas as Ordens de serviço referente ao Usuario logado

  GET /tasks
Parâmetro Tipo Descrição
Authorization Bearer Obrigatório. Chave de autenticação JWT

Retorna todas as Ordens de serviço referente a todos os Usuarios

  GET /tasks/all
Parâmetro Tipo Descrição
Authorization Bearer Obrigatório. Chave de autenticação JWT

Retorna uma contagem de Ordens de serviço por Dia no mês para o Chart

  GET /tasks/chart
Parâmetro Tipo Descrição
Authorization Bearer Obrigatório. Chave de autenticação JWT

Retorna todas as Ordens de serviço completas

  GET /all/completed
Parâmetro Tipo Descrição
Authorization Bearer Obrigatório. Chave de autenticação JWT

Retorna uma Ordem de serviço

  GET /tasks/{id}
Parâmetro Tipo Descrição
Authorization Bearer Obrigatório. Chave de autenticação JWT
id number Obrigatório. O ID da Ordem de serviço

Cria uma Ordem de serviço

  POST /tasks
Parâmetro Tipo Descrição
Authorization Bearer Obrigatório. Chave de autenticação JWT
client number Obrigatório. O ID do Cliente
colaborador number Obrigatório. O ID do Colaborador
description string Obrigatório. Descrição do problema

Atualiza uma Ordem de serviço

  PUT /tasks/{id}
Parâmetro Tipo Descrição
Authorization Bearer Obrigatório. Chave de autenticação JWT
id number Obrigatório. O ID da Ordem de serviço
solution string Opcional. Solução do problema
completed string Obrigatório. o valor precisa ser true

Deleta uma Ordem de serviço

  DEL /tasks/{id}
Parâmetro Tipo Descrição
Authorization Bearer Obrigatório. Chave de autenticação JWT
id number Obrigatório. O ID da Ordem de serviço

Clientes

Retorna todos os Clientes

  GET /clients
Parâmetro Tipo Descrição
Authorization Bearer Obrigatório. Chave de autenticação JWT

Retorna um Cliente

  GET /clients/{id}
Parâmetro Tipo Descrição
Authorization Bearer Obrigatório. Chave de autenticação JWT
id number Obrigatório. O ID do Cliente

Cria um Cliente

  POST /clients
Parâmetro Tipo Descrição
Authorization Bearer Obrigatório. Chave de autenticação JWT
nome string Obrigatório. O nome do Cliente

Atualiza um Cliente

  PUT /clients/{id}
Parâmetro Tipo Descrição
Authorization Bearer Obrigatório. Chave de autenticação JWT
id number Obrigatório. O ID do Cliente
nome string Obrigatório. Novo nome do Cliente

Deleta um Cliente

  DEL /clients/{id}
Parâmetro Tipo Descrição
Authorization Bearer Obrigatório. Chave de autenticação JWT
id number Obrigatório. O ID do Cliente

Aprendizados

Recebi a instrução de fazer o Projeto de Seleção da MonteNegro no dia 03/09/2022 e a data de entrega até o dia 08/09/2022, as linguagens eram Next.Js (Front), Nest.Js(Back), MySQL (database), Docker. Com muito esforço e dedicação consegui terminar esta API em Nest.Js com funcionalidades básicas e autenticação JWT. Absorvi muito conhecimento das linguagens recente e tenho em mente utilizadas em todos os projetos apartir de então.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published