Class: RssNotifier::Models::Feed

Inherits:
Object
  • Object
show all
Defined in:
lib/rss_notifier/models/feed.rb

Instance Method Summary collapse

Instance Method Details

#changed?Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/rss_notifier/models/feed.rb', line 33

def changed?
  !updated_at || items.any?(&:changed?)
end

#find_or_create_item(link:) ⇒ RssNotifier::Models::Item



20
21
22
23
24
25
26
27
# 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

#saveObject



37
38
39
40
41
42
43
44
45
46
47
# 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

#storeObject



29
30
31
# File 'lib/rss_notifier/models/feed.rb', line 29

def store
  @store ||= RssNotifier::Db.default.store
end

#to_db_objectObject



49
50
51
52
53
54
55
56
57
# 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