Условный заказ на липкие посты - PullRequest
0 голосов
/ 11 апреля 2020

Я работаю над функцией для прикрепленных постов, которая может иметь sticky_until. Мы хотим, чтобы они отображались в верхней части ленты, пока их sticky_until не прошло, а затем отображаются в ленте, отсортированной, как если бы они были обычными публикациями.

Например, если у меня есть эти пять постов, а сегодня 4/10/20

new_sticky = {
  text: '1'
  created_at: 4/10/20
  sticky_until: 4/20/20
}

older_sticky = {
  text: '2'
  created_at: 4/5/20
  sticky_until: 4/21/20
}

newish_expired_sticky = {
  text: '3'
  created_at: 4/8/20
  sticky_until: 4/9/20
}

older_expired_sticky = {
  text: '4'
  created_at: 4/1/20
  sticky_until: 4/5/20
}

regular_post = {
  text: '5'
  created_at: 4/7/20
  sticky_until: nil
}

Я бы хотел, чтобы заказ закончился

new_sticky
older_sticky
newish_expired_sticky
regular_post
older_expired_sticky

Как могу ли я выполнить 1012 * это? 1011 *

1 Ответ

1 голос
/ 11 апреля 2020

В необработанном SQL вы бы добавили условное выражение в начало вашего предложения ORDER BY, в результате чего те сообщения, чья дата sticky_until еще не произошла, будут отсортированы первыми:

ORDER BY CASE WHEN sticky_until >= CURRENT_DATE THEN 0 ELSE 1 END,
         -- your normal post ordering

Я предполагаю, что sticky_until - это дата, в противном случае вам нужно будет привести ее к одному.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...