class RssNotifier::Models::Feed

Public Instance Methods

changed?() click to toggle source
# File lib/rss_notifier/models/feed.rb, line 33
def changed?
  !updated_at || items.any?(&:changed?)
end
find_or_create_item(link:) click to toggle source

@return [RssNotifier::Models::Item]

# File lib/rss_notifier/models/feed.rb, line 20
def find_or_create_item(link:)
  item = items.detect { |i| i.link.to_s.strip == link.to_s.strip }
  unless item
    item = RssNotifier::Models::Item.new(feed_url: self.url, link: link)
    self.items << item
  end
  item
end
save() click to toggle source
# File lib/rss_notifier/models/feed.rb, line 37
def save
  items.each do |item|
    item.updated_at = Time.now
  end
  self.updated_at = Time.now

  store.transaction do
    store["feeds"] ||= {}
    store["feeds"][url] = self.to_db_object
  end
end
store() click to toggle source
# File lib/rss_notifier/models/feed.rb, line 29
def store
  @store ||= RssNotifier::Db.default.store
end
to_db_object() click to toggle source
# File lib/rss_notifier/models/feed.rb, line 49
def to_db_object
  {
    'url' => url,
    'name' => name,
    'updated_at' => updated_at,
    'last_modified' => last_modified,
    'items' => items.map(&:to_db_object),
  }
end