annotate db/migrate/007_create_journals.rb @ 8:0c83d98252d9 yuya

* Add custom repo prefix and proper auth realm, remove auth cache (seems like an unwise feature), pass DB handle around, various other bits of tidying
author Chris Cannam
date Thu, 12 Aug 2010 15:31:37 +0100
parents 513646585e45
children cbb26bc654de
rev   line source
Chris@0 1 class CreateJournals < ActiveRecord::Migration
Chris@0 2
Chris@0 3 # model removed, but needed for data migration
Chris@0 4 class IssueHistory < ActiveRecord::Base; belongs_to :issue; end
Chris@0 5 # model removed
Chris@0 6 class Permission < ActiveRecord::Base; end
Chris@0 7
Chris@0 8 def self.up
Chris@0 9 create_table :journals, :force => true do |t|
Chris@0 10 t.column "journalized_id", :integer, :default => 0, :null => false
Chris@0 11 t.column "journalized_type", :string, :limit => 30, :default => "", :null => false
Chris@0 12 t.column "user_id", :integer, :default => 0, :null => false
Chris@0 13 t.column "notes", :text
Chris@0 14 t.column "created_on", :datetime, :null => false
Chris@0 15 end
Chris@0 16 create_table :journal_details, :force => true do |t|
Chris@0 17 t.column "journal_id", :integer, :default => 0, :null => false
Chris@0 18 t.column "property", :string, :limit => 30, :default => "", :null => false
Chris@0 19 t.column "prop_key", :string, :limit => 30, :default => "", :null => false
Chris@0 20 t.column "old_value", :string
Chris@0 21 t.column "value", :string
Chris@0 22 end
Chris@0 23
Chris@0 24 # indexes
Chris@0 25 add_index "journals", ["journalized_id", "journalized_type"], :name => "journals_journalized_id"
Chris@0 26 add_index "journal_details", ["journal_id"], :name => "journal_details_journal_id"
Chris@0 27
Chris@0 28 Permission.create :controller => "issues", :action => "history", :description => "label_history", :sort => 1006, :is_public => true, :mail_option => 0, :mail_enabled => 0
Chris@0 29
Chris@0 30 # data migration
Chris@0 31 IssueHistory.find(:all, :include => :issue).each {|h|
Chris@0 32 j = Journal.new(:journalized => h.issue, :user_id => h.author_id, :notes => h.notes, :created_on => h.created_on)
Chris@0 33 j.details << JournalDetail.new(:property => 'attr', :prop_key => 'status_id', :value => h.status_id)
Chris@0 34 j.save
Chris@0 35 }
Chris@0 36
Chris@0 37 drop_table :issue_histories
Chris@0 38 end
Chris@0 39
Chris@0 40 def self.down
Chris@0 41 drop_table :journal_details
Chris@0 42 drop_table :journals
Chris@0 43
Chris@0 44 create_table "issue_histories", :force => true do |t|
Chris@0 45 t.column "issue_id", :integer, :default => 0, :null => false
Chris@0 46 t.column "status_id", :integer, :default => 0, :null => false
Chris@0 47 t.column "author_id", :integer, :default => 0, :null => false
Chris@0 48 t.column "notes", :text, :default => ""
Chris@0 49 t.column "created_on", :timestamp
Chris@0 50 end
Chris@0 51
Chris@0 52 add_index "issue_histories", ["issue_id"], :name => "issue_histories_issue_id"
Chris@0 53
Chris@0 54 Permission.find(:first, :conditions => ["controller=? and action=?", 'issues', 'history']).destroy
Chris@0 55 end
Chris@0 56 end