Replace Makara with an initial Rails 6 role based splitting method.

This commit is contained in:
Free Speech Forever
2021-02-09 19:38:10 +00:00
committed by admin
parent 31922ea58b
commit 473c48b2aa
42 changed files with 3142 additions and 141 deletions

View File

@@ -65,7 +65,11 @@ class Api::BaseController < ApplicationController
def current_resource_owner
if doorkeeper_token
@current_user ||= Rails.cache.fetch("dk:user:#{doorkeeper_token.resource_owner_id}", expires_in: 25.hours) do
User.find(doorkeeper_token.resource_owner_id)
u = nil
ActiveRecord::Base.connected_to(role: :writing) do
u = User.find(doorkeeper_token.resource_owner_id)
end
u
end
end
return @current_user

View File

@@ -22,11 +22,17 @@ class Api::V1::Accounts::StatusesController < Api::BaseController
private
def set_account
@account = Account.find(params[:account_id])
ActiveRecord::Base.connected_to(role: :reading) do
@account = Account.find(params[:account_id])
end
end
def load_statuses
cached_account_statuses
cas = nil
ActiveRecord::Base.connected_to(role: :reading) do
cas = cached_account_statuses
end
cas
end
def cached_account_statuses

View File

@@ -17,7 +17,11 @@ class Api::V1::BookmarkCollections::BookmarksController < Api::BaseController
private
def load_statuses
cached_bookmarks
cb = nil
ActiveRecord::Base.connected_to(role: :reading) do
cb = cached_bookmarks
end
cb
end
def cached_bookmarks
@@ -25,7 +29,7 @@ class Api::V1::BookmarkCollections::BookmarksController < Api::BaseController
Status.reorder(nil).joins(:status_bookmarks).merge(results),
Status
)
end
`` end
def results
@_results ||= account_bookmarks.paginate_by_id(
@@ -65,4 +69,4 @@ class Api::V1::BookmarkCollections::BookmarksController < Api::BaseController
def pagination_params(core_params)
params.slice(:limit).permit(:limit).merge(core_params)
end
end
end

View File

@@ -27,7 +27,6 @@ class Api::V1::NotificationsController < Api::BaseController
def mark_read
if !params[:id].nil? and !current_account.user.nil?
conn = ActiveRecord::Base.connection
conn.stick_to_master!
conn.exec_query "update users set last_read_notification = #{params[:id].to_i} where id = #{current_account.user.id}"
end
# current_account.notifications.find(params[:id]).mark_read!

View File

@@ -34,14 +34,6 @@ class Api::V1::Statuses::FavouritesController < Api::BaseController
end
def requested_status
rs = nil
begin
rs = Status.find(params[:status_id])
rescue ActiveRecord::RecordNotFound
Status.connection.stick_to_master!
rs = Status.find(params[:status_id])
end
return rs unless rs.nil?
raise ActiveRecord::RecordNotFound
Status.find(params[:status_id])
end
end

View File

@@ -31,15 +31,7 @@ class Api::V1::Statuses::ReblogsController < Api::BaseController
private
def status_for_reblog
rs = nil
begin
rs = Status.find(params[:status_id])
rescue ActiveRecord::RecordNotFound
Status.connection.stick_to_master!
rs = Status.find(params[:status_id])
end
return rs unless rs.nil?
raise ActiveRecord::RecordNotFound
Status.find(params[:status_id])
end
def status_for_destroy

View File

@@ -39,7 +39,11 @@ class Api::V1::Timelines::ExploreController < Api::BaseController
end
def cached_explore_statuses
cache_collection explore_statuses, Status
es = nil
ActiveRecord::Base.connected_to(role: :reading) do
es = cache_collection explore_statuses, Status
end
es
end
def explore_statuses

View File

@@ -56,7 +56,11 @@ class Api::V1::Timelines::GroupCollectionController < Api::BaseController
end
def cached_group_collection_statuses
cache_collection group_collection_statuses, Status
gcs = nil
ActiveRecord::Base.connected_to(role: :reading) do
gcs = cache_collection group_collection_statuses, Status
end
gcs
end
def group_collection_statuses

View File

@@ -46,7 +46,11 @@ class Api::V1::Timelines::GroupController < Api::BaseController
end
def cached_group_statuses
cache_collection group_statuses, Status
gs = nil
ActiveRecord::Base.connected_to(role: :reading) do
gs = cache_collection group_statuses, Status
end
gs
end
def group_statuses

View File

@@ -16,7 +16,11 @@ class Api::V1::Timelines::ProController < Api::BaseController
end
def cached_pro_statuses
cache_collection pro_statuses, Status
ps = nil
ActiveRecord::Base.connected_to(role: :reading) do
ps = cache_collection pro_statuses, Status
end
ps
end
def pro_statuses

View File

@@ -89,8 +89,12 @@ class ApplicationController < ActionController::Base
def current_session
return nil if cookies.signed['_session_id'].nil?
@current_session ||= Rails.cache.fetch("dk:sess:#{cookies.signed['_session_id']}", expires_in: 25.hours) do
SessionActivation.find_by(session_id: cookies.signed['_session_id'])
@current_session ||= Rails.cache.fetch("dk:sess:#{cookies.signed['_session_id']}", expires_in: 25.hours) do
sa = nil
ActiveRecord::Base.connected_to(role: :writing) do
sa = SessionActivation.find_by(session_id: cookies.signed['_session_id'])
end
sa
end
end

View File

@@ -10,7 +10,6 @@ class Auth::SessionsController < Devise::SessionsController
prepend_before_action :authenticate_with_two_factor, if: :two_factor_enabled?, only: [:create]
before_action :set_instance_presenter, only: [:new]
before_action :set_body_classes
before_action :use_master
def new
Devise.omniauth_configs.each do |provider, config|
@@ -36,10 +35,6 @@ class Auth::SessionsController < Devise::SessionsController
protected
def use_master
User.connection.stick_to_master!
end
def find_user
if session[:otp_user_id]
User.find(session[:otp_user_id])

View File

@@ -13,9 +13,10 @@ module SessionTrackingConcern
def set_session_activity
return unless session_needs_update?
conn = ActiveRecord::Base.connection
conn.stick_to_master!
conn.exec_query "update session_activations set updated_at = NOW() where id = #{current_session.id}"
ActiveRecord::Base.connected_to(role: :writing) do
conn = ActiveRecord::Base.connection
conn.exec_query "update session_activations set updated_at = NOW() where id = #{current_session.id}"
end
end
def session_needs_update?

View File

@@ -12,7 +12,9 @@ module UserTrackingConcern
private
def set_user_activity
current_user.update_sign_in!(request) if user_needs_sign_in_update?
ActiveRecord::Base.connected_to(role: :writing) do
current_user.update_sign_in!(request) if user_needs_sign_in_update?
end
end
def user_needs_sign_in_update?

View File

@@ -9,6 +9,9 @@ class Oauth::AuthorizationsController < Doorkeeper::AuthorizationsController
include Localized
include ForceDbWriterRole
around_action :force_writer_db_role, only: [:store_current_location, :render_success]
private
def store_current_location

View File

@@ -1,6 +1,9 @@
# frozen_string_literal: true
class Oauth::TokensController < Doorkeeper::TokensController
include ForceDbWriterRole
around_action :force_writer_db_role, only: :revoke
def revoke
unsubscribe_for_token if authorized? && token.accessible?
super

View File

@@ -17,16 +17,16 @@ class ReactController < ApplicationController
before_action :set_instance_presenter
def react
#
#
end
def groupBySlug
@group = Group.where(slug: params[:groupSlug], is_archived: false).first
unless @group.nil?
return redirect_to "/groups/#{@group.id}"
end
return not_found
return not_found
end
def status_show
@@ -62,7 +62,7 @@ class ReactController < ApplicationController
def redirect_to_original
if @status.reblog?
redirect_to ::TagManager.instance.url_for(@status.reblog)
redirect_to ::TagManager.instance.url_for(@status.reblog)
end
end
@@ -75,7 +75,7 @@ class ReactController < ApplicationController
elsif find_public_route_matches
return
elsif request.path.count("/") == 1 && request.path.length === 1
#
#
elsif request.path.count("/") == 1 && !request.path.include?("@")
acctFromPath = request.path.sub("/", "")
@account = Account.find_local!(acctFromPath)
@@ -108,14 +108,14 @@ class ReactController < ApplicationController
end
def initial_state_params
if !current_user.nil?
if !current_user.nil? && !current_session.nil?
{
settings: Web::Setting.find_by(user: current_user)&.data || {},
push_subscription: current_account.user.web_push_subscription(current_session),
current_account: current_account,
token: current_session.token,
}
else
else
return {}
end
end