Coder Social home page Coder Social logo

morettigs / delivery-api Goto Github PK

View Code? Open in Web Editor NEW
0.0 0.0 0.0 11.9 MB

https://hub.docker.com/repository/docker/morettigs27/delivery-api/tags?page=1&ordering=last_updated

Python 99.45% CSS 0.08% HTML 0.16% JavaScript 0.10% PowerShell 0.20% Batchfile 0.01% Dockerfile 0.01%

delivery-api's Introduction

About me

  • Software Engineer student at the University of Brasilia - FD (Brazil);
  • Always searching for more knowledge, and new and innovating projects;
  • Looking to collaborate and/or participate in Game jams, coding marathons or any other event;
  • I've worked with React, Java, PHP, Javascript, Python, Haskell, MySQL, and many other languages and tools;

Feel free to contact me whenever you want!

delivery-api's People

Contributors

morettigs avatar

Watchers

 avatar

delivery-api's Issues

Criação de arquivos e dependências

Para o desenvolvimento da aplicação, deverão ser criados:

  • Virtual Environment ( venv ) para armazenar as dependências necessárias: Flask, Flask_restplus e Werkzeug;
  • Arquivo utilizado como banco de dados "pedidos.json" ( já disponibilizado )
  • Arquivo app.py, que será o arquivo de inicialização da aplicação
  • Diretório src, englobando os seguintes:
  • Um diretório controllers, contendo um arquivo python endpoints.py, que controlará os endpoints da API
  • Um diretório server para instanciar o servidor, que contém o arquivo instance.py

Corrigir erros e otimizar a aplicação

Após uma revisão, foram percebidos alguns erros na aplicação, assim como códigos desnecessários. Dessa forma, é necessário:

  • Remover ou melhorar os códigos desnecessários.
  • Resolver os erros encontrados no código.
  • Melhorar arquitetura de diretórios do projeto.

Endpoint - Excluir um pedido

Crie um endpoint para excluir um pedido.

Este endpoint deverá receber como parâmetro o id do pedido e realizar sua exclusão no arquivo json.

  • Criar e testar o endpoint relacionado à exclusão de um pedido.

Criação do README.md

Issue com o objetivo de criar a descrição do projeto, com a seguinte tarefa:

  • Criação da versão inicial do README.md, explicando:
  • Os objetivos do projeto;
  • Como será feito processo de desenvolvimento do projeto;
  • Como executar a aplicação.

Endpoint - Atualizar pedido

Crie um endpoint para atualizar um pedido.

Este endpoint deverá receber como parâmetros o id do pedido a ser alterado e os campos "cliente", "produto", "valor" e "entregue".

O endpoint deverá validar se o produto informado existe. Caso não exista, ele deverá retornar um erro; caso exista, o endpoint deverá atualizar as informações recebidas por parâmetros no registro e realizar sua atualização com os novos dados alterados no arquivo JSON.

  • Criar e testar o endpoint de atualizações dos pedidos, com suas devidas validações.

Endpoint - Criar pedido

Endpoint para criar um pedido. Deverá receber como parâmetros os campos cliente,
produto e valor conforme descritos acima. Este pedido deverá ser salvo no arquivo json e
deverá ter um id único associado.

A API deverá garantir o incremento automático deste
identificador, de forma que ele não se repita entre os registros.
No campo "timestamp",

deverão ser salvos a data e a hora do momento da inserção. O campo "entregue" deverá ser
criado inicialmente como "false", esse poderá ser atualizado posteriormente através de outro
endpoint.

O endpoint deverá retornar o objeto do pedido que foi criado.

Dentro do arquivo pedidos.json que foi fornecido para utilização no desafio, o campo nextId já está com um valor
definido. Após a inserção, é preciso que esse nextId seja incrementado e salvo no próprio
arquivo, de forma que ele possa ser utilizado próxima inserção.

  • Criar e testar endpoint relacionado à criação de um pedido.

Configuração do servidor

Para executar a nossa aplicação, precisamos configurar o nosso ambiente Flask. Para isso, iremos:

  • Criar uma instância do servidor no arquivo instance.py, com seus métodos de inicialização
  • Importar a instância do servidor para os arquivos que irão utilizá-la: app.py e endpoints.py
  • No arquivo endpoints.py, criar variáveis para o app e a api
  • Adicionar código de inicialização do servidor no arquivo principal app.py

Endpoint - Produto mais vendido

Crie um endpoint para retornar os produtos mais vendidos e a quantidade de vezes em que estes foram pedidos.

O endpoint não deve receber parâmetros.

O endpoint deve calcular os produtos que mais possuem pedidos e retorná-los em ordem decrescente, seguidos pela sua quantidade.

O endpoint deve considerar somente os pedidos já entregues.

  • Criar e testar o endpoint relacionado à ordenação dos produtos mais vendidos.

Docker - Criação e push da imagem Docker

Para que seja possível baixar a aplicação de forma remota e sua execução como container, é necessária a criação da imagem Docker, enviando-a para o Docker Hub. Desse modo, podemos dividir as seguintes tarefas:

  • Criar a imagem Docker da aplicação a partir do arquivo Dockerfile.
  • Testar a imagem, executando um container local.
  • Realizar o push da imagem para o ambiente remoto Docker Hub.

Endpoint - Pedidos por produto

Crie um endpoint para consultar o valor total de pedidos já realizados para um determinado produto.

O endpoint deverá receber como parâmetro o produto, realizar a soma dos valores de todos os pedidos deste produto específico e retornar essa informação.

O endpoint deve considerar somente os pedidos já entregues.

  • Criar e testar o endpoint relacionado à quantidade de pedidos por produto.

Endpoint - Alterar campo 'entregue'

Crie um endpoint para atualizar o status de entrega do pedido, alterando o campo
"entregue" de acordo com o parâmetro informado.

Este endpoint deverá receber como parâmetros o id do pedido a ser alterado e o novo valor para o campo "entregue", sendo os valores possíveis true ou false.

Este endpoint deverá atualizar somente o valor do campo "entregue" do registro de ID informado, alterando-o no arquivo pedidos.json.

  • Criar e testar o endpoint relacionado à mudança de estado da entrega do pedido.

Endpoint - Consultar um pedido

Crie um endpoint para consultar um pedido em específico.

Este endpoint deverá receber como parâmetro o id do pedido e retornar suas informações.

  • Criar e testar o endpoint relacionado à consulta de informações de um pedido.

Docker - Organização do Dockerfile

Para a containerização da aplicação, é necessária a criação de um arquivo Dockerfile, que será responsável pela configuração da imagem Docker da aplicação. Dessa forma, deveremos:

  • Criar o arquivo Dockerfile e adicioná-lo ao projeto.
  • Configurar corretamente o arquivo, para se tornar possível a criação de uma imagem do mesmo.

Endpoint - Pedidos por cliente

Crie um endpoint para consultar o valor total de pedidos já realizados por um mesmo cliente.

O endpoint deverá receber como parâmetro o cliente, realizar a soma dos valores de todos os seus pedidos e retornar essa informação.

O endpoint deve considerar somente os pedidos já entregues.

  • Criar e testar o endpoint relacionado à quantidade de pedidos por cliente.

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.