Class: RssNotifier::Models::Feed
- Inherits:
-
Object
- Object
- RssNotifier::Models::Feed
- Defined in:
- lib/rss_notifier/models/feed.rb
Instance Method Summary collapse
- #changed? ⇒ Boolean
- #find_or_create_item(link:) ⇒ RssNotifier::Models::Item
- #save ⇒ Object
- #store ⇒ Object
- #to_db_object ⇒ Object
Instance Method Details
#changed? ⇒ 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 |
#save ⇒ Object
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 |
#store ⇒ Object
29 30 31 |
# File 'lib/rss_notifier/models/feed.rb', line 29 def store @store ||= RssNotifier::Db.default.store end |
#to_db_object ⇒ Object
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 |