feeds/lib/feed_model/cache.rb

48 lines
1.4 KiB
Ruby
Raw Normal View History

module FeedModel
module Cache
require 'active_support/concern'
extend ActiveSupport::Concern
2021-09-15 16:06:43 +00:00
extend self
included do
before_save :do_before_save
end
def recreate_annc_cache(feed)
2021-11-18 05:59:37 +00:00
count = SiteFeedAnnc.where(feed_id: feed.id).count
if count>1
SiteFeedAnnc.where(feed_id: feed.id).limit(count-1).destroy
end
tmp = SiteFeedAnnc.where(feed_id: feed.id).first
if tmp.nil?
tmp = SiteFeedAnnc.new(feed_id: feed.id)
end
tmp[:feed_name] = feed[:feed_name]
tmp.merge_with_category = feed.merge_with_category
2020-04-08 13:13:02 +00:00
tmp.channel_key = feed.channel_key
tmp.category_title = feed.category[:title] rescue {}
tmp.remote_site_url = feed.remote_site_url
tmp.channel_title = feed.channel_title_for_cache
2021-11-09 10:11:11 +00:00
tmp.all_contents_for_feed = tmp.cache_annc(true)
tmp.save
end
def do_before_save
if self.class == Category
2020-07-20 05:07:01 +00:00
Thread.new do
SiteFeedAnnc.where(merge_with_category: self.id.to_s).each do |site_feed_annc|
recreate_annc_cache(site_feed_annc)
end
end
elsif self.class == SiteFeed
if self.disabled != true
2020-07-20 05:07:01 +00:00
Thread.new do
recreate_annc_cache(self)
end
else
tmp = SiteFeedAnnc.where(feed_id: self.id).first
if !tmp.nil?
tmp.destroy
end
end
end
end
end
end