20 lines
649 B
Ruby
20 lines
649 B
Ruby
class AddLastActiveAtToBubbles < ActiveRecord::Migration[8.1]
|
|
def change
|
|
add_column :bubbles, :last_active_at, :datetime
|
|
add_index :bubbles, %i[ last_active_at status ]
|
|
|
|
execute <<~SQL
|
|
update bubbles
|
|
set last_active_at = activity.last_active_at
|
|
from (
|
|
select bubbles.id as bubble_id, coalesce(max(events.created_at), bubbles.created_at) as last_active_at
|
|
from bubbles
|
|
left join events on bubbles.id = events.bubble_id group by bubbles.id
|
|
) as activity
|
|
where bubbles.id = activity.bubble_id
|
|
SQL
|
|
|
|
change_column_null :bubbles, :last_active_at, false
|
|
end
|
|
end
|