Skip to content

add update #721

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

Open
wants to merge 62 commits into
base: main
Choose a base branch
from
Open

Conversation

GenioDiferenteDND
Copy link

PR Checklist

Please check if your PR fulfills the following requirements:

  • Tests for the changes have been added (for bug fixes / features)

PR Type

What kind of change does this PR introduce?

  • Bugfix
  • Feature
  • Code style update (formatting, local variables)
  • Refactoring (no functional changes, no api changes)
  • Build related changes
  • CI related changes
  • Other... Please describe:

What is the current behavior?

Issue Number: N/A

What is the new behavior?

Does this PR introduce a breaking change?

  • Yes
  • No

Other information

Parece que o problema está relacionado com a forma como as operações de filtro estão sendo mapeadas e utilizadas no código. A nova versão do Evershop requer que as operações de filtro sejam especificadas usando os valores do enum FilterOperation em vez de valores literais como =. Vou sugerir como você pode modificar o código para utilizar as novas operações de filtro corretamente.

Primeiro, vamos atualizar as operações de filtro no código para usar as operações enumeradas como eq, neq, etc., em vez de =. 

As principais alterações foram:

Substituir todas as ocorrências de = para eq nas operações de filtro.
Para os filtros de preço, use gteq para minPrice (maior ou igual) e lteq para maxPrice (menor ou igual).
Use in para filtros que aceitam múltiplos valores (arrays).
Corrigir a função query.and não reconhecida:

A função query.and pode ter sido substituída ou removida na nova versão do Evershop. Substitua query.and pela sintaxe correta da nova versão.

Como a documentação sugere que query.and não é mais uma função válida, substitua-a por uma condição de where adicional usando where novamente.

Aqui está uma revisão do seu código com and substituído:
Revisão do filters.js (com enumeração de operações)
Alterações importantes:
Retirei o mapeamento OPERATION_MAP:

Como os valores de operação enviados precisam estar no formato aceito pelo enum FilterOperation no GraphQL (eq, neq, gt, etc.), os valores são usados diretamente sem mapeamento para operadores SQL.
Uso correto das operações no URL:

As operações de filtro (eq, neq, gt, gteq, etc.) são adicionadas diretamente aos parâmetros do URL.
Essas alterações devem assegurar que as operações de filtro sejam compatíveis com a enumeração GraphQL e evitar o erro mencionado.
Mudanças realizadas:
Enums FilterOperation: Certifiquei-me de que as operações de filtro utilizam os valores corretos, como EQ em vez de =.
PropTypes: Adicionei isRequired onde necessário para garantir que as propriedades obrigatórias sejam passadas corretamente.
Miscellaneous: Pequenas correções e formatações para garantir que o código esteja coeso e correto.
Agora, o código deve funcionar corretamente com os valores de enumeração do GraphQL. Certifique-se de testar as mudanças para garantir que todos os filtros estejam funcionando conforme o esperado.
Parece que o arquivo indexFilters.js é responsável por lidar com os filtros e parâmetros da URL para a página de produtos. Vamos revisar o código e verificar se há algum problema:

Filtragem de preço: O código está verificando se os parâmetros minPrice e maxPrice estão presentes na consulta. No entanto, a operação de comparação para minPrice está definida como eq, o que parece estar incorreto. Deveria ser >= para minPrice e <= para maxPrice.
Filtragem de categoria: Está sendo feita corretamente, usando a operação = para comparar com o valor do parâmetro cat.
Filtragem de atributos: O código está buscando atributos filtráveis no banco de dados e, em seguida, aplicando a operação = para os valores correspondentes.
Ordenação e paginação: A ordenação está sendo definida corretamente, mas para a página e o limite, parece que a operação = está sendo usada, o que deve ser adequado para o valor exato da página e do limite, mas poderia ser mais útil com >= para a página e o limite.
Parece que a exceção ocorreu porque a propriedade eq não foi exportada corretamente. Vamos corrigir isso e garantir que as operações necessárias sejam exportadas. Aqui está o código atualizado para indexFilters.js: Com esta correção, o código deve agora exportar corretamente a operação de igualdade (eq) do módulo de operações e evitar a exceção que você encontrou. Certifique-se de testar novamente para garantir que tudo funcione como esperado
Alterações principais:

Importação do Mapa de Operações: Importa o OPERATION_MAP do módulo correspondente.
Uso do Mapa de Operações: Substitui as operações hardcoded ('=', etc.) pelas correspondentes do OPERATION_MAP.
Com essas mudanças, o código agora pode lidar corretamente com os diferentes tipos de operações de filtragem definidos no seu mapa de operações. Certifique-se de ajustar o caminho para a importação do OPERATION_MAP conforme necessário para corresponder à estrutura do seu projeto.
Alterações principais:

Atualização da lógica de updateFilter: Agora o método reconhece e preserva todas as operações de filtragem.
Validação das propriedades com PropTypes: Adicionadas as novas operações (eq, neq, gt, gteq, lt, lteq, like, nlike, in, nin).
Atualização da URL: Ajustes no updateFilter para garantir que a URL seja corretamente atualizada com os novos filtros.
Certifique-se de ajustar o caminho para a importação do OPERATION_MAP conforme necessário para corresponder à estrutura do seu projeto.
Ajustes Realizados:
Substituição de "=":
Substituímos todas as ocorrências de "=" pelas operações corretas do OPERATION_MAP, como OPERATION_MAP.eq, OPERATION_MAP.gteq, e OPERATION_MAP.lteq.
Benefícios:
Agora, o código utiliza as operações válidas definidas no OPERATION_MAP, evitando erros relacionados ao uso de operações inválidas no enum FilterOperation.
Com essas mudanças, o código deve funcionar corretamente dentro do ambiente do EverShop. Se ainda houver algum erro, pode ser necessário verificar quais operações são exatamente válidas no FilterOperation e ajustar o OPERATION_MAP conforme necessário.
Ajustes Realizados:
Adição do Enum FilterOperation:

Incluímos um enum em PropTypes para definir operações válidas: 'eq', 'neq', 'gt', 'gteq', 'lt', 'lteq', 'like', 'nlike', 'in', 'nin'.
Atualização das PropTypes:

Atualizamos PropTypes em Filter para refletir essas operações válidas.
Com essas alterações, o código do componente Filter deve agora trabalhar corretamente com operações válidas e evitar o erro inicial.
Direitos Autorais © 2024 E-Moio, E.I
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