summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-08-21 12:16:26 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-08-21 12:16:26 +0300
commit625fb2f29d99ab21de2497a36512be69c80e39be (patch)
tree2ca8f7d92d4974425a67a5288ee79e14bc60e01d
parent0a0b0e1eab251c7e9c9dedc620f14602f8ce3541 (diff)
downloadgitlab-ce-625fb2f29d99ab21de2497a36512be69c80e39be.tar.gz
Add iids to milestones. Moved iids logic to separate concern
-rw-r--r--app/models/concerns/internal_id.rb17
-rw-r--r--app/models/concerns/issuable.rb11
-rw-r--r--app/models/issue.rb2
-rw-r--r--app/models/merge_request.rb2
-rw-r--r--app/models/milestone.rb2
-rw-r--r--db/migrate/20130821090531_add_internal_ids_to_milestones.rb5
-rw-r--r--db/schema.rb3
-rw-r--r--lib/tasks/migrate/migrate_iids.rake15
8 files changed, 43 insertions, 14 deletions
diff --git a/app/models/concerns/internal_id.rb b/app/models/concerns/internal_id.rb
new file mode 100644
index 00000000000..821ed54fb98
--- /dev/null
+++ b/app/models/concerns/internal_id.rb
@@ -0,0 +1,17 @@
+module InternalId
+ extend ActiveSupport::Concern
+
+ included do
+ validate :set_iid, on: :create
+ validates :iid, presence: true, numericality: true
+ end
+
+ def set_iid
+ max_iid = project.send(self.class.name.tableize).maximum(:iid)
+ self.iid = max_iid.to_i + 1
+ end
+
+ def to_param
+ iid.to_s
+ end
+end
diff --git a/app/models/concerns/issuable.rb b/app/models/concerns/issuable.rb
index fb08a5aa750..a05dba7f6b6 100644
--- a/app/models/concerns/issuable.rb
+++ b/app/models/concerns/issuable.rb
@@ -16,8 +16,6 @@ module Issuable
validates :author, presence: true
validates :title, presence: true, length: { within: 0..255 }
- validate :set_iid, on: :create
- validates :iid, presence: true, numericality: true
scope :authored, ->(user) { where(author_id: user) }
scope :assigned_to, ->(u) { where(assignee_id: u.id)}
@@ -47,15 +45,6 @@ module Issuable
end
end
- def set_iid
- max_iid = project.send(self.class.name.tableize).maximum(:iid)
- self.iid = max_iid.to_i + 1
- end
-
- def to_param
- iid.to_s
- end
-
def today?
Date.today == created_at.to_date
end
diff --git a/app/models/issue.rb b/app/models/issue.rb
index ecb881ab597..35b487dc3cf 100644
--- a/app/models/issue.rb
+++ b/app/models/issue.rb
@@ -17,8 +17,8 @@
#
class Issue < ActiveRecord::Base
-
include Issuable
+ include InternalId
belongs_to :project
validates :project, presence: true
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index d525ad17537..190f6ab15f4 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -23,8 +23,8 @@ require Rails.root.join("app/models/commit")
require Rails.root.join("lib/static_model")
class MergeRequest < ActiveRecord::Base
-
include Issuable
+ include InternalId
belongs_to :target_project, foreign_key: :target_project_id, class_name: "Project"
belongs_to :source_project, foreign_key: :source_project_id, class_name: "Project"
diff --git a/app/models/milestone.rb b/app/models/milestone.rb
index 023b8ddf04d..cfa47f30bde 100644
--- a/app/models/milestone.rb
+++ b/app/models/milestone.rb
@@ -13,6 +13,8 @@
#
class Milestone < ActiveRecord::Base
+ include InternalId
+
attr_accessible :title, :description, :due_date, :state_event, :author_id_of_changes
attr_accessor :author_id_of_changes
diff --git a/db/migrate/20130821090531_add_internal_ids_to_milestones.rb b/db/migrate/20130821090531_add_internal_ids_to_milestones.rb
new file mode 100644
index 00000000000..33e5bae5805
--- /dev/null
+++ b/db/migrate/20130821090531_add_internal_ids_to_milestones.rb
@@ -0,0 +1,5 @@
+class AddInternalIdsToMilestones < ActiveRecord::Migration
+ def change
+ add_column :milestones, :iid, :integer
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index b8e7d3dd6f2..429551a2bf4 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
-ActiveRecord::Schema.define(:version => 20130821090530) do
+ActiveRecord::Schema.define(:version => 20130821090531) do
create_table "deploy_keys_projects", :force => true do |t|
t.integer "deploy_key_id", :null => false
@@ -119,6 +119,7 @@ ActiveRecord::Schema.define(:version => 20130821090530) do
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "state"
+ t.integer "iid"
end
add_index "milestones", ["due_date"], :name => "index_milestones_on_due_date"
diff --git a/lib/tasks/migrate/migrate_iids.rake b/lib/tasks/migrate/migrate_iids.rake
index bc612cd69a7..33271e1a2bb 100644
--- a/lib/tasks/migrate/migrate_iids.rake
+++ b/lib/tasks/migrate/migrate_iids.rake
@@ -30,4 +30,19 @@ task migrate_iids: :environment do
end
puts 'done'
+ puts 'Milestones'.yellow
+ Milestone.where(iid: nil).find_each(batch_size: 100) do |m|
+ begin
+ m.set_iid
+ if m.update_attribute(:iid, m.iid)
+ print '.'
+ else
+ print 'F'
+ end
+ rescue
+ print 'F'
+ end
+ end
+
+ puts 'done'
end