Copies description, user_id and user_ip to notes

Adds migration script for copying description, user_id and user_ip from first note's comment to notes table.
This commit is contained in:
Nenad Vujicic 2025-01-20 12:58:51 +01:00
parent 00108bc9b7
commit 5c9355fccc
2 changed files with 31 additions and 0 deletions

View file

@ -0,0 +1,30 @@
class BackfillNoteDescriptions < ActiveRecord::Migration[7.2]
class Note < ApplicationRecord; end
class NoteComment < ApplicationRecord; end
disable_ddl_transaction!
def up
Note.in_batches(:of => 1000) do |notes|
note_ids = notes.pluck(:id)
sql_query = <<-SQL.squish
WITH first_comment AS(
SELECT DISTINCT ON (note_id) *
FROM note_comments
WHERE note_id BETWEEN #{note_ids.min} AND #{note_ids.max}
ORDER BY note_id, id
)
UPDATE notes
SET description = first_comment.body,
user_id = first_comment.author_id,
user_ip = first_comment.author_ip
FROM first_comment
WHERE first_comment.note_id = notes.id
AND first_comment.event = 'opened';
SQL
ActiveRecord::Base.connection.execute(sql_query)
end
end
end

View file

@ -3429,6 +3429,7 @@ INSERT INTO "schema_migrations" (version) VALUES
('23'),
('22'),
('21'),
('20250212160355'),
('20250206202905'),
('20250121191749'),
('20250105154621'),