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

feature/supply-priority-expiration #20

Open
wants to merge 8 commits into
base: develop
Choose a base branch
from

Conversation

gustavocs
Copy link
Contributor

@gustavocs gustavocs commented May 9, 2024

Copy link
Contributor

@AlbuquerqueRafael AlbuquerqueRafael left a comment

Choose a reason for hiding this comment

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

Olá, @gustavocs. Obrigado pelo pull request.

src/shelter-supply/shelter-supply.service.ts Outdated Show resolved Hide resolved
@gustavocs gustavocs force-pushed the feature/supply-priority-expiration branch from 5cab976 to 6180641 Compare May 9, 2024 21:59
@gustavocs gustavocs force-pushed the feature/supply-priority-expiration branch from 4292004 to c4ebd69 Compare May 9, 2024 23:12
src/shelter-supply/shelter-supply.job.ts Outdated Show resolved Hide resolved
src/shelter-supply/shelter-supply.job.ts Outdated Show resolved Hide resolved
src/shelter-supply/shelter-supply.job.ts Outdated Show resolved Hide resolved
filipefraga

This comment was marked as duplicate.

Copy link
Contributor

@filipepacheco filipepacheco left a comment

Choose a reason for hiding this comment

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

cumpre o requisito, apenas deve fazer a change sugerida em #20 (comment)

@gustavocs
Copy link
Contributor Author

gustavocs commented May 11, 2024

cumpre o requisito, apenas deve fazer a change sugerida em #20 (comment)

@filipepacheco @AndersonCRocha concordo, dava pra fazer com um updateMany. mas vou ter que dividir em duas queries de qualquer forma porque por alguma razão os campos createdAt e updatedAt no BD são varchar e não consigo usar os operadores de menor ou igual (lte). então faria essa lógica no próprio método. alguma objeção?

@gustavocs gustavocs force-pushed the feature/supply-priority-expiration branch from c4ebd69 to 701524e Compare May 11, 2024 01:19
@AndersonCRocha
Copy link
Contributor

cumpre o requisito, apenas deve fazer a change sugerida em #20 (comment)

@filipepacheco @AndersonCRocha concordo, dava pra fazer com um updateMany. mas vou ter que dividir em duas queries de qualquer forma porque por alguma razão os campos createdAt e updatedAt no BD são varchar e não consigo usar os operadores de menor ou igual (lte). então faria essa lógica no próprio método. alguma objeção?

Rapazz, eu acho q o momento de ajustar o campo no banco pro tipo correto seria agora q tá no início heim, não faz sentido ser varchar, @filipefraga sabe a motivação?

@filipepacheco
Copy link
Contributor

ok, vou abrir uma issue pra migrar os campos de string pra timestamp.

@gustavocs
o prisma não tem suporte a operadores de cast?
o operador gt usando Date() não funcionaria com essa string de timestamp?

se não, vamos manter assim porque de fato vai seguir sendo 2 queries.

@gustavocs
Copy link
Contributor Author

ok, vou abrir uma issue pra migrar os campos de string pra timestamp.

@gustavocs o prisma não tem suporte a operadores de cast? o operador gt usando Date() não funcionaria com essa string de timestamp?

se não, vamos manter assim porque de fato vai seguir sendo 2 queries.

@filipepacheco Não consigo converter a Date() pra fazer a query porque os parâmetros da query do prisma são tipados. Tentei sem fazer o cast pra Date e usar lte e não executa conforme o esperado. Acho que foi justamente por isso que a primeira lógica tinha feito assim e não lembrava bem.

Sobre a migração: pelo que vi, não é só nesta tabela. Várias outras estão usando varchar pra createdAt e updatedAt.

@AndersonCRocha
Copy link
Contributor

@filipepacheco Realmente o prisma n oferece o suporte no query builder pro cast, tá deixando a desejar demais, TB n oferece suporte pra inserir uma RAW Clause no meio do query builder, forçando converter toda a query para nativa com $queryRaw, ou então fazer alguma gambiarra. Que foi o caso do unnaccent do outro PR

@filipepacheco
Copy link
Contributor

@AndersonCRocha sim, estamos descobrindo vários pontos negativos do Prisma...

Mas sem problema. Podemos subir assim caso essa entrega seja requisitada para deploy e depois da migração em todas as tabelas passamos por aqui pra arrumar.

Vou aprovar.

@AndersonCRocha
Copy link
Contributor

AndersonCRocha commented May 11, 2024

@gustavocs é importante ressaltar que na sua implementação não está sendo 2 queries não, tá sendo 1 query + N updates em que N é a quantidade de registros q deverão ser alterados, se for continuar com essa abordagem ao invés de corrigir o tipo no banco de dados, sugiro vc fazer um filter() na lista pra pegar os expirados, depois um map() para obter os ida e por fim um único update com where IN

Edit 1: PutzZz, acabei de ver que ShelterSupply é chave composta, deu ruim, desisto!!!

@filipepacheco
Copy link
Contributor

Antes de aprovar, vou deixar 3 sugestões

  1. Aumentar a periodicidade do CRON (10 segundos é muito pouco)
  2. Colocar a periodicidade no .env pra que seja de fácil ajuste sem a necessidade de deploy
    2.1. Essa aqui tá sendo usado as constantes do Nest. Será que tem como usar o .env de maneira amigável nesse caso?
  3. Colocar o intervalo de tempo pra prioridade ser diminuida no .env também

Obrigado @gustavocs

@gustavocs gustavocs force-pushed the feature/supply-priority-expiration branch from 2e6a155 to ba82184 Compare May 11, 2024 03:27
@gustavocs
Copy link
Contributor Author

gustavocs commented May 11, 2024

@gustavocs é importante ressaltar que na sua implementação não está sendo 2 queries não, tá sendo 1 query + N updates em que N é a quantidade de registros q deverão ser alterados, se for continuar com essa abordagem ao invés de corrigir o tipo no banco de dados, sugiro vc fazer um filter() na lista pra pegar os expirados, depois um map() para obter os ida e por fim um único update com where IN

Edit 1: PutzZz, acabei de ver que ShelterSupply é chave composta, deu ruim, desisto!!!

Sim, eu tava implementando um filter e percebi que não teria como fazer com whereIn. Tá difícil. Vou fazer as mudanças sugeridas pelo @filipepacheco amanhã cedo. Valeu pelo review <3

@gustavocs
Copy link
Contributor Author

Aguardando #60 para corrigir implementação.

Copy link
Contributor

@filipepacheco filipepacheco left a comment

Choose a reason for hiding this comment

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

por gentileza corrige o erro de lint

@gustavocs
Copy link
Contributor Author

por gentileza corrige o erro de lint

Corrigido. O erro de lte vai vai seguir até os campos serem migrados pra timestampz. Já fiz o teste local e funciona.
Esse PR tá dependendo do #60, vou adicionar na descrição.

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

Successfully merging this pull request may close these issues.

6 participants