Commit 45c7ee39 authored by Eugen Rochko's avatar Eugen Rochko

Remove unneeded indices, improve error handling in background workers, don't...

Remove unneeded indices, improve error handling in background workers, don't needlessly reload reblogged status, send Devise e-mails asynchronously
parent 95db6cbe
......@@ -54,7 +54,7 @@ class Api::V1::StatusesController < ApiController
end
def reblog
@status = ReblogService.new.call(current_user.account, Status.find(params[:id])).reload
@status = ReblogService.new.call(current_user.account, Status.find(params[:id]))
render action: :show
end
......
......@@ -11,6 +11,8 @@ class Notification < ApplicationRecord
belongs_to :follow, foreign_type: 'Follow', foreign_key: 'activity_id'
belongs_to :favourite, foreign_type: 'Favourite', foreign_key: 'activity_id'
validates :account_id, uniqueness: { scope: [:activity_type, :activity_id] }
STATUS_INCLUDES = [:account, :stream_entry, :media_attachments, :tags, mentions: :account, reblog: [:stream_entry, :account, :media_attachments, :tags, mentions: :account]].freeze
scope :with_includes, -> { includes(status: STATUS_INCLUDES, mention: [status: STATUS_INCLUDES], favourite: [:account, status: STATUS_INCLUDES], follow: :account) }
......
......@@ -16,4 +16,8 @@ class User < ApplicationRecord
has_settings do |s|
s.key :notification_emails, defaults: { follow: true, reblog: true, favourite: true, mention: true }
end
def send_devise_notification(notification, *args)
devise_mailer.send(notification, self, *args).deliver_later
end
end
......@@ -10,6 +10,8 @@ class NotifyService < BaseService
create_notification
send_email if email_enabled?
rescue ActiveRecord::RecordInvalid
return
end
private
......
......@@ -61,7 +61,7 @@ class ProcessFeedService < BaseService
status.save!
NotifyService.new.call(status.reblog.account, status) if status.reblog?
NotifyService.new.call(status.reblog.account, status) if status.reblog? && status.reblog.account.local?
Rails.logger.debug "Queuing remote status #{status.id} (#{id}) for distribution"
DistributionWorker.perform_async(status.id)
status
......
......@@ -5,5 +5,7 @@ class SalmonWorker
def perform(account_id, body)
ProcessInteractionService.new.call(body, Account.find(account_id))
rescue ActiveRecord::RecordNotFound
true
end
end
class RemoveUnneededIndexes < ActiveRecord::Migration[5.0]
def change
remove_index :notifications, name: "index_notifications_on_account_id"
remove_index :settings, name: "index_settings_on_target_type_and_target_id"
remove_index :statuses_tags, name: "index_statuses_tags_on_tag_id"
end
end
......@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20161119211120) do
ActiveRecord::Schema.define(version: 20161122163057) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
......@@ -103,7 +103,6 @@ ActiveRecord::Schema.define(version: 20161119211120) do
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["account_id", "activity_id", "activity_type"], name: "account_activity", unique: true, using: :btree
t.index ["account_id"], name: "index_notifications_on_account_id", using: :btree
end
create_table "oauth_access_grants", force: :cascade do |t|
......@@ -152,7 +151,6 @@ ActiveRecord::Schema.define(version: 20161119211120) do
t.datetime "created_at"
t.datetime "updated_at"
t.index ["target_type", "target_id", "var"], name: "index_settings_on_target_type_and_target_id_and_var", unique: true, using: :btree
t.index ["target_type", "target_id"], name: "index_settings_on_target_type_and_target_id", using: :btree
end
create_table "statuses", force: :cascade do |t|
......@@ -174,7 +172,6 @@ ActiveRecord::Schema.define(version: 20161119211120) do
t.integer "status_id", null: false
t.integer "tag_id", null: false
t.index ["tag_id", "status_id"], name: "index_statuses_tags_on_tag_id_and_status_id", unique: true, using: :btree
t.index ["tag_id"], name: "index_statuses_tags_on_tag_id", using: :btree
end
create_table "stream_entries", force: :cascade do |t|
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment