Giter VIP home page Giter VIP logo

la-boleria's Introduction

la-boleria

La-Boleria, is a REST API, made to control one Bakery. It uses a PostgreSQL database to store users, cakes, and orders. It is here to show some more complex SQL querys, and their integration with an API.

Documentation in Portuguese:

  • POST /cakes

    • Deve receber as informações necessárias para a criação de um novo tipo de bolo.
    {
    		"name": "Bolo de pote",
    		"price": 13.00,
        "image":"encurtador.com.br/iDIX0",
    		"description": "Bolo de chocolate com recheio de leite ninho"
    }
    • Response: status 201, sem dados.
    • Regras de negócio
      • name não pode ser vazio e deve conter pelo menos 2 caracteres ⇒ deve retornar status 400.
      • name não pode ser um nome de um bolo já existente ⇒ deve retornar status 409.
      • price não pode ser vazio e deve ser um valor maior que zero ⇒ deve retornar status 400.
      • description pode ser vazia e deve ser validado se é uma string ⇒ caso não seja deve retornar status 400.
      • image não pode ser vazio e deve ser um link válido (procurar por validação de link no Joi) ⇒ deve retornar status 422.
  • POST /clients

    • Deve receber as informações necessárias para a criação de um novo cliente.
    {
        "name": "Fulana",
        "address": "Rua tal",
        "phone": "2199999999"
    }
    • Response: status 201, sem dados.
    • Regras de negócio
      • name não pode ser vazio ⇒ deve retornar status 400.
      • address não pode ser vazio ⇒ deve retornar status 400.
      • phone não pode ser vazio e deve ser uma string com 10 ou 11 caracteres numéricos ⇒ nesse caso deve retornar status 400.
  • POST /order

    • Deve receber as informações necessárias para registrar um novo pedido.
    {
        "clientId": 1,
        "cakeId": 1,
        "quantity": 2,
        "totalPrice": 26.00
    }
    • Response: status 201, sem dados.
    • Regras de negócio
      • clientId deve ser um id de um cliente existente ⇒ caso não exista, retornar status 404.
      • cakeId deve ser um id de um bolo existente ⇒ caso não exista, retornar status 404.
      • quantity deve ser um inteiro maior que zero e menor que 5 ⇒ se não, retornar status 400.
      • OBS:** Lembre-se de adicionar o valor ao campo createdAt.
  • GET /orders

    • Deve retornar as informações dos pedidos.

    Exemplo de retorno:

    [
       {
    	    "client": {
    	        "id": 1,
    	        "name": "Fulana",
    	        "address": "Rua tal",
    	        "phone": "2199999999"
    	    },
    	    "cake": {
    					"id": 1
    	        "name": "Bolo de pote",
    	        "price": "13.00",
    					"description": "Bolo de chocolate com recheio de leite ninho",
    					"image": "encurtador.com.br/iDIX0"
    	    },
    			"orderId": 1,
    	    "createdAt": "2022-03-16 10:30",
    	    "quantity": 2,
    	    "totalPrice": 26.00
    		}
    ]
    • Regras de negócio
      • Pode receber uma query string date com o formato YYYY-MM-DD ⇒ nesse caso deve retornar apenas os pedidos da data especificada.
      • Caso não tenha nenhum pedido ⇒ deve retornar um array vazio com status 404.
      • Em caso de sucesso ⇒ deve retornar os dados conforme o exemplo com status 200.
  • GET /orders/:id

    • Deve retornar as informações do pedido com id específico, seguindo o formato abaixo.
    {
        "client": {
            "id": 1,
            "name": "Fulana",
            "address": "Rua tal",
            "phone": "2199999999"
        },
        "cake": {
    				"id": 1
            "name": "Bolo de pote",
            "price": "13.00",
    				"description": "Bolo de chocolate com recheio de leite ninho",
    				"image": "encurtador.com.br/iDIX0"
        },
    		"orderId": 1,
        "createdAt": "2022-03-16 10:30",
        "quantity": 2,
        "totalPrice": 26.00
    }
    • Regras de negócio
      • Se o id passado não existir ⇒ deve responder com status 404.
      • Em caso de sucesso ⇒ deve retornar as informações seguindo o formato do exemplo com status 200.
  • GET /clients/:id/orders

    • Deve retornar todos os pedidos de um determinado cliente.
    [
        {
            "orderId": 1,
            "quantity": 2,
            "createdAt": "2022-03-16 10:30",
            "totalPrice": 26.00,
            "cakeName": "Bolo de pote"
        }
    ]
    • Regras de negócio
      • Caso não exista um cliente com o id passado ⇒ deve retornar status 404.
      • Em caso de sucesso ⇒ deve retornar as informações seguindo o formato do exemplo com status 200.

la-boleria's People

Contributors

klausdk1999 avatar

Watchers

Kostas Georgiou avatar  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.