Giter Site home page Giter Site logo

projeto-labecommerce-curso-novo-'s Introduction

Projeto labecommerce

É o primeiro projeto do back-end, onde praticamos toda a base de criação de uma API vinculada a um banco de dados real.

Ele tem uma particularidade: seus requisitos são implementados ao longo dos exercícios pós aula. Isso significa que caso você siga o desenvolvimento das aulas, quando chegar na data de entrega já terá um projeto funcional e quase pronto para entrega.

Conteúdos abordados

  • NodeJS
  • Typescript
  • Express
  • SQL e SQLite
  • Knex
  • Postman

⚠⚠⚠ Importante!!! ⚠⚠⚠

Para critérios de correção serão considerados rigorosamente a nomenclatura de: Tabelas, colunas e caminhos(path) das requisições. Portando, siga o padrão de nomenclaturas apresentado logo abaixo.

Banco de dados 🎲🎲

O nome das tabelas e das colunas devem ser em letras minúsculas, sem acento, sem caracteres especiais e em snake_case(caso sejas palavras compostas. exp.: arco_iris). Por isso, siga restritamente a nomeclatura proposta!

O banco de dados deve conter obrigatóriamente quatro tabelas:

Tabela de Usuários:

Nome da Tabela:

  • users

Nome das colunas

  • id
  • name
  • email
  • password
  • created_at

Tabela de Produtos 🛒🛒

Nome da Tabela:

  • products

Nome das colunas

  • id
  • name
  • price
  • description
  • image_url

Tabela de Registro de Compras 💸💸

Nome da Tabela:

  • purchases

Nome das colunas

  • id
  • buyer
  • total_price
  • created_at
  • paid

Tabela de Registro de Produtos Comprados 🧾🧾

Nome da Tabela:

purchases_products

Nome das colunas

  • purchase_id
  • product_id
  • quantity


Para realizar a modelagem do seu banco de dados e das tabelas, considere a imagem a baixo.

Nela são mostradas as relações entre as tabelas :

image https://dbdiagram.io/d/63c6e8e5296d97641d7a4666


---------------

Caminhos das Requisições (Paths) 🛣🛣

Os caminhos devem ser definidos em letras minúsculas, sem acento e sem caracteres especiais. Siga conforme o modelo de documentação proposto.

Requisições de Usuários

  • /users

Requisições de Produtos

  • /products

Requisições de Compras

  • /purchases

Lista de requisitos - Obrigatórios

1. Implementar os Endpoints :

- [ ]  Get all users
- [ ]  Create user
- [ ]  Create product
- [ ]  Get all products funcionalidade 1
- [ ]  Get all products funcionalidade 2
- [ ]  Edit product by id
- [ ]  Create purchase
- [ ]  Delete purchase by id
- [ ]  Get purchase by id

2. Documentação no Postman de todos os endpoints (obrigatória para correção), descrevendo os endpoints e colocando os exemplos de respostas

3. Criar o arquivo README.md , explicando seu projeto com prints das respostas

Aqui está uma Documentação para referência (como deve ficar) https://documenter.getpostman.com/view/21151478/2s8ZDeSdbz


Exemplos de requisição

Não precisa cadastrar o mesmo nome, email e quaisquer outros valores vistos aqui nos exemplos de saída. Porém, deve-se respeitar rigorosamente a estrutura pedida no banco de dados (nome das tabelas e colunas), nomes das propriedades na resposta da API e caminho dos endpoints


Get all users

Retorna todas as pessoas cadastradas.
Dica: atenção com o nome da propriedade createdAt! Ela deve vir em camelCase, apesar de estar em snake_case no banco de dados.

// Request
// GET /users

// Response
// status 200 OK
[
    {
        id: "u001",
        name: "Fulano",
        email: "[email protected]",
        password: "fulano123",
        createdAt: "2023-01-15 09:12:42"
    },
    {
        id: "u002",
        name: "Ciclana",
        email: "[email protected]",
        password: "ciclana99",
        createdAt: "2023-01-17 12:35:28"
    }
]


Create user

Cadastra uma nova pessoa.

// Request
// POST /users
// body JSON
{
    "id": "u003",
    "name": "Astrodev",
    "email": "[email protected]",
    "password": "astrodev00"
}

// Response
// status 201 CREATED
{
    message: "Cadastro realizado com sucesso"
}


Create product

Cadastra um novo produto.

// Request
// POST /products
// body JSON
{
    "id": "prod003",
    "name": "Teclado gamer",
    "price": 200,
    "description": "Teclado mecânico com numpad",
    "imageUrl": "https://picsum.photos/seed/Teclado%20gamer/400"
}

// Response
// status 201 CREATED
{
    message: "Produto cadastrado com sucesso"
}


Get all products funcionalidade 1

Retorna todos os produtos cadastrados.

// Request
// GET /products

// Response
// status 200 OK
[
    {
        id: "prod001",
        name: "Mouse gamer",
        price: 250,
        description: "Melhor mouse do mercado!",
        imageUrl: "https://picsum.photos/seed/Mouse%20gamer/400"
    },
    {
        id: "prod002",
        name: "Monitor",
        price: 900,
        description: "Monitor LED Full HD 24 polegadas",
        imageUrl: "https://picsum.photos/seed/Monitor/400"
    },
    {
        id: "prod003",
        name: "Teclado gamer",
        price: 200,
        description: "Teclado mecânico com numpad",
        imageUrl: "https://picsum.photos/seed/Teclado%20gamer/400"
    }
]


Get all products funcionalidade 2

Caso seja enviada uma query params (name) deve ser retornado o resultado da busca de produtos que contenham o "name" informado em seu nome.

// Request
// query params = name
// GET /products?name=gamer

// Response
// status 200 OK
[
    {
        id: "prod001",
        name: "Mouse gamer",
        price: 250,
        description: "Melhor mouse do mercado!",
        imageUrl: "https://picsum.photos/seed/Mouse%20gamer/400"
    },
    {
        id: "prod003",
        name: "Teclado gamer",
        price: 200,
        description: "Teclado mecânico com numpad",
        imageUrl: "https://picsum.photos/seed/Teclado%20gamer/400"
    }
]


Edit product by id

Edita um produto existente.

// Request
// path params = :id

// PUT /products/prod003
// body JSON
{
    "id": "prod0033",
    "name": "Teclado gamer RGB",
    "price": 300,
    "description": "Teclado mecânico com RGB e numpad",
    "imageUrl": "https://picsum.photos/seed/Teclado%20gamer%20RGB/400"
}

// Response
// status 200 OK
{
    message: "Produto atualizado com sucesso"
}


Create purchase

Cadastra um novo pedido. Como dica, o exercício 1 da aula de Relações em SQL II é uma boa referência.

// Request
// POST /purchases
// body JSON
{
    "id": "pur001",
    "buyer": "u001",
    "products": [
        {
            "id": "prod001",
            "quantity": 2
        },
        {
            "id": "prod002",
            "quantity": 1
        }
    ]
}

// Response
// status 201 CREATED
{
    message: "Pedido realizado com sucesso"
}


Delete purchase by id

Deleta um pedido existente.

// Request
// path params = :id
// DELETE /purchases/pur002

// Response
// status 200 OK
{
    message: "Pedido cancelado com sucesso"
}


Get purchase by id

Retorna os dados de uma compra, incluindo a lista de produtos da mesma.

// Request
// path params = :id
// GET /purchases/pur001

// Response
// status 200 OK
{
    purchaseId: "pur001",
    buyerId: "u001",
    buyerName: "Fulano",
    buyerEmail: "[email protected]",
    totalPrice: 1400,
    createdAt: "2023-01-15 16:24:54",
    paid: 0,
    products: [
        {
            id: "prod001",
            name: "Mouse gamer",
            price: 250,
            description: "Melhor mouse do mercado!",
            imageUrl: "https://picsum.photos/seed/Mouse%20gamer/400",
            quantity: 2
        },
        {
            id: "prod002",
            name: "Monitor",
            price: 900,
            description: "Monitor LED Full HD 24 polegadas",
            imageUrl: "https://picsum.photos/seed/Monitor/400",
            quantity: 1
        }
    ]
}


projeto-labecommerce-curso-novo-'s People

Contributors

fefealfonsi avatar gdcarvalhoo avatar juniorprado-dev avatar mirandafayra avatar muri01 avatar yuzokamoto 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.