diff --git a/app/models/diff_note.rb b/app/models/diff_note.rb index 9671955db360c77283082556fc3ba9314b1dc3be..d76ac51af0fe7c28efc93ac7e855fe632892db7e 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 b6b2ac6aa42f8a1db950833ab5be79ba28cf018e..2aff2b40a48777155c3278a1df79a4eb0754e41f 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 0000000000000000000000000000000000000000..b8ebcdbd156019255d771a1097601d8b90a8698f --- /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 d541e1cccb710c3c67b416dce51bf9fd6696b8a9..9e031680c3066677373b6d1d6b539b4c0e7a8694 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