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

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
No related branches found
No related tags found
No related merge requests found
......@@ -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|
......
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