0
0
Fork 0

Cache relationships in API (#6482)

* Cache relationships in API

* Fetch relationships for search results in UI

* Only save one account's maps in each cache item
This commit is contained in:
Eugen Rochko 2018-02-18 03:14:46 +01:00 committed by GitHub
parent 9b8a448477
commit cba2897108
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 92 additions and 12 deletions

View file

@ -16,12 +16,16 @@ class AccountDomainBlock < ApplicationRecord
belongs_to :account
validates :domain, presence: true, uniqueness: { scope: :account_id }
after_create :remove_blocking_cache
after_destroy :remove_blocking_cache
after_commit :remove_blocking_cache
after_commit :remove_relationship_cache
private
def remove_blocking_cache
Rails.cache.delete("exclude_domains_for:#{account_id}")
end
def remove_relationship_cache
Rails.cache.delete_matched("relationship:#{account_id}:*")
end
end

View file

@ -12,14 +12,14 @@
class Block < ApplicationRecord
include Paginable
include RelationshipCacheable
belongs_to :account
belongs_to :target_account, class_name: 'Account'
validates :account_id, uniqueness: { scope: :target_account_id }
after_create :remove_blocking_cache
after_destroy :remove_blocking_cache
after_commit :remove_blocking_cache
private

View file

@ -0,0 +1,16 @@
# frozen_string_literal: true
module RelationshipCacheable
extend ActiveSupport::Concern
included do
after_commit :remove_relationship_cache
end
private
def remove_relationship_cache
Rails.cache.delete("relationship:#{account_id}:#{target_account_id}")
Rails.cache.delete("relationship:#{target_account_id}:#{account_id}")
end
end

View file

@ -13,6 +13,7 @@
class Follow < ApplicationRecord
include Paginable
include RelationshipCacheable
belongs_to :account, counter_cache: :following_count

View file

@ -13,6 +13,7 @@
class FollowRequest < ApplicationRecord
include Paginable
include RelationshipCacheable
belongs_to :account
belongs_to :target_account, class_name: 'Account'

View file

@ -13,14 +13,14 @@
class Mute < ApplicationRecord
include Paginable
include RelationshipCacheable
belongs_to :account
belongs_to :target_account, class_name: 'Account'
validates :account_id, uniqueness: { scope: :target_account_id }
after_create :remove_blocking_cache
after_destroy :remove_blocking_cache
after_commit :remove_blocking_cache
private