class RssNotifier::Db
Attributes
feeds[RW]
store[R]
Public Class Methods
default()
click to toggle source
@return [RssNotifier::Db]
# File lib/rss_notifier/db.rb, line 83 def self.default @default or raise "Not initialized" end
default=(default)
click to toggle source
# File lib/rss_notifier/db.rb, line 87 def self.default=(default) @default = default end
load(filename)
click to toggle source
# File lib/rss_notifier/db.rb, line 91 def self.load(filename) store = YAML::Store.new(filename) RssNotifier::Db.default = RssNotifier::Db.new(store) RssNotifier::Db.default.load RssNotifier::Db.default end
new(store)
click to toggle source
# File lib/rss_notifier/db.rb, line 12 def initialize(store) @feeds = {} @store = store end
Public Instance Methods
changed?()
click to toggle source
# File lib/rss_notifier/db.rb, line 33 def changed? 0 < changed_items.size end
changed_items()
click to toggle source
@return [Array] of Item
# File lib/rss_notifier/db.rb, line 38 def changed_items ch_items = [] @items.each do |url, item| if item.new_record? || item.changed? ch_items << item end end ch_items end
find_feed(url:)
click to toggle source
@return [RssNotifier::Models::Feed]
# File lib/rss_notifier/db.rb, line 66 def find_feed(url:) @feeds[url.to_s.strip] end
get_feed(url:, name:)
click to toggle source
@return [RssNotifier::Models::Feed] creates new Feed if not found
# File lib/rss_notifier/db.rb, line 61 def get_feed(url:, name:) @feeds[url] ||= RssNotifier::Models::Feed.new(url: url.to_s.strip, name: name) end
load()
click to toggle source
# File lib/rss_notifier/db.rb, line 70 def load @feeds = {} store.transaction do feeds_raw = store['feeds'] || {} feeds_raw.each do |url, feed_raw| feed = RssNotifier::Models::Feed.new(feed_raw) @feeds[feed.url] = feed end end self end
save()
click to toggle source
# File lib/rss_notifier/db.rb, line 48 def save return true unless changed? @items.each do |url, item| item.saved_at = Time.now end store.transaction do store['items'] = @items end true end
update(new_items)
click to toggle source
@param url [String] @param items [Array] of Item @return [Boolean] changed?
# File lib/rss_notifier/db.rb, line 20 def update(new_items) new_items.each do |item| if !item.link || item.link.empty? RssNotifier.logger.warn "Empty item_url for url #{item.link}" next end old_item = self.items[item.link] ||= Item.new old_item.update(item.to_h) end changed? end