Skip to content

Latest commit

 

History

History
98 lines (84 loc) · 5.91 KB

README.md

File metadata and controls

98 lines (84 loc) · 5.91 KB

Swapper API

Este projeto é faz parte de um projeto maior, um Sistema Web desenvolvido utilizando Angular, Node JS, e MongoDB.

O repositório do projeto em questão pode ser encontrado aqui.

A API

Esta é uma API Node desenvolvida para o back-end do Sistema Swapper. Possui as responsabilidades de:

  • acesso ao banco de dados
  • cadasto, manipulação e remoção de usuários
  • cadastro, manipulação e remoção de produtos
  • sistema de login

Observação: Na primeira versão da API, o banco de dados utilizado será o MySQL. Posteriormente haverá a migração para o serviço MongoDB.

Usando node.js

Primeiramente clone este repositório.

cd Swapper-API
node index.js

Configuração do banco de dados

Antes, certifique-se de ter o MySQL instalado.

mysql -u root
create database swapper;
use swapper;

CREATE TABLE users(
    id int(11) NOT NULL AUTO_INCREMENT,
    nome varchar(20) NOT NULL,
    sobrenome varchar(100) NOT NULL,
    email varchar(50) NOT NULL UNIQUE,
    usuario varchar(20) NOT NULL UNIQUE,
    senha varchar(20) NOT NULL,
    celular varchar(11) NOT NULL,
    endereco varchar(100) NOT NULL,
    numero int(5) NOT NULL,
    cidade varchar(30) NOT NULL,
    status varchar(20) NOT NULL,
    PRIMARY KEY (id)
);   

CREATE TABLE produtos(
    id int(11) NOT NULL AUTO_INCREMENT,
    nome varchar(80) NOT NULL,
    quantidade int(2) NOT NULL DEFAULT '1',
    descricao varchar(256) NOT NULL DEFAULT 'Não há descrição',
	categoria varchar(20) NOT NULL,
    status varchar(20) NOT NULL,
    user_id int(11) NOT NULL,
    PRIMARY KEY (id),
    FOREIGN KEY (user_id) REFERENCES users(id)
);   

CREATE TABLE propostas(
    id int(11) NOT NULL AUTO_INCREMENT,
    data_criacao date NOT NULL,
    produto_ofertado int(11) NOT NULL,
    produto_desejado int(11) NOT NULL,
    dono_ofertado int(11) NOT NULL,
    dono_desejado int(11) NOT NULL,
    mensagem varchar(256) NOT NULL DEFAULT 'Vamos negociar!',
    status varchar(20) NOT NULL,
    PRIMARY KEY (id),
    CONSTRAINT fk_dono_ofertado FOREIGN KEY (dono_ofertado) REFERENCES users(id),
    CONSTRAINT fk_dono_desejado FOREIGN KEY (dono_desejado) REFERENCES users(id),
    CONSTRAINT fk_produto_desejado FOREIGN KEY (produto_desejado) REFERENCES produtos(id),
    CONSTRAINT fk_produto_ofertado FOREIGN KEY (produto_ofertado) REFERENCES produtos(id)
);  

Rotas disponíveis

URL base: http://localhost:3000

Método Rota Implementação Integração Descrição
POST user/login ✔️ ✔️ Efetuar login na aplicação
GET /user/(username)/ ✔️ ✔️ Listar dados de um usuário
POST /user/cadastro ✔️ ✔️ Cadastrar um novo usuário
PUT /user/(ID)/atualiza ✔️ ✔️ Atualizar dados de um usuário
DELETE /user/(ID)/remove ✔️ ✔️ Remover um usuário da aplicação
GET /user/(ID)/produtos ✔️ ✔️ Retornar os produtos de um usuário
GET /user/(ID)/produtos/(produto) ✔️ ✔️ Retornar os dados de um produto
PUT /user/(ID)/produtos/(produto)/edita ✔️ ✔️ Editar os dados de um produto
DELETE /user/(ID)/produtos/(produto)/remove ✔️ ✔️ Remover um produto da aplicação
POST /user/(ID)/produtos/cadastra ✔️ ✔️ Cadastrar um novo produto
GET /user/(ID)/propostas/feitas ✔️ ✔️ Listar propostas feitas pelo usuário
GET /user/(ID)/propostas/recebidas ✔️ ✔️ Listar propostas recebidas pelo usuário
GET /user/(ID)/produtos/(produto)/propostas ✔️ ✔️ Retornar os dados de uma proposta
GET /user/(ID)/produtos/(produto)/propostas/(proposta) ✔️ ✔️ Retornar os dados de uma proposta
POST /user/(ID)/produtos/(produto)/propostas/(proposta)/aceitar ✔️ ✔️ Aceitar uma proposta
POST /user/(ID)/produtos/(produto)/propostas/(proposta)/recusar ✔️ ✔️ Recusar uma proposta
POST /user/(ID)/produtos/(produto)/propostas/nova/(ID2)/(oferta) ✔️ ✔️ 'ID2' oferece 'oferta' para 'ID' em troca de 'produto'