Bem-vindo à API do MongoDB do PurPura! Esta API foi projetada para gerenciar e organizar os dados essenciais do Purpura, abrangendo os seguintes domínios:
- Empresas: Gerencie informações de empresas cadastradas.
- Chaves Pix: Controle e organize chaves Pix associadas.
- Endereços: Administre endereços de forma eficiente.
- Resíduos: Gerencie dados relacionados a resíduos.
- Conversas:
- Inclui suporte a chat em tempo real utilizando WebSockets com Redis.
- Permite comunicação instantânea entre usuários utilizando conteúdo em markdown.
- Adicionar, atualizar, buscar e deletar empresas.
- Pesquisar empresas com filtros avançados.
- Adicionar, atualizar, buscar e deletar chaves Pix.
- Gerenciamento de chaves Pix com validações específicas.
- Adicionar, atualizar, buscar e deletar endereços.
- Listagem completa de endereços cadastrados.
- Adicionar, atualizar, buscar e deletar resíduos.
- Controle detalhado de resíduos gerados.
- Suporte a WebSockets para comunicação em tempo real.
- Gerenciamento de mensagens e chats.
- Utilize a coleção de testes localizada em:
bruno-api-mgpara validar as funcionalidades da API.
- Explore e teste os endpoints da API diretamente no Swagger: https://xolyxnqo4j.execute-api.us-east-1.amazonaws.com/swagger-ui/index.html#
- Teste a funcionalidade de WebSockets utilizando o projeto Python disponível em: websocket-test-api-mg
- Certifique-se de ter o Docker e o IntelliJ instalado.
- Clone este repositório.
- Utilize o plugin DotEnv para ter acesso às variáveis de ambiente.
- Configure as variáveis de ambiente conforme o arquivo
.env - Mude as configurações de execução do projeto
ApiMgApplicationpara utilizar o perfildev. - Dentro ainda das configurações, ative o plugin Dotenv.
- Utilize o arquivo
compose.yamlpara configurar e iniciar os serviços necessários. - Execute o projeto.
- Acesse o Swagger para explorar os endpoints disponíveis.
Este projeto utiliza diversos padrões de design clássicos (criacionais, estruturais, comportamentais) em todo o seu código-fonte. Abaixo está um resumo, arquivo por arquivo, de onde e como esses padrões são aplicados:
src/main/java/org/purpura/apimg/service/ChatService.javaLinhas 71, 91: UsaChatModel.builder()eMessageModel.builder()para construir objetos de forma flexível e passo a passo.src/main/java/org/purpura/apimg/search/base/KeywordSearcher.javaLinha 16: UsaSearchOptions.builder().build()para construir opções de pesquisa.src/main/java/org/purpura/apimg/config/redis/RedisCacheConfig.javaLinha 34: UsaRedisCacheManager.builder(...)para a configuração do gerenciador de cache.
src/main/java/org/purpura/apimg/config/redis/RedisPubSubConfig.javaLinha 8: UsaMessageListenerAdapterdo Spring Data Redis para adaptar interfaces de message listener.
As anotações do Spring como @Configuration, @Component, @Service, @Repository e @ControllerAdvice são proxies para os padrões Singleton, Factory e Proxy no container IoC do Spring.
@Configuration (Singleton/Factory):
src/main/java/org/purpura/apimg/config/SecurityConfig.java(Linha 8)src/main/java/org/purpura/apimg/config/WebSocketConfig.java(Linha 9)src/main/java/org/purpura/apimg/config/jackson/JacksonConfig.java(Linha 8)src/main/java/org/purpura/apimg/config/CorsConfig.java(Linha 6)src/main/java/org/purpura/apimg/config/redis/RedisCacheConfig.java(Linha 15)src/main/java/org/purpura/apimg/config/redis/RedisPubSubConfig.java(Linha 10)src/main/java/org/purpura/apimg/config/redis/RedisMessageConfig.java(Linha 13)
@Component (Singleton/Proxy):
src/main/java/org/purpura/apimg/search/empresa/EmpresaSearcher.java(Linha 7)src/main/java/org/purpura/apimg/dto/mapper/conversa/MessageMapper.java(Linha 9)src/main/java/org/purpura/apimg/dto/mapper/empresa/EmpresaMapper.java(Linha 10)src/main/java/org/purpura/apimg/dto/mapper/empresa/EnderecoMapper.java(Linha 9)src/main/java/org/purpura/apimg/dto/mapper/empresa/ResiduoMapper.java(Linha 10)src/main/java/org/purpura/apimg/dto/mapper/empresa/ChavePixMapper.java(Linha 9)src/main/java/org/purpura/apimg/dto/mapper/conversa/ChatMapper.java(Linha 9)
@Service (Singleton/Proxy):
src/main/java/org/purpura/apimg/service/EmpresaService.java(Linha 24)src/main/java/org/purpura/apimg/service/ChatService.java(Linha 25)src/main/java/org/purpura/apimg/config/redis/RedisMessageSubscriber.java(Linha 8)
@Repository (Singleton/Proxy):
src/main/java/org/purpura/apimg/repository/MessageRepository.java(Linha 9)src/main/java/org/purpura/apimg/repository/EmpresaRepository.java(Linha 7)src/main/java/org/purpura/apimg/repository/ChatRepository.java(Linha 10)
@ControllerAdvice (Proxy/Singleton):
src/main/java/org/purpura/apimg/exception/GlobalExceptionHandler.java(Linha 19)
Criado com 💜 por:
- Felipe Fernandes dos Santos Oliveira: Back-end, testes e documentação.
- Emílio Stuart Palumbo: Esteira de deploy e infraestrutura.