summaryrefslogtreecommitdiffstats
path: root/db/migrate/007_create_journals.rb
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2006-12-05 20:45:04 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2006-12-05 20:45:04 +0000
commit96f83cc8f0f032554f771a59da22303cd473b878 (patch)
tree355a0d2ed653a5426c59ebf6a1fe65eba024b4d0 /db/migrate/007_create_journals.rb
parenteabc04d8368824965d3ac8de3fa84502e9c05d38 (diff)
downloadredmine-96f83cc8f0f032554f771a59da22303cd473b878.tar.gz
redmine-96f83cc8f0f032554f771a59da22303cd473b878.zip
trunk moved from /trunk/redmine to /trunk
git-svn-id: http://redmine.rubyforge.org/svn/trunk@67 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'db/migrate/007_create_journals.rb')
-rw-r--r--db/migrate/007_create_journals.rb54
1 files changed, 54 insertions, 0 deletions
diff --git a/db/migrate/007_create_journals.rb b/db/migrate/007_create_journals.rb
new file mode 100644
index 000000000..6170b5bd3
--- /dev/null
+++ b/db/migrate/007_create_journals.rb
@@ -0,0 +1,54 @@
+class CreateJournals < ActiveRecord::Migration
+
+ # model removed, but needed for data migration
+ class IssueHistory < ActiveRecord::Base; belongs_to :issue; end
+
+ def self.up
+ create_table :journals, :force => true do |t|
+ t.column "journalized_id", :integer, :default => 0, :null => false
+ t.column "journalized_type", :string, :limit => 30, :default => "", :null => false
+ t.column "user_id", :integer, :default => 0, :null => false
+ t.column "notes", :text
+ t.column "created_on", :datetime, :null => false
+ end
+ create_table :journal_details, :force => true do |t|
+ t.column "journal_id", :integer, :default => 0, :null => false
+ t.column "property", :string, :limit => 30, :default => "", :null => false
+ t.column "prop_key", :string, :limit => 30, :default => "", :null => false
+ t.column "old_value", :string
+ t.column "value", :string
+ end
+
+ # indexes
+ add_index "journals", ["journalized_id", "journalized_type"], :name => "journals_journalized_id"
+ add_index "journal_details", ["journal_id"], :name => "journal_details_journal_id"
+
+ Permission.create :controller => "issues", :action => "history", :description => "label_history", :sort => 1006, :is_public => true, :mail_option => 0, :mail_enabled => 0
+
+ # data migration
+ IssueHistory.find(:all, :include => :issue).each {|h|
+ j = Journal.new(:journalized => h.issue, :user_id => h.author_id, :notes => h.notes, :created_on => h.created_on)
+ j.details << JournalDetail.new(:property => 'attr', :prop_key => 'status_id', :value => h.status_id)
+ j.save
+ }
+
+ drop_table :issue_histories
+ end
+
+ def self.down
+ drop_table :journal_details
+ drop_table :journals
+
+ create_table "issue_histories", :force => true do |t|
+ t.column "issue_id", :integer, :default => 0, :null => false
+ t.column "status_id", :integer, :default => 0, :null => false
+ t.column "author_id", :integer, :default => 0, :null => false
+ t.column "notes", :text, :default => ""
+ t.column "created_on", :timestamp
+ end
+
+ add_index "issue_histories", ["issue_id"], :name => "issue_histories_issue_id"
+
+ Permission.find(:first, :conditions => ["controller=? and action=?", 'issues', 'history']).destroy
+ end
+end