¿Insignia de consulta por cada vez que se publica en un nuevo tema en una categoría?

Tengo una insignia que mis miembros pueden ganar varias veces, es una insignia de “Club de Lectura” - se les otorga por discutir el libro del mes.

Cada mes, se crea un nuevo tema sobre el próximo libro, y todos los que respondan deberían recibir la insignia; esto se hace actualmente manualmente y es un verdadero fastidio.

Me preguntaba si alguien podría ayudarme a crear una insignia SQL para solucionar esto.

El usuario debe recibir un máximo de una insignia por tema, la primera vez que publique en ese tema. Es la misma insignia cada vez, que se gana varias veces.

¿Es posible? ¡Gracias!

2 Me gusta

¿Alguien puede ayudar con esto? ¿O hay alguna guía sobre cómo crear Badge SQL?

¿Leíste Topics tagged sql-triggered-badge?

Sí, he leído todo eso.

Es un poco desalentador probar algo, ya que una consulta SQL mal formada en un sitio en vivo podría salir muy mal.

¿Hay algún modo de prueba o algo así?

Utilizo un servidor provisional para experimentos.

¿Has avanzado algo más en esto?

¿Cómo se definen los temas del club de lectura? ¿Están en una categoría separada o agrupados por una etiqueta?

No más. Estoy perplejo por el factor de concesión múltiple.

Todos los temas están en la misma categoría. Esa categoría está bloqueada para que solo el personal pueda crear publicaciones allí, por lo que es seguro otorgar automáticamente a cualquier respuesta en la categoría.

Pero quiero que:

  • Otorgue una insignia por la primera respuesta de cada persona en cada tema, pero solo una vez por tema.
  • Un usuario puede obtener múltiples de la misma insignia cada vez que responde a un tema diferente de la misma categoría.

Creo que algo como esto podría funcionar:

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 me gusta

Lo intentaré pronto, gracias.

1 me gusta

¡Funciona genial, gracias!

1 me gusta

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