Facebook
From Buff Guinea Pig, 7 Years ago, written in Ruby.
Embed
Download Paste or View Raw
Hits: 276
  1.   scope :to_send, ->(feed) {
  2.     select(%{
  3.       telegram_subscriptions.telegram_chat_id,
  4.       feed_items.id,
  5.       feed_items.title,
  6.       feed_items.url
  7.     }).joins(
  8.       'INNER JOIN feeds ON feed_items.feed_id = feeds.id'
  9.     ).joins(
  10.       'INNER JOIN telegram_subscriptions ON telegram_subscriptions.feed_id = feeds.id'
  11.     ).joins(
  12.       'INNER JOIN telegram_chats ON telegram_chats.id = telegram_subscriptions.telegram_chat_id'
  13.     ).joins(
  14.       'LEFT JOIN sended_feed_items ON sended_feed_items.telegram_chat_id = telegram_chats.id AND sended_feed_items.feed_item_id = feed_items.id'
  15.     ).where(
  16.       feed_id: feed.id
  17.     ).where( # TODO: should I remove this?
  18.       created_during_first_update: false
  19.     ).where(
  20.       'feed_items.created_at > telegram_subscriptions.reported_about_first_update_at'
  21.     ).where(
  22.       'sended_feed_items.telegram_chat_id IS NULL'
  23.     ).where( # just to speedup this shit
  24.       "feed_items.created_at > now() - interval '1 day'"
  25.     ).where(
  26.       'feed_items.created_at > telegram_subscriptions.created_at'
  27.     ).order(
  28.       'telegram_chats.id ASC, remote_created_at ASC'
  29.     )
  30.   }