Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat/M2-7(Criar interfaces para o banco de dados) ✨ #11

Merged
merged 11 commits into from
Mar 5, 2024

Conversation

diegosneves
Copy link
Owner

@diegosneves diegosneves commented Feb 29, 2024

Solicitação de Pull Request

Status

  • In Progress
  • Ready to Merging

Tipo

  • Release
  • Feature
  • Technical Debt
  • Fix
  • Test
  • Refactor
  • Documentation
  • Performance

Descrição

  • Adicione as dependências PostgreSQL e spring-boot-starter-data-jpa

    • As dependências PostgreSQL e spring-boot-starter-data-jpa foram adicionadas no arquivo pom.xml.
  • Atualize o arquivo application.yaml

    • O arquivo application.yaml foi atualizado com os detalhes da conexão PostgreSQL.

Estas mudanças são necessárias para:

  • Integrar um banco de dados PostgreSQL com a aplicação Spring Boot

    • A integração com o banco de dados PostgreSQL permite à aplicação Spring Boot interagir com esse banco de dados.
  • Utilizar o Spring Data JPA para interações com o banco de dados

    • A dependência spring-boot-starter-data-jpa facilita as interações com o banco de dados, fornecendo um conjunto de ferramentas perspicazes e fáceis de usar.
  • Crie um arquivo docker-compose

    • Um arquivo docker-compose também foi criado para inicializar o contêiner do banco de dados PostgreSQL.
    • Lembre-se que estamos usando o modelo mais atual de Compose.

  • Detalhes da Conexão: O application.yaml foi atualizado para esclarecer os detalhes da conexão com o PostgreSQL.

Adição de ProductEntity, MapperStrategy e classes relacionadas

  • ProductEntity e ProductMapper: Foram adicionadas as classes ProductEntity e ProductMapper.

  • Implementação da Interface MapperStrategy: A interface MapperStrategy foi implementada.

  • Objetivo das Mudanças: Essas mudanças visam criar um mapeamento entre o modelo de domínio e a entidade do banco de dados. A entidade do banco de dados, então, pode ser salva e recuperada usando o ProductRepository.

  • Nova Exceção: Também foi adicionada uma nova mensagem de exceção para ProductException.


  • Anotações Removidas: As anotações @Repository e @Service foram removidas das interfaces ProductReader, ProductWriter, ProductPersistenceContract e da classe ProductService.

feat/M2-7(Criar interfaces para o banco de dados) ♻️ Move as classes de domínio e recursos relacionados para o pacote "app"

  • Uma grande reestruturação dos pacotes foi realizada onde as classes de domínio e outros recursos relacionados foram movidos para o namespace "app".
  • As classes que anteriormente estavam diretamente sob o namespace "hexagonal" agora são colocadas em "hexagonal.app".
  • Esta reorganização é necessária para manter a modularidade e a gerenciabilidade e adere aos princípios da arquitetura hexagonal.
  • Os imports necessários também foram atualizados para garantir consistência e compatibilidade.

feat/M2-7(Criar interfaces para o banco de dados) ✅ Adiciona a dependência H2 e para testes de integracao

  • Neste commit, o banco de dados H2 é adicionado como uma nova dependência de teste no arquivo pom.xml.
  • Em seguida, é criada uma classe ProductEntityMapper para auxiliar na mapeação entre Product e ProductContract.
  • Além disso, o repositório de produtos (ProductRepository) foi aprimorado para lidar com casos nulos tanto na busca quanto na gravação de produtos.
  • Por fim, um novo teste de integração para o ProductRepository foi adicionado para validar as alterações.

feat/M2-7(Criar interfaces para o banco de dados) ✨ Adiciona ProductEntityService e testes, atualiza ProductRepository e adiciona ProductRequest/Response

  • Adicione ProdutoEntityService e testes: Esse commit introduz ProdutoEntityService que inclui a lógica de negócios para lidar com os produtos e os testes relacionados.

  • Atualização do ProdutoRepositório: Foram realizadas pequenas atualizações no Produto e no ProdutoRepository para lidar com possíveis problemas com valores nulos e para melhorar o manuseio dos IDs únicos de produtos.

  • Adicione ProdutoRequisição/Resposta: Ele também inclui a criação de classes ProdutoRequeste ProdutoResponseto para facilitar o tratamento de solicitações/respostas dentro do serviço.

  • Manipulação de exceções apropriadas: A manipulação de exceções adequada foi adicionada para lidar com os casos em que o mapeamento entre as classes falha.


feat/M2-7(Criar interfaces para o banco de dados) ♻️ Relocate mapping classes to adapters directory

  • The mapping classes, including ProductEntityMapper, ProductMapper, MapperStrategy, BuilderMapper, have been moved from the 'app' directory to the 'adapters' directory.

  • As a consequence, all the paths of these classes imported in other classes have been updated too.

  • This modification aims to maintain the architecture clean and improve the project organization.


feat/M2-7(Criar interfaces para o banco de dados) 🎨 Adição de funcionalidades de ativação e desativação ao ProductEntityService

  • Adição de funcionalidades de ativação e desativação ao ProductEntityService

    • Foram adicionados métodos para ativar e desativar produtos dentro do ProductEntityService.
  • Testes Relacionados

    • Os testes relacionados foram escritos em ProductEntityServiceTest.
  • Atualizações no ProductEntityServiceContract e ProductController

    • Essas alterações também exigiram atualizações na interface do ProductEntityServiceContract, no ProductController e nas classes de Repositório para lidar com essas novas funcionalidades.
  • Melhorias na classe ProductMapper

    • A classe ProductMapper foi aprimorada para acomodar essas mudanças.

feat/M2-7(Criar interfaces para o banco de dados) 🎨 Refatoração das localizações dos pacotes web e handler

  • Refatoração das localizações dos pacotes web e handler

    • Este commit move as classes CorsConfig, WebSecurityConfig e OpenApiConfig do pacote 'app.infrastructure.web' para o pacote 'adapters.config.web'.
  • Mover ControllerExceptionHandler

    • O ControllerExceptionHandler também é movido de 'adapters.config' para 'adapters.config.handler' para se alinhar com a estrutura do projeto.
  • Melhora na clareza e manutenibilidade do código

    • Essa reorganização melhora a clareza e a manutenibilidade do código.

feat/M2-7(Criar interfaces para o banco de dados) ♻️ Refatoração da estrutura de pacotes no módulo adaptador

  • A estrutura de pacotes no módulo adaptador foi refatorada.
  • As classes relacionadas à configuração web, manipulador e modelo foram movidas do pacote de serviço geral para subpacotes Rest.
  • A refatoração melhora a clareza e a possibilidade de manutenção do código.

…d spring-boot-starter-data-jpa dependencies

- **Adicione as dependências PostgreSQL e spring-boot-starter-data-jpa**
  - As dependências PostgreSQL e spring-boot-starter-data-jpa foram adicionadas no arquivo pom.xml.

- **Atualize o arquivo application.yaml**
  - O arquivo application.yaml foi atualizado com os detalhes da conexão PostgreSQL.

Estas mudanças são necessárias para:

- **Integrar um banco de dados PostgreSQL com a aplicação Spring Boot**
  - A integração com o banco de dados PostgreSQL permite à aplicação Spring Boot interagir com esse banco de dados.

- **Utilizar o Spring Data JPA para interações com o banco de dados**
  - A dependência spring-boot-starter-data-jpa facilita as interações com o banco de dados, fornecendo um conjunto de ferramentas perspicazes e fáceis de usar.

- **Crie um arquivo docker-compose**
  - Um arquivo docker-compose também foi criado para inicializar o contêiner do banco de dados PostgreSQL.
  - Lembre-se que estamos usando o modelo mais atual de Compose.
@diegosneves diegosneves self-assigned this Feb 29, 2024
@diegosneves diegosneves linked an issue Feb 29, 2024 that may be closed by this pull request
2 tasks
@diegosneves diegosneves added the feature New feature or request label Feb 29, 2024
…n.yaml for PostgreSQL connection

- **Detalhes da Conexão:**
  - O `application.yaml` foi atualizado para esclarecer os detalhes da conexão com o PostgreSQL.
…, MapperStrategy, and related classes

**Adição de ProductEntity, MapperStrategy e classes relacionadas**

- **ProductEntity e ProductMapper:** Foram adicionadas as classes `ProductEntity` e `ProductMapper`.

- **Implementação da Interface MapperStrategy:** A interface `MapperStrategy` foi implementada.

- **Objetivo das Mudanças:** Essas mudanças visam criar um mapeamento entre o modelo de domínio e a entidade do banco de dados. A entidade do banco de dados, então, pode ser salva e recuperada usando o `ProductRepository`.

- **Nova Exceção:** Também foi adicionada uma nova mensagem de exceção para `ProductException`.
…y annotations from repository and service interfaces

- **Anotações Removidas:** As anotações `@Repository` e `@Service` foram removidas das interfaces `ProductReader`, `ProductWriter`, `ProductPersistenceContract` e da classe `ProductService`.
…de domínio e recursos relacionados para o pacote "app"

- Uma grande reestruturação dos pacotes foi realizada onde as classes de domínio e outros recursos relacionados foram movidos para o namespace "app".
- As classes que anteriormente estavam diretamente sob o namespace "hexagonal" agora são colocadas em "hexagonal.app".
- Esta reorganização é necessária para manter a modularidade e a gerenciabilidade e adere aos princípios da arquitetura hexagonal.
- Os imports necessários também foram atualizados para garantir consistência e compatibilidade.
…ência H2 e para testes de integracao

- Neste commit, o banco de dados H2 é adicionado como uma nova dependência de teste no arquivo pom.xml.
- Em seguida, é criada uma classe ProductEntityMapper para auxiliar na mapeação entre Product e ProductContract.
- Além disso, o repositório de produtos (ProductRepository) foi aprimorado para lidar com casos nulos tanto na busca quanto na gravação de produtos.
- Por fim, um novo teste de integração para o ProductRepository foi adicionado para validar as alterações.
…ntityService e testes, atualiza ProductRepository e adiciona ProductRequest/Response

- **Adicione ProdutoEntityService e testes**: Esse commit introduz ProdutoEntityService que inclui a lógica de negócios para lidar com os produtos e os testes relacionados.

- **Atualização do ProdutoRepositório**: Foram realizadas pequenas atualizações no Produto e no ProdutoRepository para lidar com possíveis problemas com valores nulos e para melhorar o manuseio dos IDs únicos de produtos.

- **Adicione ProdutoRequisição/Resposta**: Ele também inclui a criação de classes ProdutoRequeste ProdutoResponseto para facilitar o tratamento de solicitações/respostas dentro do serviço.

- **Manipulação de exceções apropriadas**: A manipulação de exceções adequada foi adicionada para lidar com os casos em que o mapeamento entre as classes falha.
… classes to adapters directory

- The mapping classes, including `ProductEntityMapper`, `ProductMapper`, `MapperStrategy`, `BuilderMapper`, have been moved from the 'app' directory to the 'adapters' directory.

- As a consequence, all the paths of these classes imported in other classes have been updated too.

- This modification aims to maintain the architecture clean and improve the project organization.
…alidades de ativação e desativação ao ProductEntityService

- **Adição de funcionalidades de ativação e desativação ao ProductEntityService**
  - Foram adicionados métodos para ativar e desativar produtos dentro do ProductEntityService.

- **Testes Relacionados**
  - Os testes relacionados foram escritos em ProductEntityServiceTest.

- **Atualizações no ProductEntityServiceContract e ProductController**
  - Essas alterações também exigiram atualizações na interface do ProductEntityServiceContract, no ProductController e nas classes de Repositório para lidar com essas novas funcionalidades.

- **Melhorias na classe ProductMapper**
  - A classe ProductMapper foi aprimorada para acomodar essas mudanças.
…ocalizações dos pacotes web e handler

- **Refatoração das localizações dos pacotes web e handler**
    - Este commit move as classes CorsConfig, WebSecurityConfig e OpenApiConfig do pacote 'app.infrastructure.web' para o pacote 'adapters.config.web'.

- **Mover ControllerExceptionHandler**
    - O ControllerExceptionHandler também é movido de 'adapters.config' para 'adapters.config.handler' para se alinhar com a estrutura do projeto.

- **Melhora na clareza e manutenibilidade do código**
    - Essa reorganização melhora a clareza e a manutenibilidade do código.
…strutura de pacotes no módulo adaptador

* A estrutura de pacotes no módulo adaptador foi refatorada.
* As classes relacionadas à configuração web, manipulador e modelo foram movidas do pacote de serviço geral para subpacotes `Rest`.
* A refatoração melhora a clareza e a possibilidade de manutenção do código.
@diegosneves diegosneves merged commit c013a68 into develop Mar 5, 2024
1 check passed
@diegosneves diegosneves deleted the feat/M2-7 branch March 5, 2024 14:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Criar interfaces para o banco de dados
1 participant