Skip to content

leonardodelfino/xy-inc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Leonardo Delfino / xy-inc

Teste Desenvolvedor 3 - Backend as a Service

Arquitetura

  • Nodejs 6+
  • Express
  • MongoDB 3.2
  • Mongoose
  • Mocha + Chai para testes
  • Instalbul para cobertura de código

Análise da Solução

A linguagem escolhida para desenvovimento foi nodejs, devido a facilidade, domínio e necessidade de pouco código para desenvolver a solução deste problema.

A escolha do MongoDB se deve ao fato de ser um banco não relacional, sem obrigatóriedade de ter esquemas definidos. Essas caractersticas auxiliam na solução de montar uma api que fornece serviço para persistência de dados de entidades genéricas, facilitando a criação e alteração dos modelos.

A solução pode ser escalada utilizando um gerenciador de processos como o PM2 e adicionando shards e/ou replicas sets ao MongoDB.

Instalação

O primeiro passo é clonar o projeto na sua máquina:

git clone https://github.com/leonardodelfino/xy-inc.git

Os pré-requisitos necessários para rodar o projeto é a instalação do nodejs 6+ e o banco de dados MongoDB. O banco foi disponibilizado via docker, sendo necessário executar o comando abaixo para iniciar:

docker-compose up -d

Execução

Navegue até a pasta criada e execute o comando abaixo para instalar as dependências.

npm install

Para inciar o servidor execute o seguinte comando:

npm start

Para executar os testes e exibir o relatório de cobertura de código execute o seguinte comando:

npm test

Documentação

As rotas listadas abaixo são utilizadas para criação e exibição dos modelos:

Método Rota Descrição
POST /api/entity Criação de uma nova entidade
GET /api/entity Retorna todas as entidades criadas
GET /api/entity/:id Retorna uma entidade específica

Exemplo: POST /api/entity - Criação de uma nova entidade

curl -X POST \
  http://localhost:3000/api/entity \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json' \
  -d '{
  "name" : "pessoa",
  "attributes": [
    {
      "name": "nome",
      "type": "string",
       "required" : true
    },
    {
       "name" : "sobrenome",
       "type" : "string"
    },
    {
       "name" : "data_nascimento",
       "type" : "date"
    },
    {
       "name" : "nro_filhos",
       "type" : "number"
    },
    {
       "name" : "usa_oculos",
       "type" : "boolean"
    }
  ]
}'

Exemplo: GET /api/entity - Retorna todas as entidades criadas

curl -X GET \
  http://localhost:3000/api/entity \
  -H 'cache-control: no-cache' \

Exemplo: GET /api/entity/:id - Retorna uma entidade com um determinado id

curl -X GET \
  http://localhost:3000/api/entity/xpto \
  -H 'cache-control: no-cache' \

As rotas listadas abaixo são utilizadas para realizar operações de CRUD nos modelos criados.

Método Rota Descrição
POST /api/:entidade Insere um novo registro
GET /api/:entidade Retorna todos os registros
GET /api/:entidade/:id Retorna um registro específico
PUT /api/:entidade/:id Atualiza um registro
DELETE /api/:entidade/:id Exclui um registro

Exemplo: POST /api/:entidade - Insere um novo registro

curl -X POST \
  http://localhost:3000/api/pessoa \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json' \
  -d '{"nome": "Leonardo", "sobrenome" : "Delfino", "data_nascimento" : "1989-06-04", "usa_oculos" : false, "filhos" : 0}'

Exemplo: GET /api/:entidade - Retorna todos os registros

curl -X GET \
  http://localhost:3000/api/pessoa \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json' \

Exemplo: GET /api/:entidade/:id - Retorna um registro específico

curl -X GET \
  http://localhost:3000/api/pessoa/xpto \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json' \

Exemplo: PUT /api/:entidade/:id - Atualiza um registro

curl -X PUT \
  http://localhost:3000/api/pessoa/xpto \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json' \
  -d '{ "nome": "João da Silva", "nro_filhos" : 2}'

Exemplo: DELETE /api/:entidade/:id - Exclui um registro

curl -X DELETE \
  http://localhost:3000/api/pessoa/xpto \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json' \

About

xy-inc - Backend as a Service

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published