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:
12
db/migrate/20180812162710_create_status_stats.rb
Normal file
12
db/migrate/20180812162710_create_status_stats.rb
Normal 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
|
19
db/migrate/20180812173710_copy_status_stats.rb
Normal file
19
db/migrate/20180812173710_copy_status_stats.rb
Normal 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
|
Reference in New Issue
Block a user