Code Monkey home page Code Monkey logo

desafio-tecnico-stone-server's Introduction

REST API - Crud de Funcionários

Proposta

Desafio técnico proposto pela Stone - Fintech brasileira de meios de pagamentos que atua no mercado desde 2014 - cuja proposta era construir um client Front-End desenvolvido na stack Javascript que interagisse com uma API REST.

A aplicação deste repositório consiste em uma API REST desenvolvida em NodeJS que utiliza dos bancos Postgres - para armazenar e relacionar registros de funcionários e cargos - e MongoDB - para armazenamento de logs e requisições/respostas.

Clique aqui para visitar o repositório da aplicação web em React!

Tecnologias

Arquitetura da aplicação

Bancos de dados

Logging e armazenamento de logs

Baixando o código fonte

Para obter o código fonte em sua máquina, execute o seguinte comando:

$ git clone https://github.com/freirart/desafio-tecnico-stone-server.git

Rodar o projeto localmente é impossível uma vez que se observa e inexistência de variáveis de ambiente que contêm informações sigilosas tais como as URI's de conexão com o Banco de Dados. Alternativas para testar a aplicação são descritas logo abaixo.

Rotas

O servidor Back-End está hospedado na Heroku, logo todas as suas rotas podem ser acessadas partindo do link:
https://employees-server.herokuapp.com/

Rotas GET

Obter lista de funcionários

Como uma boa prática de performance, a lista de funcionários é separada em páginas, onde cada página possui 20 funcionários.

A rota para as páginas da lista segue o seguinte modelo:

/employee/page/:pageNumber

Substituindo :pageNumber por 0, a API retornará os 20 primeiros funcionários cadastrados no banco.

Obter informações de funcionário pelo seu Id

/employee/:employeeId

Substitua :employeeId pelo Id de seu funcionário e voilà!

Obter lista de cargos

/cargos

Devolve a lista de cargos com seus respectivos Id's.

Obter lista filtrada de funcionários

/employee?cargoId=<CargoID>&filtroIdade=<FiltroIdade>&nome=<InicioDoNome>

Nesta rota, pode-se filtrar funcionários pelo Id de seu cargo, pelo filtro de sua idade e/ou pelo início de seu nome.

  • A filtragem pelo cargo é baseada em seu Id (obtém-se o Id do cargo pela rota acima).

  • O filtro de idade é dado pelos números de 1 a 4 que seguem a relação abaixo:

    1- Funcionários abaixo de 20 anos;
    2- Funcionários entre 20 e 30 anos;
    3- Funcionários entre 31 e 40 anos;
    4- Funcionários acima de 40 anos;

  • O filtro pelo nome é insensitive case (indifere maiusculas e minúsculas) e busca por algo que comece com o que foi entrado. Isto é, caso "art" seja o nome procurado, o funcionário de nome "Artur Freire dos Santos" passará pelo filtro.

OBS:. Os filtros podem ser combinados ou não.

Rotas POST

Cadastrar um cargo

/cargos

Cria um cargo no banco de dados que poderá ser utilizado para atrelar funcionários a este.

O corpo da requisição deve conter o campo nome, como mostra o JSON abaixo:

{
  "nome": "Um cargo novo na empresa!"
}

Cadastrar um funcionário

/employee

Cria um funcionário no banco de dados.

O corpo da requisição deve conter os campos nome, idade e cargoId, como sugere o JSON abaixo:

{
  "nome": "Artur Freire dos Santos",
  "idade": 19,
  "cargoId": 1
}

Rotas PUT

Atualizar um funcionário

/employee/edit

Altera informações do funcionário no banco de dados.

O corpo da requisição deve conter os campos id, nome, idade e cargoId, como ilustra o JSON abaixo:

{
	"id": 1,
	"nome": "Artur Freire dos Santos",
	"idade": 19,
	"cargoId": 1
}

Atualizar um cargo

/cargos/edit

Altera informações do cargo no banco de dados.

O corpo da requisição deve conter os campos id e nome, como ilustra o JSON abaixo:

{
	"id": 1,
	"nome": "Desenvolvedor Fullstack"
}

Rotas DELETE

Deletar um cargo

/cargos/delete/:cargoId

Substitua :cargoId pelo Id do cargo que deseja deletar e voilà!

Deletar um funcionário

/employee/delete/:employeeId

Substitua :employeeId pelo Id do cargo que deseja deletar e voilà!

Licença

Projeto desenvolvido sob licença do MIT.

desafio-tecnico-stone-server's People

Contributors

dependabot[bot] avatar freirart avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.