From 1db3926dd2a5de719859ea962d4e1360b375d87b Mon Sep 17 00:00:00 2001 From: Oswaldo Ferreira Date: Fri, 15 Mar 2019 14:35:10 -0300 Subject: [PATCH] Add multi-line suggestion migrations Adds outdated, lines_above and lines_below columns to suggestions table. outdated - boolean which represents whether the suggestion is outdated or not. For instance, if any line changed after you left the multi-line suggestion, even though the note is not outdated, it helps tracking if the content has changed in the latest file. We cache this information in a column given it's not a cheap operation to do for every suggestion in the request time. lines_below, lines_above - persists the parsed arguments from `suggestion:-10+3` syntax, where `10` would be lines_above and 3 lines_below. We need that to dynamically calculate which lines we should monitor for outdating / persisting the correct content in from_content column. --- ...add_multi_line_attributes_to_suggestion.rb | 19 +++++++++++++++++++ db/schema.rb | 3 +++ 2 files changed, 22 insertions(+) create mode 100644 db/migrate/20190228192410_add_multi_line_attributes_to_suggestion.rb diff --git a/db/migrate/20190228192410_add_multi_line_attributes_to_suggestion.rb b/db/migrate/20190228192410_add_multi_line_attributes_to_suggestion.rb new file mode 100644 index 00000000000..cdb898011e3 --- /dev/null +++ b/db/migrate/20190228192410_add_multi_line_attributes_to_suggestion.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class AddMultiLineAttributesToSuggestion < ActiveRecord::Migration[5.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + add_column_with_default :suggestions, :outdated, :boolean, default: false, allow_null: false + add_column_with_default :suggestions, :lines_above, :integer, default: 0, allow_null: false + add_column_with_default :suggestions, :lines_below, :integer, default: 0, allow_null: false + end + + def down + remove_columns :suggestions, :outdated, :lines_above, :lines_below + end +end diff --git a/db/schema.rb b/db/schema.rb index 0c997f3b8a2..f34a776b2b0 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -2039,6 +2039,9 @@ ActiveRecord::Schema.define(version: 20190322132835) do t.string "commit_id" t.text "from_content", null: false t.text "to_content", null: false + t.boolean "outdated", default: false, null: false + t.integer "lines_above", default: 0, null: false + t.integer "lines_below", default: 0, null: false t.index ["note_id", "relative_order"], name: "index_suggestions_on_note_id_and_relative_order", unique: true, using: :btree end