diff --git a/db/migrate/20250212160355_backfill_note_descriptions.rb b/db/migrate/20250212160355_backfill_note_descriptions.rb new file mode 100644 index 0000000000..63568592e6 --- /dev/null +++ b/db/migrate/20250212160355_backfill_note_descriptions.rb @@ -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 diff --git a/db/structure.sql b/db/structure.sql index d23c2d7487..1af934e029 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -3429,6 +3429,7 @@ INSERT INTO "schema_migrations" (version) VALUES ('23'), ('22'), ('21'), +('20250212160355'), ('20250206202905'), ('20250121191749'), ('20250105154621'),