Move status counters to separate table, count replies (#8104)

* Move status counters to separate table, count replies

* Migration to remove old counter columns from statuses table

* Fix schema file
This commit is contained in:
Eugen Rochko
2018-08-14 19:19:32 +02:00
committed by GitHub
parent 018a9e4e7f
commit 8e111b753a
10 changed files with 142 additions and 32 deletions

View File

@ -0,0 +1,12 @@
class CreateStatusStats < ActiveRecord::Migration[5.2]
def change
create_table :status_stats do |t|
t.belongs_to :status, null: false, foreign_key: { on_delete: :cascade }, index: { unique: true }
t.bigint :replies_count, null: false, default: 0
t.bigint :reblogs_count, null: false, default: 0
t.bigint :favourites_count, null: false, default: 0
t.timestamps
end
end
end

View File

@ -0,0 +1,19 @@
class CopyStatusStats < ActiveRecord::Migration[5.2]
disable_ddl_transaction!
def up
safety_assured do
execute <<-SQL.squish
INSERT INTO status_stats (status_id, reblogs_count, favourites_count)
SELECT id, reblogs_count, favourites_count
FROM statuses
ON CONFLICT (status_id) DO UPDATE
SET reblogs_count = EXCLUDED.reblogs_count, favourites_count = EXCLUDED.favourites_count
SQL
end
end
def down
# Nothing
end
end