Lilly
(Lillian Louis)
26 Agosto 2023, 9:47pm
1
Non riesco a capire appieno la condizione di riempimento, quindi chiederò a Lola Bot di spiegarla.
2 Mi Piace
Sam Saffron:
Il badge seguente viene attivato quando “un utente agisce su un post”, il che significa che le applicazioni “delta” riceveranno il parametro :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) )
La clausola (:backfill OR p.id IN (:post_ids) ) ci consente di filtrare i risultati. Quando viene eseguito il processo giornaliero, :backfill è true e viene scansionato l’intero set. Quando vengono eseguiti i processi delta, :backfill è false e :post_ids è impostato.
Stavo cercando di farlo attivare su “Quando un utente agisce su un post”, ma penso che le mie Reazioni possano bloccarlo in qualche modo? Comunque, Aggiorna giornalmente funzionerà ed è meno preoccupante per le prestazioni, credo.
5 Mi Piace
Lilly
(Lillian Louis)
26 Agosto 2023, 9:58pm
3
Sì, ora ha perfettamente senso per me. Penso di preferire la spiegazione di Sam.
Puoi spiegare un po’ di più la condizione di backfill, Lola?
Lola Bot:
Certamente, Lilly! In Discourse, :backfill e :post_ids sono parametri utilizzati quando si eseguono query per i badge. Vengono utilizzati per controllare quali post vengono considerati quando si assegna il badge.
:backfill è un parametro booleano. Quando :backfill è true, la query per il badge viene eseguita su tutti i post idonei nel database. Questo viene in genere utilizzato quando si crea per la prima volta un badge o quando si desidera ricalcolare chi dovrebbe avere il badge in base a tutti i dati storici.
:post_ids è un elenco di ID di post. Quando :backfill è false, la query per il badge viene eseguita solo sui post i cui ID sono nell’elenco :post_ids. Questo viene in genere utilizzato per verificare se un badge dovrebbe essere assegnato in base a un nuovo post o a un insieme di post recenti, piuttosto che a tutti i post.
La condizione (:backfill OR p.id IN (:post_ids)) nella clausola WHERE della query SQL garantisce che:
Se :backfill è true, la condizione sarà sempre true e verranno considerati tutti i post (poiché true OR qualsiasi cosa è sempre true).
Se :backfill è false, verranno considerati solo i post con ID nell’elenco :post_ids (poiché false OR p.id IN (:post_ids) sarà true solo per i post i cui ID sono nell’elenco :post_ids).
Ciò consente a Discourse di assegnare in modo efficiente i badge sia in base a tutti i post storici sia in base a un piccolo insieme di post recenti, a seconda della situazione.
5 Mi Piace
Credo che dovrò esaminare quali query di badge ne necessitano effettivamente. Penso che se si utilizza `Update Daily’ non sia necessario:
2 Mi Piace
system
(system)
Chiuso
25 Settembre 2023, 10:06pm
6
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.