Skip to content

vitoriadeveloper/product-catalog-aws

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📝 Catolog API

API para gerenciar produtos e categorias, com integração AWS SNS/SQS para envio de mensagens e armazenamento de eventos de catálogo. Esta API é parte do fluxo do projeto que envolve a LambdaConsumer

📁 Estrutura do Projeto

src/main/java/com/vitoriadeveloper/catolog_api/
├── config
|   ├── aws
|        ├── AwsSnsConfig.java
|   ├── MongoDBConfig.java
├── controllers
   ├── CategoryController.java
   └── ProductController.java
├── domain
|    ├── exceptions
|          ├── CategoryNotFoundException
|          ├── GlobalExceptionHandler
|          ├── ProductNotFoundException
|    ├── Category.java
|    ├── Product.java
|
├── dto
   ├── AwsMessageCategoryDTO.java
   └── AwsMessageProductDTO.java
   ├── CategoryRequestDTO.java
   └── CategoryResponseDTO.java
   ├── ProductRequestDTO.java
   └── ProductResponseDTO.java
├── mappers
   ├── CategoryMapper.java
   └── ProductMapper.java
├── repositories
   └── CategoryRepository.java
   └── ProductRepository.java
└── services
    └── AwsSnsService.java
    └── CategoryService.java
    └── ProductService.java

⚙ Funcionalidades Principais

Categorias

  • CRUD completo de categorias.
  • Envio de mensagens ao SNS em cada operação:
  • Criação
  • Atualização
  • Exclusão

Produtos

  • CRUD completo de produtos.
  • Validação da categoria associada.
  • Envio de mensagens ao SNS em cada operação.

Integração SNS/SQS

AwsSnsService é responsável por publicar eventos:

  • publishCategory() → Mensagens de categoria

  • publishProdct() → Mensagens de produto

As mensagens enviadas são consumidas por uma Lambda responsável por atualizar o catálogo em S3.

🔗 Tecnologias e dependencias

Minhas Habilidades

  • Java 21
  • Spring Boot 3+
  • Spring Data MongoDB
  • AWS SDK v2 (SNS)
  • Jackson Databind

📦 Como rodar localmente

  1. Clonar o repositório:
git clone https://github.com/vitoriadeveloper/catolog_api.git
  1. Configurar MongoDB local ou remoto em MongoDBConfig.java, é recomendado que se faça o download no site do MongoDb
  2. Configurar credenciais AWS (AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY) no ambiente, também podem ser obtidas através da criação de um usuário no IAM no console da aws.
  3. Build e run:
./mvnw clean install
./mvnw spring-boot:run

📌 Endpoints

Categorias

Método Descrição
GET /categorias Listar todas categorias
POST /categorias Criar nova categoria
PUT /categorias/{id} Atualizar categoria
DELETE /categorias/{id} Deletar categoria

Produtos

Método Descrição
GET /produtos Listar todoss produtos
POST /produtos Criar novo produto
PUT /produtos/{id} Atualizar produto
DELETE /produtos/{id} Deletar produto

📢 Fluxo SNS/SQS

  1. Criação/atualização/exclusão em CategoryService ou ProductService → publica mensagem no SNS.
  2. Uma Lambda (consumidor SQS) processa a mensagem e atualiza o catálogo em S3.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages