otwarchive-symphonyarchive/lib/bookmarkable.rb
2026-03-11 22:22:11 +00:00

28 lines
869 B
Ruby

module Bookmarkable
def self.included(bookmarkable)
bookmarkable.class_eval do
has_many :bookmarks, as: :bookmarkable, inverse_of: :bookmarkable
has_many :user_tags, through: :bookmarks, source: :tags
after_update :update_bookmarks_index
after_update :update_bookmarker_pseuds_index
after_destroy :update_bookmarker_pseuds_index
end
end
def public_bookmark_count
Rails.cache.fetch("#{self.cache_key}/bookmark_count", expires_in: 2.hours) do
self.bookmarks.is_public.count
end
end
def update_bookmarks_index
IndexQueue.enqueue_ids(Bookmark, bookmarks.pluck(:id), :background)
end
def update_bookmarker_pseuds_index
return unless respond_to?(:should_reindex_pseuds?)
return unless should_reindex_pseuds?
IndexQueue.enqueue_ids(Pseud, bookmarks.pluck(:pseud_id), :background)
end
end