Всем привет,
Я застрял на своём SQL-запросе. Моя цель — чтобы он выдавал конкретный пользовательский бейдж сразу же, когда пользователь отвечает на определённую тему. Проблема в том, что я уже почти добился этого: ежедневная задача «Backfill» выполняется успешно, но более мгновенный эффект явно не работает.
Наш форум использует этот бейдж для предоставления доступа к другим категориям (с некоторой помощью плагина автоматизации), поэтому задержка в конце дня/при backfill очень сбивает с толку новых пользователей и определённо убивает их импульс и энтузиазм при регистрации.
Я какое-то время игнорировал эту проблему, но теперь готов сдаться и попросить помощи.
По сути, я взял запрос из отличного поста Создание триггерных пользовательских бейджей, поэтому он, вероятно, будет выглядеть довольно знакомо для большинства.
SELECT p.user_id, p.id post_id, p.created_at granted_at
FROM badge_posts p
WHERE p.topic_id = 11558
AND (:backfill OR p.id IN (:post_ids) )
Или я также пробовал:
SELECT
DISTINCT ON (p.user_id)
p.user_id, p.id post_id, p.created_at granted_at
FROM badge_posts p
WHERE p.topic_id = 11558
AND(:backfill OR p.id IN (:post_ids) )
Оба варианта работают для ежедневного backfill, но не обеспечивают той оперативности, на которую я рассчитывал.
Ниже скриншот настроек бейджа в текущем состоянии.
Когда я проверяю логи ошибок, то вижу некоторые записи о сбоях backfill с момента первой реализации запроса, но не вижу никаких записей о сбоях запроса при публикации пользователем.
Вероятно, я просто упускаю что-то очевидное, но я уже так долго вглядывался в это, что совсем запутался. Надеюсь, кто-то из вас проявит сочувствие и даст мне несколько подсказок… или хотя бы укажет на полезную документацию.
Заранее спасибо!

