Skip to content

API da Escola Mercúrio/Entidade Funcionários criada como projeto final do Módulo 4 da Resília Educação.

Notifications You must be signed in to change notification settings

Vastier/Resilia-M4-Escola-Mercurio-API

Repository files navigation

Resilia M4 - T11 - API Escola Mercúrio
Entidade Funcionários
Logo da Escola Mercúrio

Como projeto de finalização do Módulo 04 da Resilia Educação em que tivemos que desenvolver propostas de APIs que seriam o MVP de um aplicativo, nós do Grupo 2 escolhemos o tema Escola e disso surgiu a Escola Mercúrio!

Esse repositório pode ser acessado no Heroku Clicando Aqui..

Nesse projeto eu fiquei responsável por criar uma API REST para a Escola Mercúrio, onde será possível realizar operações CRUD na entidade funcionarios.

Projeto feito utilizando o Node.js e o framework Express e também tentando seguir o padrão MVC.

Também é um objetivo pessoal seguir as recomendações do Conventional Commits.

Objetivo

Esse projeto tem como objetivo criar uma API REST da Escola Mercúrio, onde será possível realizar operações CRUD na entidade funcionarios.

Minha intenção é que a entidade funcionarios possua os seguintes atributos:

  • ID (Como Chave Primária)
  • Nome
  • CPF
  • Telefone
  • Email
  • Data de Nascimento
  • Cargo
  • Data de Admissão

Pré-requisitos

  • Ter o Git instalado.

  • Ter o Chocolatey instalado.

Dependencias

  • express

  • sqlite3

  • joi

  • @hapi/joi-date

  • cpf-cnpj-validator

  • joi-phone-number

Dependencias de desenvolvimento

  • nodemon

Instalando Localmente

Para instalar e rodar a API localmente, abra seu terminal/powershell e rode os seguintes comandos:

Para clonar o repositório:

git clone git@github.com:Vastier/Resilia-M4-Escola-Mercurio-API.git

Para entrar na pasta que acabou de ser criada:

cd Resilia-M4-Escola-Mercurio-API

Para instalar os pacotes necessários:

npm install

Para iniciar o servidor da API:

npm start

Para iniciar o servidor em modo de desenvolvimento (usando o nodemon para atualizar caso hajam mudanças nos arquivos):

npm run dev

Caso tenha removido o arquivo database.db ou queira criar um e popular com dados de exemplo:

npm run create

Coleção do Insomnia

  • Caso use o Chocolatey é possível importar a collection pronta com todas as rotas, para isso importe o arquivo EscolaMercurioAPI-Insomnia_Collection.json.

Rotas implementadas

Funcionários

  • GET /funcionarios/todos

    Retorna todos os funcionários no banco de dados.

    Schema da resposta

    {
    "erro": <Boolean>,
    "ListaFuncionarios": [
        {
          "ID": <Int>,
          "NOME": <String>,
          "CPF": <String>,
          "TELEFONE": <String>,
          "EMAIL": <String>,
          "DATA_DE_NASCIMENTO": <String>,
          "CARGO": <String>,
          "DATA_DE_ADMISSAO": <String>
        },
      ]
    }
    
  • GET /funcionarios/buscacpf={cpf}

    Retorna o funcionário com o CPF especificado, caso seja encontrado no banco de dados.

    Schema da resposta

    {
    "erro": <Boolean>,
    "Funcionário": [
        {
          "ID": <Int>,
          "NOME": <String>,
          "CPF": <String>,
          "TELEFONE": <String>,
          "EMAIL": <String>,
          "DATA_DE_NASCIMENTO": <String>,
          "CARGO": <String>,
          "DATA_DE_ADMISSAO": <String>
        },
      ]
    }
    
  • POST /funcionarios/inserir

    Insere um funcionário no banco de dados.

    Dados a serem enviados no body via POST

    Parâmetro Descrição
    "nome" Nome do funcionário (string, obrigatório)
    "cpf" CPF do funcionário (número de 11 digitos, obrigatório, aceita pontos e traços, deve ser um CPF válido e não cadastrado ainda)
    "telefone" Telefone do candidato (número de telefone com DDD, obrigatório, aceita espaços, parênteses e traços)
    "email" Email do funcionário (string, obrigatório, deve ser um email válido)
    "dataDeNascimento" Data de Nascimento do funcionário (números no formato DD/MM/AAAA, opcional)
    "cargo" Cargo do funcionário (string, obrigatório)
    "dataDeAdmissao" Data de Admissão do funcionário (números no formato DD/MM/AAAA, opcional)

    Exemplo de body da requisição:

    {
        "nome": "Jão da Silva",
        "cpf": "836.799.020-00",
        "telefone": "(51) 99887-6432",
        "email": "[email protected]",
        "dataDeNascimento": "29/05/1980",
        "cargo": "Inspetor",
        "dataDeAdmissao": "05/03/2015"
    }

    Exemplo de resposta:

    {
      "erro": false,
      "Resposta": "Funcionário de nome 'Jão da Silva' adicionado ao banco de dados com sucesso."
    }
  • PUT /funcionarios/modificar/{id}

    Modifica os dados do funcionário com o ID especificado, caso seja encontrado no banco de dados.

    Dados a serem enviados no body via PUT, essa rota usa a mesma validação de dados da rota POST.

    Parâmetro Descrição
    "nome" Nome do funcionário (string, obrigatório)
    "cpf" CPF do funcionário (número de 11 digitos, obrigatório, aceita pontos e traços, deve ser um CPF válido)
    "telefone" Telefone do candidato (número de telefone com DDD, obrigatório, aceita espaços, parênteses e traços)
    "email" Email do funcionário (string, obrigatório, deve ser um email válido)
    "dataDeNascimento" Data de Nascimento do funcionário (números no formato DD/MM/AAAA, opcional)
    "cargo" Cargo do funcionário (string, obrigatório)
    "dataDeAdmissao" Data de Admissão do funcionário (números no formato DD/MM/AAAA, opcional)

    Exemplo de body da requisição:

    {
        "nome": "Jão da Silva Atualizado",
        "cpf": "994.279.600-27",
        "telefone": "(21) 99887-6432",
        "email": "[email protected]",
        "dataDeNascimento": "29/05/1980",
        "cargo": "Inspetor",
        "dataDeAdmissao": "03/05/2015"
    }

    Exemplo de resposta:

    {
      "erro": false,
      "Resposta": "Dados do funcionário 'Jão da Silva Atualizado' atualizado com sucesso no banco de dados.",
      "Dados antigos": [
        {
          "ID": 8,
          "NOME": "Jão da Silva",
          "CPF": "836.799.020-00",
          "TELEFONE": "(51) 99887-6432",
          "EMAIL": "[email protected]",
          "DATA_DE_NASCIMENTO": "29/05/1980",
          "CARGO": "Inspetor",
          "DATA_DE_ADMISSAO": "05/03/2015"
        }
      ],
      "Dados atualizados": [
        {
          "ID": 8,
          "NOME": "Jão da Silva Atualizado",
          "CPF": "994.279.600-27",
          "TELEFONE": "(21) 99887-6432",
          "EMAIL": "[email protected]",
          "DATA_DE_NASCIMENTO": "29/05/1980",
          "CARGO": "Inspetor",
          "DATA_DE_ADMISSAO": "03/05/2015"
        }
      ]
    }
  • DELETE /funcionarios/apagar/{id}

    Apaga o funcionário com o ID especificado, caso seja encontrado no banco de dados.

    Exemplo de resposta:

    {
      "erro": false,
      "Resposta": "Funcionário de ID 8 apagado com sucesso.",
      "Funcionário apagado": {
        "ID": 8,
        "NOME": "Jão da Silva Atualizado",
        "CPF": "994.279.600-27",
        "TELEFONE": "(21) 99887-6432",
        "EMAIL": "[email protected]",
        "DATA_DE_NASCIMENTO": "29/05/1980",
        "CARGO": "Inspetor",
        "DATA_DE_ADMISSAO": "03/05/2015"
      }
    }

About

API da Escola Mercúrio/Entidade Funcionários criada como projeto final do Módulo 4 da Resília Educação.

Topics

Resources

Stars

Watchers

Forks