Skip to content

GustavoMimoso/Order-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Order API - Jitterbit Test

API RESTful em Node.js para gerenciamento de pedidos, desenvolvida como solução para o teste prático da Jitterbit.
Permite criar, consultar, listar, atualizar e deletar pedidos, utilizando PostgreSQL como banco de dados.


🚀 Tecnologias utilizadas

  • Node.js (ambiente de execução)
  • Express (framework web)
  • PostgreSQL (banco de dados relacional)
  • pg (driver PostgreSQL para Node.js)
  • Nodemon (hot-reloading em desenvolvimento)
  • Swagger UI Express e Swagger JSDoc (documentação OpenAPI)

📦 Funcionalidades

A API expõe endpoints para operações CRUD completas em pedidos:

Método Endpoint Descrição
POST /order Cria um novo pedido com lista de itens
GET /order/list Lista todos os pedidos cadastrados
GET /order/:orderId Busca os detalhes de um pedido específico
PUT /order/:orderId Atualiza os dados de um pedido existente
DELETE /order/:orderId Remove um pedido e seus itens associados

🗄️ Modelagem de Dados

A API realiza automaticamente o mapeamento (De/Para) entre o JSON de entrada e as colunas do banco de dados.

JSON de Entrada (Request)

  • numeroPedidoorderId
  • valorTotalvalue
  • dataCriacaocreationDate
  • items → (array de itens)
    • idItemproductId
    • quantidadeItemquantity
    • valorItemprice

Tabelas no Banco (PostgreSQL)

Tabela Order

  • orderId (VARCHAR, PK)
  • value (DECIMAL)
  • creationDate (TIMESTAMP)

Tabela Items

  • id (SERIAL, PK)
  • orderId (VARCHAR, FK)
  • productId (INTEGER)
  • quantity (INTEGER)
  • price (DECIMAL)

📚 Documentação da API

A documentação completa e interativa está disponível publicamente através dos links abaixo:

🔵 SwaggerHub (OpenAPI 3.0)

Visualize a especificação completa da API, schemas e endpoints. 👉 Acessar Documentação Swagger

🟠 Postman Documentation

Guia detalhado com exemplos de requisição, resposta e testes. 👉 Acessar Documentação Postman


⚙️ Como executar o projeto

1. Pré-requisitos

  • Node.js instalado (v14+)
  • PostgreSQL instalado e rodando
  • Banco de dados criado (sugestão: orderdb)

2. Clonar o repositório

git clone https://github.com/SEU-USUARIO/SEU-REPO.git
cd SEU-REPO

3. Instalar dependências

npm install

4. Configurar variáveis de ambiente

Crie um arquivo .env na raiz do projeto com as configurações do seu banco:

DB_HOST=localhost
DB_PORT=5432
DB_NAME=orderdb
DB_USER=postgres
DB_PASSWORD=sua_senha
PORT=3000
NODE_ENV=development

5. Criar tabelas no banco

Execute o script SQL abaixo no seu banco de dados PostgreSQL:

CREATE TABLE "Order" (
    orderId VARCHAR(255) PRIMARY KEY,
    value DECIMAL(15,2) NOT NULL,
    "creationDate" TIMESTAMP WITH TIME ZONE NOT NULL
);

CREATE TABLE "Items" (
    id SERIAL PRIMARY KEY,
    orderId VARCHAR(255) NOT NULL,
    productId INTEGER NOT NULL,
    quantity INTEGER NOT NULL,
    price DECIMAL(15,2) NOT NULL,
    FOREIGN KEY (orderId) REFERENCES "Order"(orderId) ON DELETE CASCADE
);

CREATE INDEX idx_items_orderId ON "Items"(orderId);

6. Iniciar o servidor

npm run dev

O servidor estará rodando em: http://localhost:3000


🧪 Testando localmente

Se preferir, você pode acessar a documentação Swagger localmente enquanto o servidor estiver rodando: 👉 http://localhost:3000/docs


📝 Estrutura de Exemplo

Criar Pedido (POST /order)

Request:

{
    "numeroPedido": "v10089015vdb-01",
    "valorTotal": 10000,
    "dataCriacao": "2023-07-19T12:24:11.5299601+00:00",
    "items": [
        {
            "idItem": "2434",
            "quantidadeItem": 1,
            "valorItem": 1000
        }
    ]
}

Response (201 Created):

{
    "success": true,
    "data": {
        "numeroPedido": "v10089015vdb-01",
        "valorTotal": "10000.00",
        "dataCriacao": "2023-07-19T12:24:11.529Z",
        "items": [
            {
                "idItem": "2434",
                "quantidadeItem": 1,
                "valorItem": 1000
            }
        ]
    },
    "message": "Pedido criado com sucesso"
}

👤 Autor

Desenvolvido como parte do processo seletivo Jitterbit.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors