Este projeto é uma API para gerenciar eventos tecnológicos. Ele fornece funcionalidades para criação, consulta e manipulação de eventos, incluindo detalhes como cupons, endereços e imagens. A API está integrada com a AWS, utilizando S3 Bucket para armazenamento de imagens, RDS para o banco de dados relacional e EC2 para o ambiente de produção.
Representa um evento na aplicação.
Atributos:
id: Identificador único do evento (UUID).title: Título do evento.description: Descrição do evento.imgUrl: URL da imagem do evento.eventUrl: URL do evento.remote: Indica se o evento é remoto (Boolean).date: Data do evento (Date).address: Relacionamento com a entidadeAddress.
Relacionamento:
OneToOnecom a classeAddress.
Representa o endereço associado a um evento.
Atributos:
id: Identificador único do endereço (UUID).city: Cidade do evento.uf: Estado (unidade federativa).event: Relacionamento com a entidadeEvent.
Relacionamento:
ManyToOnecom a classeEvent.
Representa um cupom associado a um evento.
Atributos:
id: Identificador único do cupom (UUID).code: Código do cupom.discount: Percentual de desconto.valid: Data de validade do cupom.event: Relacionamento com a entidadeEvent.
Relacionamento:
ManyToOnecom a classeEvent.
Estrutura para requisição de criação de eventos.
Atributos:
title: Título do evento.description: Descrição.date: Data do evento (Long).city: Cidade.state: Estado.remote: Indica se o evento é remoto.eventUrl: URL do evento.image: Arquivo da imagem (MultipartFile).
Estrutura para resposta dos eventos.
Atributos:
id: Identificador único.title: Título.description: Descrição.date: Data do evento.city: Cidade.state: Estado.remote: Indica se o evento é remoto.eventUrl: URL do evento.imageUrl: URL da imagem.
Estrutura para exibir detalhes completos de um evento.
Atributos:
id: Identificador único.title: Título.description: Descrição.date: Data do evento.city: Cidade.uf: Estado.eventUrl: URL do evento.imageUrl: URL da imagem.coupons: Lista de cupons associados.
Estrutura para requisição de criação de cupons.
Atributos:
code: Código do cupom.discount: Percentual de desconto.valid: Data de validade (Long).
- Extende
JpaRepositorypara manipulação de dados da entidadeAddress.
- Extende
JpaRepositorypara manipulação de dados da entidadeCoupon. - Métodos personalizados:
findByEventIdAndValidAfter(UUID eventId, Date currentDate)
Controlador responsável por gerenciar os eventos.
Endpoints:
POST /api/event: Criação de um novo evento.GET /api/event: Listar eventos paginados.GET /api/event/filter: Filtrar eventos por título, cidade, estado, ou intervalo de datas.GET /api/event/{eventId}: Buscar detalhes de um evento específico.
Controlador responsável por gerenciar cupons.
Endpoints:
POST /api/coupon/event/{eventId}: Adicionar um cupom a um evento.
Arquivo de configuração AWSConfig:
- Serviço S3:
- Utilizado para armazenar imagens dos eventos.
- Configuração definida com a região especificada em
application.properties.
- Java 17
- Spring Boot
- JPA/Hibernate
- AWS (S3, RDS, EC2)
- Maven
- Lombok
- H2 Database (para testes locais)
- S3 Bucket: Armazenamento de imagens.
- RDS: Banco de dados relacional em produção.
- EC2: Ambiente para hospedagem da API.
aws.region=us-east-1
spring.datasource.url=jdbc:mysql://your-rds-instance:3306/your-database
spring.datasource.username=your-username
spring.datasource.password=your-password
spring.jpa.hibernate.ddl-auto=update- Implementar autenticação e autorização.
- Melhorar a validação de dados de entrada.
- Adicionar logs estruturados.
- Criar testes automatizados (unitários e de integração).