Я хочу создать пользовательский значок, для которого будут применены следующие правила. Это означает, что когда пользователь выполнит указанные ниже действия, соответствующий значок будет присвоен ему автоматически.
Пользователь должен выполнить следующие действия/правила:
Пользователь создал как минимум 2 публикации.
Пользователь загрузил аватар профиля.
Пользователь поставил лайк хотя бы одной публикации.
Примечание: Я видел создание некоторых значков с помощью SQL-запросов. На самом деле я очень новичок в этом, поэтому, пожалуйста, подскажите, куда нужно помещать SQL-запросы (если они требуются), чтобы реализовать вышеуказанные правила.
Я установил плагин и написал следующий SQL-запрос, который возвращает пользователей, соответствующих этим трём правилам, но не знаю, как преобразовать его в триггер, срабатывающий при действии пользователя над публикацией.
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
Пожалуйста, помогите мне решить эту задачу. Если я смогу сделать это один раз, то смогу создавать и другие собственные значки с меньшими трудностями. @Lhc_fl
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
Остальные триггеры зависят от конкретных условий, и я не рекомендую их использовать, если вы не нашли эксперта по SQL. (Сам я не очень знаком с SQL).
Вы видите строку FROM user_stats st? Она указывает запросу, что st — это сокращение для таблицы user_stats.
То же самое верно и для оператора JOIN, где указано users u. Это означает, что в запросе u является псевдонимом таблицы users. Псевдонимы используются для упрощения запросов, позволяя сократить количество вводимых символов, что уменьшает вероятность ошибок.
Что касается вопроса 3, если вы включите эту опцию, то если пользователь больше не соответствует критериям для получения значка на основе запроса, значок будет удален из его аккаунта.
Запрос выполняется каждые 24 часа в зависимости от того, в какое время суток был запущен контейнер. У меня есть один экземпляр, который запускает его примерно в 0:00 UTC, и другой экземпляр, который запускает его чуть позже 6:00 UTC.
Можно ли изменить время выполнения этого запроса или модифицировать его так, чтобы триггер срабатывал «при действии пользователя над постом» или «при редактировании или создании поста пользователем»?
Если это возможно, пожалуйста, измените запрос. Я новичок в этой системе Discourse; если вы сможете помочь мне один раз, то в следующий раз я смогу создать собственную пользовательскую значок.