Skip to content

findAllByNameAndDepartmentAndCode method ignoring accent - #183

Open
RamonJales wants to merge 5 commits into
mainfrom
feat/findAllByCamps-ignore-accent
Open

findAllByNameAndDepartmentAndCode method ignoring accent#183
RamonJales wants to merge 5 commits into
mainfrom
feat/findAllByCamps-ignore-accent

Conversation

@RamonJales

Copy link
Copy Markdown
Collaborator

Por favor, informe se a PR segue os requisitos obrigatórios:

  • Mesmo padrão de código do projeto
  • Arquivos alterados/adicionados seguem o padrão Camel Case
  • A PR está relacionada a uma ou mais issue
  • Relacionei todas as issues na seção de "Development" da PR
  • O código foi revisado uma vez ou mais

Motivação para a criação da PR
Veja #143.

O que foi feito

  • Adicionado o operador da query collation, que permite ignorar acentos.
    • trecho de código adicionado: $collation: { 'locale': 'pt', 'strength': 2 }

@RamonJales RamonJales added the enhancement New feature or request label Jan 18, 2024
@RamonJales
RamonJales requested review from Kywal and zaqmarlon January 18, 2024 00:40
@RamonJales RamonJales linked an issue Jan 18, 2024 that may be closed by this pull request
@zaqmarlon

Copy link
Copy Markdown
Owner

Não passou porque essa branch tá desatualizada com a main!

@zaqmarlon

Copy link
Copy Markdown
Owner

Mesmo atualizado com a main os testes não passam. Problema é do que foi codado.

List<SubjectModel> findAllByRequirements(SubjectModel requirement);
List<SubjectModel> findAllByCoRequirements(SubjectModel coRequirement);
Page<SubjectModel> findAllByNameContainingIgnoreCaseAndDepartmentContainingIgnoreCaseAndCodeContainingIgnoreCase(Pageable pageable, String name, String department, String code);
@Query("{ $or: [ { 'name': { $regex: ?0, $options: 'i' } }, { 'department': { $regex: ?1, $options: 'i' } }, { 'code': { $regex: ?2, $options: 'i' } } ] }")

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Erros cometidos anteriormente:

  • O operador collation usado anteriormente não era necessário. Este operador uma maneira de substituir o regex e por isso se tornava redundante.
  • estava sendo repetido o ?0 nos três campos da query o que significava pegar o primeiro parâmetro do método e colocar nos campos da query. Ou seja, name, department e code era colocado no campo da busca.
    • Exemplo:
       findAllByNameAndDepartmentAndCode(page, "FMC", "IMD", "123");
    O que estava sendo associado a query era:
           @Query("{ $or: [ { 'name': { $regex: "FMC", $options: 'i' } }, { 'department': { $regex: "FMC", $options: 'i' } }, { 'code': { $regex: "FMC", $options: 'i' } } ] }")
    Ao enumerarmos as interrogações: ?0, ?1 e ?2 o spring faz a ligação correta entre os valores passados no método com a query de consulta.
  • A anotação @param auxilia na ligação correta entre os valores passados no método com a query de consulta.

@zaqmarlon zaqmarlon left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

Há um problema na busca através do controller.
Se você manda qualquer coisa no partialName parece que nem é considerado. Sempre o resultado são todas as disciplinas. O backend precisa urgentemente testar o controller. Vou adicionar a issue trabalhar nisso.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

(refactor) FindAll method ignore accent in search

2 participants