From 5c9355fccc335eacb870c47498165324bd16f467 Mon Sep 17 00:00:00 2001 From: Nenad Vujicic Date: Mon, 20 Jan 2025 12:58:51 +0100 Subject: [PATCH] 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. --- ...250212160355_backfill_note_descriptions.rb | 30 +++++++++++++++++++ db/structure.sql | 1 + 2 files changed, 31 insertions(+) create mode 100644 db/migrate/20250212160355_backfill_note_descriptions.rb 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'),