Skip to content
Snippets Groups Projects
Commit 0160d1d9 authored by Eugen Rochko's avatar Eugen Rochko
Browse files

Enable caching for some rabl views

parent aff22bfd
No related branches found
No related tags found
No related merge requests found
......@@ -205,7 +205,7 @@ GEM
pry-rails (0.3.4)
pry (>= 0.9.10)
puma (3.6.0)
rabl (0.13.0)
rabl (0.13.1)
activesupport (>= 2.3.14)
rack (2.0.1)
rack-attack (5.0.1)
......
......@@ -2,7 +2,7 @@ class Favourite < ApplicationRecord
include Streamable
belongs_to :account, inverse_of: :favourites
belongs_to :status, inverse_of: :favourites
belongs_to :status, inverse_of: :favourites, touch: true
validates :status_id, uniqueness: { scope: :account_id }
......
......@@ -5,7 +5,7 @@ class Status < ApplicationRecord
belongs_to :account, -> { with_counters }, inverse_of: :statuses
belongs_to :thread, foreign_key: 'in_reply_to_id', class_name: 'Status', inverse_of: :replies
belongs_to :reblog, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblogs
belongs_to :reblog, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblogs, touch: true
has_many :favourites, inverse_of: :status, dependent: :destroy
has_many :reblogs, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblog, dependent: :destroy
......
......@@ -8,6 +8,6 @@
- if @followers.empty?
= render partial: 'nothing_here'
- else
= render partial: 'grid_card', collection: @followers, as: :account
= render partial: 'grid_card', collection: @followers, as: :account, cached: true
= will_paginate @followers, pagination_options
......@@ -9,6 +9,6 @@
- if @following.empty?
= render partial: 'nothing_here'
- else
= render partial: 'grid_card', collection: @following, as: :account
= render partial: 'grid_card', collection: @following, as: :account, cached: true
= will_paginate @following, pagination_options
......@@ -12,6 +12,6 @@
= render partial: 'nothing_here'
- else
.activity-stream
= render partial: 'stream_entries/status', collection: @statuses, as: :status
= render partial: 'stream_entries/status', collection: @statuses, as: :status, cached: true
= will_paginate @statuses, pagination_options
object @account
cache @account
attributes :id, :username, :acct, :display_name, :note
......
attributes :id, :remote_url, :type
node(:url) { |media| full_asset_url(media.file.url) }
node(:preview_url) { |media| full_asset_url(media.file.url(:small)) }
node(:url) { |mention| TagManager.instance.url_for(mention.account) }
node(:acct) { |mention| mention.account.acct }
node(:id) { |mention| mention.account_id }
attributes :id, :created_at, :in_reply_to_id
node(:uri) { |status| TagManager.instance.uri_for(status) }
node(:content) { |status| Formatter.instance.format(status) }
node(:url) { |status| TagManager.instance.url_for(status) }
node(:reblogs_count) { |status| status.reblogs_count }
node(:favourites_count) { |status| status.favourites_count }
node(:favourited, if: proc { !current_account.nil? }) { |status| defined?(@favourites_map) ? !!@favourites_map[status.id] : current_account.favourited?(status) }
node(:reblogged, if: proc { !current_account.nil? }) { |status| defined?(@reblogs_map) ? !!@reblogs_map[status.id] : current_account.reblogged?(status) }
child :account do
extends 'api/v1/accounts/show'
end
child :media_attachments, object_root: false do
extends 'api/v1/statuses/_media'
end
child :mentions, object_root: false do
extends 'api/v1/statuses/_mention'
end
object @status
attributes :id, :created_at, :in_reply_to_id
cache @status
node(:uri) { |status| TagManager.instance.uri_for(status) }
node(:content) { |status| Formatter.instance.format(status) }
node(:url) { |status| TagManager.instance.url_for(status) }
node(:reblogs_count) { |status| status.reblogs_count }
node(:favourites_count) { |status| status.favourites_count }
node(:favourited, if: proc { !current_account.nil? }) { |status| defined?(@favourites_map) ? !!@favourites_map[status.id] : current_account.favourited?(status) }
node(:reblogged, if: proc { !current_account.nil? }) { |status| defined?(@reblogs_map) ? !!@reblogs_map[status.id] : current_account.reblogged?(status) }
extends 'api/v1/statuses/_show'
child :reblog => :reblog do
extends('api/v1/statuses/show')
end
child :account do
extends('api/v1/accounts/show')
end
child :media_attachments, object_root: false do
attributes :id, :remote_url, :type
node(:url) { |media| full_asset_url(media.file.url) }
node(:preview_url) { |media| full_asset_url(media.file.url(:small)) }
end
child :mentions, object_root: false do
node(:url) { |mention| TagManager.instance.url_for(mention.account) }
node(:acct) { |mention| mention.account.acct }
node(:id) { |mention| mention.account_id }
extends 'api/v1/statuses/_show'
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment