From 46cc034e05448ff3f515c8e6ad2f72e3e0d657cc Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Mon, 25 Jul 2016 22:33:01 -0600 Subject: [PATCH] Add resolved_at and resolved_by_id to DiffNote --- app/models/diff_note.rb | 13 +++++++++++++ app/models/note.rb | 12 ++++++++++++ db/migrate/20160724205507_add_resolved_to_notes.rb | 10 ++++++++++ db/schema.rb | 4 +++- 4 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20160724205507_add_resolved_to_notes.rb diff --git a/app/models/diff_note.rb b/app/models/diff_note.rb index 9671955db36..d76ac51af0f 100644 --- a/app/models/diff_note.rb +++ b/app/models/diff_note.rb @@ -4,11 +4,14 @@ class DiffNote < Note serialize :original_position, Gitlab::Diff::Position serialize :position, Gitlab::Diff::Position + belongs_to :resolved_by, class_name: "User" + validates :original_position, presence: true validates :position, presence: true validates :diff_line, presence: true validates :line_code, presence: true, line_code: true validates :noteable_type, inclusion: { in: ['Commit', 'MergeRequest'] } + validates :resolved_by, presence: true, if: :resolved? validate :positions_complete validate :verify_supported @@ -72,6 +75,16 @@ class DiffNote < Note self.position.diff_refs == diff_refs end + def resolvable? + !system? && !for_commit? + end + + def resolved? + return false unless resolvable? + + self.resolved_at.present? + end + private def supported? diff --git a/app/models/note.rb b/app/models/note.rb index b6b2ac6aa42..2aff2b40a48 100644 --- a/app/models/note.rb +++ b/app/models/note.rb @@ -128,6 +128,18 @@ class Note < ActiveRecord::Base true end + def resolvable? + false + end + + def resolved? + false + end + + def to_be_resolved? + resolvable? && !resolved? + end + def discussion_id @discussion_id ||= if for_merge_request? diff --git a/db/migrate/20160724205507_add_resolved_to_notes.rb b/db/migrate/20160724205507_add_resolved_to_notes.rb new file mode 100644 index 00000000000..b8ebcdbd156 --- /dev/null +++ b/db/migrate/20160724205507_add_resolved_to_notes.rb @@ -0,0 +1,10 @@ +class AddResolvedToNotes < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def change + add_column :notes, :resolved_at, :datetime + add_column :notes, :resolved_by_id, :integer + end +end diff --git a/db/schema.rb b/db/schema.rb index d541e1cccb7..9e031680c30 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160721081015) do +ActiveRecord::Schema.define(version: 20160724205507) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -705,6 +705,8 @@ ActiveRecord::Schema.define(version: 20160721081015) do t.string "type" t.text "position" t.text "original_position" + t.datetime "resolved_at" + t.integer "resolved_by_id" end add_index "notes", ["author_id"], name: "index_notes_on_author_id", using: :btree -- GitLab