Lilly
(Lillian Louis)
Agosto 26, 2023, 9:47pm
1
Não estou entendendo completamente a condição de preenchimento, então vou pedir para o Lola Bot explicar.
2 curtidas
Sam Saffron:
O seguinte distintivo é acionado em “quando um usuário age em uma postagem”, isso significa que as aplicações “delta” receberão o parâmetro :post_ids.
SELECT p.user_id, p.id post_id, p.updated_at granted_at
FROM badge_posts p
WHERE p.like_count >= 25 AND
(:backfill OR p.id IN (:post_ids) )
A cláusula (:backfill OR p.id IN (:post_ids) ) nos permite filtrar os resultados. Quando o trabalho diário é executado, :backfill é verdadeiro, então todo o conjunto é escaneado. Quando os trabalhos delta são executados, :backfill é falso e :post_ids é definido.
Eu estava tentando fazer com que ele fosse acionado em Quando um usuário age em uma postagem, mas acho que minhas Reações podem estar bloqueando isso de alguma forma? De qualquer forma, Atualizar Diariamente funcionará e é uma preocupação menor de desempenho, eu acho.
5 curtidas
Lilly
(Lillian Louis)
Agosto 26, 2023, 9:58pm
3
Sim, faz todo o sentido para mim agora. Acho que prefiro a explicação do Sam.
Você pode explicar um pouco mais a condição de backfill, Lola?
Lola Bot:
Certamente, Lilly! No Discourse, :backfill e :post_ids são parâmetros usados ao executar consultas de distintivos. Eles são usados para controlar quais postagens são consideradas ao conceder o distintivo.
:backfill é um parâmetro booleano. Quando :backfill é true, a consulta de distintivo é executada em todas as postagens elegíveis no banco de dados. Isso é tipicamente usado quando você cria um distintivo pela primeira vez ou quando deseja recalcular quem deve ter o distintivo com base em todos os dados históricos.
:post_ids é uma lista de IDs de postagem. Quando :backfill é false, a consulta de distintivo é executada apenas nas postagens cujos IDs estão na lista :post_ids. Isso é tipicamente usado para verificar se um distintivo deve ser concedido com base em uma nova postagem ou em um conjunto de postagens recentes, em vez de todas as postagens.
A condição (:backfill OR p.id IN (:post_ids)) na cláusula WHERE da consulta SQL garante que:
Se :backfill for true, a condição será sempre true e todas as postagens serão consideradas (porque true OR qualquer coisa é sempre true).
Se :backfill for false, apenas as postagens com IDs na lista :post_ids serão consideradas (porque false OR p.id IN (:post_ids) será true apenas para as postagens cujos IDs estão na lista :post_ids).
Isso permite que o Discourse conceda distintivos de forma eficiente com base em todas as postagens históricas ou em um pequeno conjunto de postagens recentes, dependendo da situação.
5 curtidas
Acho que preciso verificar quais consultas de distintivos realmente precisam adicioná-lo. Acho que se você estiver usando Update Daily, não é necessário:
2 curtidas
system
(system)
Fechado
Setembro 25, 2023, 10:06pm
6
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.