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

Implement NinjaService and update NinjaController methods #14

Merged
merged 4 commits into from
Dec 1, 2024

Conversation

OtavioXimarelli
Copy link
Owner

@OtavioXimarelli OtavioXimarelli commented Dec 1, 2024

Resumo por Sourcery

Integrar uma camada de serviço para operações Ninja introduzindo NinjaService e NinjaRepository. Refatorar NinjaController para utilizar a nova camada de serviço para recuperação de dados. Atualizar as propriedades da aplicação para mudar de um banco de dados H2 em memória para um baseado em arquivo, e configurar o Flyway de acordo.

Novas Funcionalidades:

  • Introduzir NinjaService para lidar com a lógica de negócios para operações Ninja.
  • Adicionar a interface NinjaRepository para interações com o banco de dados de entidades Ninja.

Melhorias:

  • Refatorar NinjaController para usar NinjaService na obtenção de dados de ninja.
  • Atualizar as propriedades da aplicação para usar um banco de dados H2 baseado em arquivo em vez de um em memória.

Build:

  • Modificar as propriedades da aplicação para configurar o Flyway com um banco de dados H2 baseado em arquivo.
Original summary in English

Summary by Sourcery

Integrate a service layer for Ninja operations by introducing NinjaService and NinjaRepository. Refactor NinjaController to utilize the new service layer for data retrieval. Update application properties to switch from an in-memory to a file-based H2 database, and configure Flyway accordingly.

New Features:

  • Introduce NinjaService to handle business logic for Ninja operations.
  • Add NinjaRepository interface for database interactions with Ninja entities.

Enhancements:

  • Refactor NinjaController to use NinjaService for fetching ninja data.
  • Update application properties to use a file-based H2 database instead of an in-memory one.

Build:

  • Modify application properties to configure Flyway with a file-based H2 database.

@sourcery-ai sourcery-ai bot changed the title @sourcery-ai Implement NinjaService and update NinjaController methods Dec 1, 2024
Copy link

sourcery-ai bot commented Dec 1, 2024

Guia do Revisor por Sourcery

Este PR implementa uma estrutura básica de CRUD para um sistema de gerenciamento de Ninjas usando Spring Boot. As mudanças incluem a configuração de uma camada de serviço, interface de repositório e atualização do controlador para usar esses novos componentes. Além disso, as configurações do banco de dados são modificadas para usar um banco de dados H2 baseado em arquivo em vez de armazenamento em memória.

Diagrama ER para MissionsModel e NinjaModel

erDiagram
    MISSIONS_MODEL {
        Long id
        String name
        String difficulty
    }
    NINJA_MODEL {
        Long id
        String name
        String rank
    }
    MISSIONS_MODEL ||--o{ NINJA_MODEL : has
    note for MISSIONS_MODEL "@JsonIgnore adicionado ao relacionamento de ninjas"
Loading

Diagrama de classes para o sistema de gerenciamento de Ninjas

classDiagram
    class NinjaController {
        - NinjaService ninjaService
        + NinjaController(NinjaService ninjaService)
        + listarNinjas() List~NinjaModel~
        + findNinjasByID(Long id) Optional~NinjaModel~
    }
    class NinjaService {
        - NinjaRepository ninjaRepository
        + NinjaService(NinjaRepository ninjaRepository)
        + listarNinjas() List~NinjaModel~
        + findNinjaByID(Long id) Optional~NinjaModel~
    }
    class NinjaRepository {
        + id(Long id) Long
    }
    class NinjaModel
    NinjaController --> NinjaService
    NinjaService --> NinjaRepository
    NinjaRepository --> NinjaModel
Loading

Alterações a Nível de Arquivo

Alteração Detalhes Arquivos
Implementada camada de serviço e repositório para a entidade Ninja
  • Criada a classe NinjaService com operações básicas de CRUD
  • Adicionada a interface NinjaRepository estendendo JpaRepository
  • Atualizado o controlador para usar a camada de serviço em vez de respostas codificadas
src/main/java/org/otavio/cadastrodeninjas/Ninjas/Service/NinjaService.java
src/main/java/org/otavio/cadastrodeninjas/Ninjas/Repository/NinjaRepository.java
src/main/java/org/otavio/cadastrodeninjas/Ninjas/Controller/NinjaController.java
Modificada a configuração do banco de dados para usar banco de dados H2 baseado em arquivo
  • Alterado o banco de dados H2 de armazenamento em memória para armazenamento baseado em arquivo
  • Atualizada a configuração do Flyway para corresponder às novas configurações do banco de dados
  • Simplificadas as propriedades de configuração do datasource
src/main/resources/application.properties
Aprimorado o tratamento de relacionamentos de entidades
  • Adicionada anotação @JsonIgnore para evitar referências circulares na serialização JSON
src/main/java/org/otavio/cadastrodeninjas/Missoes/Models/MissionsModel.java

Possíveis problemas relacionados


Dicas e comandos

Interagindo com o Sourcery

  • Iniciar uma nova revisão: Comente @sourcery-ai review no pull request.
  • Continuar discussões: Responda diretamente aos comentários de revisão do Sourcery.
  • Gerar um problema no GitHub a partir de um comentário de revisão: Peça ao Sourcery para criar um problema a partir de um comentário de revisão respondendo a ele.
  • Gerar um título para o pull request: Escreva @sourcery-ai em qualquer lugar no título do pull request para gerar um título a qualquer momento.
  • Gerar um resumo do pull request: Escreva @sourcery-ai summary em qualquer lugar no corpo do pull request para gerar um resumo do PR a qualquer momento. Você também pode usar este comando para especificar onde o resumo deve ser inserido.

Personalizando Sua Experiência

Acesse seu painel para:

  • Habilitar ou desabilitar recursos de revisão, como o resumo do pull request gerado pelo Sourcery, o guia do revisor e outros.
  • Alterar o idioma da revisão.
  • Adicionar, remover ou editar instruções de revisão personalizadas.
  • Ajustar outras configurações de revisão.

Obtendo Ajuda

Original review guide in English

Reviewer's Guide by Sourcery

This PR implements a basic CRUD structure for a Ninja management system using Spring Boot. The changes include setting up a service layer, repository interface, and updating the controller to use these new components. Additionally, database configurations are modified to use a file-based H2 database instead of in-memory storage.

ER diagram for MissionsModel and NinjaModel

erDiagram
    MISSIONS_MODEL {
        Long id
        String name
        String difficulty
    }
    NINJA_MODEL {
        Long id
        String name
        String rank
    }
    MISSIONS_MODEL ||--o{ NINJA_MODEL : has
    note for MISSIONS_MODEL "@JsonIgnore added to ninjas relationship"
Loading

Class diagram for Ninja management system

classDiagram
    class NinjaController {
        - NinjaService ninjaService
        + NinjaController(NinjaService ninjaService)
        + listarNinjas() List~NinjaModel~
        + findNinjasByID(Long id) Optional~NinjaModel~
    }
    class NinjaService {
        - NinjaRepository ninjaRepository
        + NinjaService(NinjaRepository ninjaRepository)
        + listarNinjas() List~NinjaModel~
        + findNinjaByID(Long id) Optional~NinjaModel~
    }
    class NinjaRepository {
        + id(Long id) Long
    }
    class NinjaModel
    NinjaController --> NinjaService
    NinjaService --> NinjaRepository
    NinjaRepository --> NinjaModel
Loading

File-Level Changes

Change Details Files
Implemented service layer and repository for Ninja entity
  • Created NinjaService class with basic CRUD operations
  • Added NinjaRepository interface extending JpaRepository
  • Updated controller to use service layer instead of hardcoded responses
src/main/java/org/otavio/cadastrodeninjas/Ninjas/Service/NinjaService.java
src/main/java/org/otavio/cadastrodeninjas/Ninjas/Repository/NinjaRepository.java
src/main/java/org/otavio/cadastrodeninjas/Ninjas/Controller/NinjaController.java
Modified database configuration to use file-based H2 database
  • Changed H2 database from in-memory to file-based storage
  • Updated Flyway configuration to match new database settings
  • Simplified datasource configuration properties
src/main/resources/application.properties
Enhanced entity relationships handling
  • Added @JsonIgnore annotation to prevent circular references in JSON serialization
src/main/java/org/otavio/cadastrodeninjas/Missoes/Models/MissionsModel.java

Possibly linked issues


Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time. You can also use
    this command to specify where the summary should be inserted.

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

Copy link

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Olá @OtavioXimarelli - Eu revisei suas alterações e encontrei alguns problemas que precisam ser resolvidos.

Problemas bloqueantes:

  • O método está faltando o parâmetro 'id' necessário em sua assinatura (link)

Comentários gerais:

  • O método findNinjasByID() no NinjaController está faltando o parâmetro 'id' em sua assinatura de método, mas o utiliza na chamada de serviço. Adicione '@PathVariable Long id' aos parâmetros do método.
  • Remova a importação estática não utilizada 'org.springframework.data.jpa.domain.AbstractPersistable_.id' de NinjaService.java
  • O método id() no NinjaRepository é redundante, pois JpaRepository já fornece findById(). Considere removê-lo.
Aqui está o que eu observei durante a revisão
  • 🔴 Problemas gerais: 1 problema bloqueante, 2 outros problemas
  • 🟢 Segurança: tudo parece bom
  • 🟢 Testes: tudo parece bom
  • 🟢 Complexidade: tudo parece bom
  • 🟢 Documentação: tudo parece bom

O Sourcery é gratuito para código aberto - se você gosta das nossas revisões, por favor, considere compartilhá-las ✨
Ajude-me a ser mais útil! Por favor, clique em 👍 ou 👎 em cada comentário e usarei o feedback para melhorar suas revisões.
Original comment in English

Hey @OtavioXimarelli - I've reviewed your changes and found some issues that need to be addressed.

Blocking issues:

  • Method is missing the required 'id' parameter in its signature (link)

Overall Comments:

  • The findNinjasByID() method in NinjaController is missing the 'id' parameter in its method signature but uses it in the service call. Add '@PathVariable Long id' to the method parameters.
  • Remove the unused static import 'org.springframework.data.jpa.domain.AbstractPersistable_.id' from NinjaService.java
  • The id() method in NinjaRepository is redundant since JpaRepository already provides findById(). Consider removing it.
Here's what I looked at during the review
  • 🔴 General issues: 1 blocking issue, 2 other issues
  • 🟢 Security: all looks good
  • 🟢 Testing: all looks good
  • 🟢 Complexity: all looks good
  • 🟢 Documentation: all looks good

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

}

@GetMapping("/showByID")
public String mostarTodosOsNinjasPorID() {
return "Mostrar Ninja por id";
public Optional<NinjaModel> findNinjasByID() {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

issue (bug_risk): O método está faltando o parâmetro 'id' necessário em sua assinatura

O método deve ser definido como: public Optional findNinjasByID(@RequestParam Long id)

Original comment in English

issue (bug_risk): Method is missing the required 'id' parameter in its signature

The method should be defined as: public Optional findNinjasByID(@RequestParam Long id)


@Repository
public interface NinjaRepository extends JpaRepository<NinjaModel, Long> {
Long id(Long id);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion: Remova o método id() desnecessário, pois JpaRepository já fornece findById()

@Repository
public interface NinjaRepository extends JpaRepository<NinjaModel, Long> {
}
Original comment in English

suggestion: Remove unnecessary id() method as JpaRepository already provides findById()

@Repository
public interface NinjaRepository extends JpaRepository<NinjaModel, Long> {
}

spring.flyway.baseline-on-migrate=true

spring.flyway.url=jdbc:h2:file:./data/testdb
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion: Evite duplicar a configuração da URL do banco de dados

Considere usar a referência de propriedade do Spring: spring.flyway.url=${spring.datasource.url} para manter a consistência

spring.flyway.url=${spring.datasource.url}
Original comment in English

suggestion: Avoid duplicating database URL configuration

Consider using Spring's property reference: spring.flyway.url=${spring.datasource.url} to maintain consistency

spring.flyway.url=${spring.datasource.url}

@OtavioXimarelli OtavioXimarelli merged commit 370da3f into main Dec 1, 2024
0 of 3 checks passed
@OtavioXimarelli OtavioXimarelli deleted the teste branch December 1, 2024 20:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant