Giter Site home page Giter Site logo

wishlist-service's Introduction

API de Customer Wishlist

Uma API para gerenciamento de customer-wishlist, construída com Java 17 e Spring Boot 3.1.3, utilizando MongoDB como banco de dados.

Endpoints

Adição de Produto à uma customer Wishlist

Adiciona um produto à wishlist do cliente.

  • Método: POST
  • Rota: /wishlist/{customerId}/produtos

Remoção de Produto da Wishlist

Remove um produto da wishlist do cliente.

  • Método: DELETE
  • Rota: /wishlist/{customerId}/products

Consulta da Lista de Produtos na Wishlist

Obtém a lista de produtos na wishlist do cliente.

  • Método: GET
  • Rota: /wishlist/{customerId}/products

Verificação de Existência de Produto na Wishlist

Verifica se um produto existe na wishlist do cliente.

  • Método: GET
  • Rota: /api/wishlist/{customerId}/products/{productId}

Documentação da API

A documentação da API está disponível no formato Swagger OpenAPI JSON na raiz do projeto, no arquivo api-docs.json.

swagger-editor

Você pode visualizar e interagir com a documentação usando o Swagger Editor.

  1. Acesse o Swagger Editor.
  2. No Swagger Editor, clique em "File" e selecione "Import File".
  3. Carregue o arquivo api-docs.json do diretório raiz do projeto.
  4. Agora você pode explorar a documentação da API, testar os endpoints e entender como a API funciona.

swagger-ui

Além disso, com a aplicação rodando em ambiente local é possível visualizar o doc através do http://localhost:8080/swagger-ui/index.html

postman-collection

Também disponibilizado na pasta raiz da aplicação um arquivo wishlist.postman_collection.json contendo a collection da api, podendo ser importada no postman.

Configuração do Ambiente

  • Java 17
  • Spring Boot 3.1.3
  • Maven
  • MongoDB

Como Executar

  1. Clone o repositório.
  2. Configure as propriedades do banco de dados no arquivo application.yml.
  3. O banco de dados, pode ser provisionado a partir do arquivo docker-compose.yml
docker-compose up -d

. *Certifique-se de ter o Docker e o Docker Compose instalados em sua máquina. 4. Execute o projeto usando sua IDE ou através do comando ./mvnw spring-boot:run.

./mvnw spring-boot:run

wishlist-service's People

Contributors

coutomariel avatar

Watchers

 avatar

wishlist-service's Issues

Feat: Consultar wishlist de cliente

Título do Card: Consulta de Lista de Desejos de um cliente - Backend

Descrição:
Implementar a funcionalidade de consulta da lista de desejos de um cliente no backend. Isso permitirá que os usuários consultem seus itens desejados.

Detalhes:

  • Funcionalidade Principal: Implementar um novo endpoint na API que permita aos clientes consultar os itens de suas listas de desejos.
  • Solicitações GET: Os clientes enviarão solicitações GET contendo o customerID..
  • Validação: Verificar se o cliente possuí uma lista de desejos.
  • Resposta de Sucesso: Retornar uma mensagem de sucesso junto com a wishlist.

Benefícios:

  • Melhoria da experiência do usuário, permitindo que eles visualizem suas listas de desejos.

Considerações Técnicas:

  • Implementar o endpoint GET com o tratamento de validações necessárias.
  • Integre a funcionalidade com a camada de persistência de dados.

Próximos Passos:

  1. Implementar o endpoint GET para consultar os itens da lista de desejos.
--- GET /wishlist/{customer_id}/products/
-- RESPONSE
API RESPONSE = [200 OK, 404 NOT FOUND * caso item não exista]
  1. Desenvolver a lógica de validação e integração com a camada de dados.
  2. Realizar testes unitários e de integração para garantir a funcionalidade correta.
  3. Documentar a nova funcionalidade para uso interno.

Ao concluir esta tarefa, estaremos proporcionando aos nossos clientes a capacidade de consultar os itens de suas listas de desejos, contribuindo para uma experiência mais personalizada e amigável em nossa plataforma.

Criar camada web e documentação

Criar controllers com as seguintes operações.

  • Inserir um ítem na wish list do cliente
--- POST /wishlist/{customer_id}/products
--- REQUEST BODY
{
      "id" : " ",
      "name" : " ",      
      "description" : " "

}
-- RESPONSE
API RESPONSE = [201 CREATED, 422 UNPROCESSABLE_ENTITY *caso produto já exista na lista]

--- Remover um ítem da wishlist

--- DELETE /wishlist/{customer_id}/products/{product_id}
-- RESPONSE
API RESPONSE = [204 NO_CONTENT, 404 NOT FOUND * caso item não exista]
  • Consultar todos os produtos da wishlist de um cliente.
--- GET /wishlist/{customer_id}
-- RESPONSE
API RESPONSE = [200 OK]
{
    "customerWishlist": [
         {
            "id": 123,
            "name": "Product A",
            "description": "Description for product",
          },
          {
            "id": 123,
            "name": "Product A",
            "description": "Description for product",
          }
    ]
}

  • Consultar se um determinado produto está na wishlist de um cliente.GET /wishlist/{customer_id}/search/{product_id}
-- response
200 OK
RESPONSE SE ENCONTRAR O PRODUTO
{
    "exists": true,
    "product": {
        "id": 123,
        "name": "Product A",
        "description": "Description for product",
    }
}
RESPONSE SE NÃO ENCONTRAR O PRODUTO
{
    "exists": false
}

`

Feat: Verificar se produto existe na wishlist de cliente

Título do Card: Consulta para verificar se um item existe na Lista de Desejos de um cliente - Backend

Descrição:
Implementar a funcionalidade de consulta por item na lista de desejos de um cliente no backend. Isso permitirá que os usuários consultem seus itens desejados.

Detalhes:

  • Funcionalidade Principal: Implementar um novo endpoint na API que permita aos clientes consultar os itens especificos de suas listas de desejos.
  • Solicitações GET: Os clientes enviarão solicitações GET contendo o customerID. e productId.
  • Validação: Verificar se o cliente possuí uma lista de desejos e se o item está nela.
  • Resposta de Sucesso: Retornar uma mensagem de sucesso junto com o produto.

Benefícios:

  • Melhoria da experiência do usuário, permitindo que eles visualizem ítens especificos em suas listas de desejos.

Considerações Técnicas:

  • Implementar o endpoint GET com o tratamento de validações necessárias.
  • Integre a funcionalidade com a camada de persistência de dados.

Próximos Passos:

  1. Implementar o endpoint GET para consultar por um item na lista de desejos.
--- GET /wishlist/{customer_id}/products/{productId}
-- RESPONSE
API RESPONSE = [200 OK, 404 NOT FOUND * caso item não exista]
  1. Desenvolver a lógica de validação e integração com a camada de dados.
  2. Realizar testes unitários e de integração para garantir a funcionalidade correta.
  3. Documentar a nova funcionalidade para uso interno.

Ao concluir esta tarefa, estaremos proporcionando aos nossos clientes a capacidade de consultar os itens especificos de suas listas de desejos, contribuindo para uma experiência mais personalizada e amigável em nossa plataforma.

Test: update tests

  • Adicionar testes para limite da lista.
  • Atualizar variáveis de ambiente docker-compose.

Feat: Adicionar produto na wishlist de cliente

Título da Tarefa: Adição de Produto à wishlist de cliente - Backend

Descrição:
Nesta tarefa, nosso foco será a implementação da funcionalidade de adição de produtos à wishlist no backend. Isso permitirá que os usuários adicionem produtos às suas listas de compras por meio de solicitações à API, proporcionando uma experiência mais conveniente ao planejar suas compras.

Detalhes:

  • Funcionalidade Principal: Implementar um novo endpoint na API que permitirá aos clientes adicionar produtos à sua lista de desejos.
  • Requisições POST: Os clientes enviarão solicitações POST contendo o ID,nome e descrição do produto.
  • Validações: Realizaremos validações para garantir que não existam produtos duplicado na wishlist e que o tamanho da wishlist de um cliente não exceda o tamanho máximo de 20 ítens.
  • Persistência dos Dados: As informações da lista de compras serão armazenadas no nosso banco de dados.

Benefícios:

  • Maior conveniência para os clientes ao adicionar produtos à lista de desejos.

Considerações Técnicas:

  • Garantir que a API esteja devidamente configurada para receber solicitações POST.
  • Implementar a lógica de validação para garantir a consistência dos dados.
  • Integrar a funcionalidade com a camada de persistência de dados.
  • Teste para garantir a devido comportamento da nova funcionalidade.

Próximos Passos:

  1. Implementar o novo endpoint POST para adicionar produtos à lista de compras.
--- POST /wishlist/{customer_id}/products
--- REQUEST BODY
{
      "id" : " ",
      "name" : " ",      
      "description" : " "

}
-- RESPONSE
API RESPONSE = [201 CREATED, 422 UNPROCESSABLE_ENTITY *caso produto já exista na lista]
  1. Desenvolver a lógica de validação e integração com a camada de dados.
  • Garantir que não existam itens duplicados na lista;
  • Garantir que a wishlist não contenha mais que 20 ítens.
  1. Realizar testes unitários e de integração para garantir a funcionalidade correta.
  2. Documentar a nova funcionalidade para uso interno.
    Com esta tarefa, estamos focados em melhorar a experiência do usuário ao permitir que eles adicionem produtos às suas listas de desejos de forma eficiente por meio de nossos endpoints de API. Isso contribuirá para uma plataforma mais completa e amigável aos clientes.

Documentar readme.md do projeto

Descrição:
Criar documentação abrangente e organizada para a API, detalhando rotas, parâmetros, métodos, respostas e erros. A documentação será um guia para desenvolvedores, fornecendo exemplos claros de uso e tratamento de erros.
A tarefa envolve escrever, revisar e formatar a documentação.

Critérios de Aceitação:

Estrutura organizada da documentação.
Descrição de todas as rotas e suas funcionalidades.
Detalhes sobre parâmetros, autenticação e códigos de status.
Adicionar readme ao projeto.
Adcionar json do swagger doc.

Feat:Remover produto da wishlist de cliente

Título do Card: Remoção de Item da Lista de Desejos - Backend

Descrição:
Implementar a funcionalidade de remoção de itens da lista de desejos de um cliente no backend. Isso permitirá que os usuários gerenciem seus itens desejados de forma mais flexível, removendo produtos que não desejam mais adquirir.

Detalhes:

  • Funcionalidade Principal: Implementar um novo endpoint na API que permita aos clientes remover itens específicos de suas listas de desejos.
  • Solicitações DELETE: Os clientes enviarão solicitações DELETE contendo o ID do item e ID do cliente a ser removido.
  • Validação: Verificar se o item a ser removido está presente na lista de desejos do cliente.
  • Atualização da Lista: Após a remoção bem-sucedida, atualizar a lista de desejos do cliente no banco de dados.
  • Resposta de Sucesso: Retornar uma mensagem de sucesso após a remoção do item.

Benefícios:

  • Melhoria da experiência do usuário, permitindo que eles gerenciem suas listas de desejos de maneira flexível.
  • Redução do esforço do cliente em manter sua lista de desejos atualizada.

Considerações Técnicas:

  • Implementar o endpoint DELETE com o tratamento de validações necessárias.
  • Integre a funcionalidade com a camada de persistência de dados.

Próximos Passos:

  1. Implementar o endpoint DELETE para remover itens da lista de desejos.
--- DELETE /wishlist/{customer_id}/products/{product_id}
-- RESPONSE
API RESPONSE = [204 NO_CONTENT, 404 NOT FOUND * caso item não exista]
  1. Desenvolver a lógica de validação e integração com a camada de dados.
  2. Realizar testes unitários e de integração para garantir a funcionalidade correta.
  3. Documentar a nova funcionalidade para uso interno.

Ao concluir esta tarefa, estaremos proporcionando aos nossos clientes a capacidade de remover itens indesejados de suas listas de desejos, contribuindo para uma experiência mais personalizada e amigável em nossa plataforma.

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.