Запрос: Пользовательский SQL для бейджа с общим количеством лайков

Привет!

В программном обеспечении поставляется значок по умолчанию, который мне очень нравится, но я хотел бы немного его доработать.

Оригинал:

Этот значок выдается, когда у вас 100 понравившихся постов и вы дали 100 или больше лайков в ответ. Спасибо, что поддерживаете это движение!

Желаемый вариант:

Этот значок выдается, когда вы получили 100 лайков и дали 100 или больше лайков в ответ.

Часть про «дать» должна остаться без изменений. Однако, чтобы полностью исключить подсчет количества постов в игровой системе форума, я хочу, чтобы пользователи, получившие 100 лайков на одном посте, получали этот значок так же, как и пользователи, получившие по одному лайку на 100 разных постах.

На данный момент я действовал по следующей инструкции: Enable Badge SQL

  • Включил SiteSetting.enable_badge_sql = true, применил новый SQL-запрос для значка через графический интерфейс, а затем отключил пользовательские SQL-запросы в целях безопасности с помощью SiteSetting.enable_badge_sql = false. Кастомный значок работает отлично, но я не хочу идти на необоснованные риски, не имея квалификации в области баз данных и SQL.

На данный момент форум небольшой, и видимых проблем нет, но по мере роста форума у меня могут возникнуть проблемы с производительностью. Если у вас есть время, пожалуйста, предоставьте свой SQL-запрос для этого кастомного значка.

Спасибо и с уважением!

Здравствуйте и добро пожаловать, @rapphann :slight_smile:

Боюсь, я тоже не мастер SQL :slight_smile: Но, думаю, это должно выглядеть примерно так:

SELECT us.user_id, current_timestamp AS granted_at 
FROM user_stats AS us 
WHERE us.likes_received >= 100 
AND us.likes_given >= 100
AND (:backfill OR us.user_id IN (:user_ids))