Quiero crear una insignia personalizada en la que se agreguen estas reglas, lo que simplemente significa que cuando el usuario logre las siguientes cosas, se le otorgará automáticamente la insignia relacionada correspondiente.
Los usuarios deben lograr estas cosas/reglas a continuación:
El usuario debe haber creado al menos 2 publicaciones.
Los usuarios deben haber subido una foto de perfil.
El usuario debe haber dado “me gusta” a al menos una publicación.
Nota: He visto la creación de algunas insignias con la ayuda de consultas SQL, en realidad soy muy nuevo en esto, así que por favor, indíqueme dónde poner las consultas SQL (si es necesario) para lograr estas reglas anteriores.
He instalado el plugin y he ejecutado el siguiente comando SQL que me devuelve los usuarios que cumplen estas 3 reglas, pero no sé cómo convertirlo en un disparador cuando un usuario actúa sobre la publicación.
Comando SQL: select users.username, user_stats.user_id from user_stats Inner Join users ON user_stats.user_id = users.id where post_count = 2 AND likes_given = 1 AND uploaded_avatar_id > 0
Este es un código SQL de “Trigger: Actualizar diario”;
SELECT st.user_id user_id, current_timestamp granted_at
FROM user_stats st
JOIN users u
ON st.user_id = u.id
WHERE st.post_count >= 2 AND st.likes_given >= 1 AND u.uploaded_avatar_id > 0
Los otros triggers dependen de algo específico y no recomiendo usarlos a menos que encuentres un experto en SQL. (Yo mismo no estoy familiarizado con SQL)
Con respecto a 1?, esos son nombres de alias de tabla.
¿Ves la línea FROM user_stats st? Eso le dice a la consulta que st es la abreviatura de la tabla user_stats.
Lo mismo ocurre en la declaración JOIN donde dice users u. Está diciendo que en la consulta u es un alias de la tabla users en esa consulta. Los alias se utilizan para simplificar las consultas y usar menos escritura, lo que reduce las posibilidades de errores.
Con respecto a 3, si habilita esa opción, si un usuario ya no califica para una insignia según la consulta, se eliminará la insignia de su cuenta.
La consulta se ejecuta cada 24 horas según la hora del día en que inició el contenedor. Así que tengo una instancia que la ejecuta alrededor de las 0:00 UTC (aproximadamente) y otra instancia la ejecuta un poco después de las 6:00 UTC.
¿Podemos cambiar los horarios en los que se ejecuta esta consulta o podemos modificar esta consulta para que se active cuando el usuario actúa sobre una publicacióno cuandoel usuario edita o crea una publicación`?
Si es posible, por favor, cambie la consulta, ya que soy nuevo en este sistema de Discourse. Si puede ayudarme una vez, la próxima vez podré crear mi propia insignia personalizada.