Badge query per ogni post su un nuovo argomento in una categoria?

Ho un badge che i miei membri possono guadagnare più volte, è un badge “Club del libro” - viene assegnato loro per aver discusso il libro del mese.

Ogni mese viene creato un nuovo argomento sul libro successivo e tutti coloro che rispondono dovrebbero ricevere il badge - questo viene attualmente fatto manualmente ed è un vero problema.

Mi chiedevo se qualcuno potesse aiutarmi a creare un Badge SQL per risolvere questo problema.

L’utente dovrebbe ricevere al massimo un badge per argomento, la prima volta che pubblica in quell’argomento. È lo stesso badge ogni volta, che viene guadagnato più volte.

È possibile? Grazie!

2 Mi Piace

Qualcuno può aiutarmi con questo? O c’è una guida su come creare Badge SQL?

Hai letto Topics tagged sql-triggered-badge?

Sì, li ho letti tutti.

È un po’ scoraggiante provare qualcosa, dato che una query SQL mal formattata su un sito live potrebbe andare molto storta.

C’è una modalità di test o qualcosa del genere?

Utilizzo un server di staging per gli esperimenti.

Hai fatto progressi in merito?

Come vengono definiti gli argomenti del club del libro? Sono in una categoria separata o raggruppati per tag?

Non vado oltre. Sono bloccato dal fattore di concessione multipla.

Tutti gli argomenti sono nella stessa categoria. Quella categoria è bloccata in modo che solo lo staff possa creare post lì, quindi è sicuro concedere automaticamente a qualsiasi risposta nella categoria.

Ma voglio che:

  • Conceda un badge per la prima risposta di ogni persona in ogni argomento, ma solo una volta per argomento
  • Un utente può ottenere più volte lo stesso badge ogni volta che risponde a un argomento diverso della stessa categoria

Penso che qualcosa del genere potrebbe funzionare:

WITH book_club_first_posts AS (

SELECT 
    p.topic_id,
    p.user_id,
    MIN(p.id) AS post_id
FROM posts p
  JOIN topics t ON t.id = p.topic_id
WHERE t.category_id = 5  -- replace with the category_id of your book club
    AND p.deleted_at ISNULL
    AND t.deleted_at ISNULL
    AND p.post_type = 1
    AND p.post_number <> 1
    AND p.user_id > 0
GROUP BY p.topic_id, p.user_id

)

SELECT bcfp.user_id, bcfp.post_id, p.created_at granted_at
FROM book_club_first_posts bcfp
  JOIN posts p ON p.id = bcfp.post_id
WHERE (:backfill OR p.id IN (:post_ids))

1 Mi Piace

Lo proverò presto, grazie.

1 Mi Piace

Funziona benissimo, grazie!!

1 Mi Piace

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.