OpenProject is the leading open source project management software.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openproject/db/migrate/20121022124254_aggregated_c...

145 lines
6.5 KiB

require Rails.root.join("db","migrate","migration_utils","migration_squasher").to_s
require Rails.root.join("db","migrate","migration_utils","setting_renamer").to_s
require 'open_project/plugins/migration_mapping'
# This migration aggregates the migrations detailed in MIGRATION_FILES
class AggregatedCostsMigrations < ActiveRecord::Migration
def initialize
super
@issues_table_exists = ActiveRecord::Base.connection.tables.include? 'issues'
end
MIGRATION_FILES = <<-MIGRATIONS
001_create_deliverables.rb
002_add_cost_types_default.rb
003_add_deliverable_to_issues.rb
004_add_rate.rb
005_add_deliverables_date_fields.rb
006_delete_cost_from_cost_entries.rb
007_refactor_deliverable_intermediates.rb
008_remove_budget_from_deliverable.rb
009_add_comment_field_to_budget.rb
010_add_free_text_to_budget_and_entries.rb
011_add_deleted_at_to_cost_types.rb
012_refactor_terms.rb
013_create_cost_queries.rb
014_add_denormalized_costs_fields.rb
015_add_cost_query_variables.rb
016_denormalize_spent_on_of_cost_entries.rb
017_rename_permissions.rb
018_higher_precision_for_currency.rb
20091123144305_add_permission_inheritance.rb
20091130214149_primary_key_for_groups_users.rb
20091204172554_remove_costs_from_issues.rb
20120313152442_create_initial_variable_cost_object_journals.rb
20121022124253_remove_group_user_enhancements.rb
MIGRATIONS
OLD_PLUGIN_NAME = "redmine_costs"
def up
migration_names = OpenProject::Plugins::MigrationMapping.migration_files_to_migration_names(MIGRATION_FILES, OLD_PLUGIN_NAME)
Migration::MigrationSquasher.squash(migration_names) do
create_table "cost_entries" do |t|
t.integer "user_id", :null => false
t.integer "project_id", :null => false
t.integer "issue_id", :null => false
t.integer "cost_type_id", :null => false
t.float "units", :null => false
t.date "spent_on", :null => false
t.datetime "created_on", :null => false
t.datetime "updated_on", :null => false
t.string "comments", :null => false
t.boolean "blocked", :default => false, :null => false
t.decimal "overridden_costs", :precision => 15, :scale => 4
t.decimal "costs", :precision => 15, :scale => 4
t.integer "rate_id"
t.integer "tyear", :null => false
t.integer "tmonth", :null => false
t.integer "tweek", :null => false
end
create_table "cost_objects" do |t|
t.integer "project_id", :null => false
t.integer "author_id", :null => false
t.string "subject", :null => false
t.text "description", :null => false
t.string "type", :null => false
t.boolean "project_manager_signoff", :default => false, :null => false
t.boolean "client_signoff", :default => false, :null => false
t.date "fixed_date", :null => false
t.datetime "created_on"
t.datetime "updated_on"
end
create_table "cost_types" do |t|
t.string "name", :null => false
t.string "unit", :null => false
t.string "unit_plural", :null => false
t.boolean "default", :default => false, :null => false
t.datetime "deleted_at"
end
create_table "labor_budget_items" do |t|
t.integer "cost_object_id", :null => false
t.float "hours", :null => false
t.integer "user_id"
t.string "comments", :default => "", :null => false
t.decimal "budget", :precision => 15, :scale => 4
end
create_table "material_budget_items" do |t|
t.integer "cost_object_id", :null => false
t.float "units", :null => false
t.integer "cost_type_id"
t.string "comments", :default => "", :null => false
t.decimal "budget", :precision => 15, :scale => 4
end
create_table "rates" do |t|
t.date "valid_from", :null => false
t.decimal "rate", :precision => 15, :scale => 4, :null => false
t.string "type", :null => false
t.integer "project_id"
t.integer "user_id"
t.integer "cost_type_id"
end
if @issues_table_exists
change_table "issues" do |t|
t.column :cost_object_id, :integer, :null => true
end
end
change_table "time_entries" do |t|
t.decimal "overridden_costs", :precision => 15, :scale => 4
t.decimal "costs", :precision => 15, :scale => 4
t.integer "rate_id"
end
TimeEntry.reset_column_information
Migration::SettingRenamer.rename("plugin_redmine_costs","plugin_openproject_costs")
end
end
def down
drop_table "cost_entries"
drop_table "cost_objects"
drop_table "cost_queries"
drop_table "cost_types"
drop_table "labor_budget_items"
drop_table "material_budget_items"
drop_table "rates"
if @issues_table_exists
remove_column :issues, :cost_object_id
end
change_table "time_entries" do |t|
t.remove_column "overridden_costs"
t.remove_column "costs"
t.remove_column "rate_id"
end
TimeEntry.reset_column_information
end
end