Merge pull request #27 from finnlabs/feature/rails3_squash_migrations
Squashed old migrationspull/6827/head
commit
f0d719282a
@ -1,37 +0,0 @@ |
|||||||
#-- copyright |
|
||||||
# OpenProject is a project management system. |
|
||||||
# Copyright (C) 2011-2013 the OpenProject Foundation (OPF) |
|
||||||
# |
|
||||||
# This program is free software; you can redistribute it and/or |
|
||||||
# modify it under the terms of the GNU General Public License version 3. |
|
||||||
# |
|
||||||
# This program is distributed in the hope that it will be useful, |
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
# GNU General Public License for more details. |
|
||||||
# |
|
||||||
# You should have received a copy of the GNU General Public License |
|
||||||
# along with this program; if not, write to the Free Software |
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
||||||
# |
|
||||||
# See doc/COPYRIGHT.md for more details. |
|
||||||
#++ |
|
||||||
|
|
||||||
class CreateMeetings < ActiveRecord::Migration |
|
||||||
def self.up |
|
||||||
create_table :meetings do |t| |
|
||||||
t.column :title, :string |
|
||||||
t.column :author_id, :integer |
|
||||||
t.column :project_id, :integer |
|
||||||
t.column :location, :string |
|
||||||
t.column :start_time, :datetime |
|
||||||
t.column :duration, :float |
|
||||||
|
|
||||||
t.timestamps |
|
||||||
end |
|
||||||
end |
|
||||||
|
|
||||||
def self.down |
|
||||||
drop_table :meetings |
|
||||||
end |
|
||||||
end |
|
@ -1,37 +0,0 @@ |
|||||||
#-- copyright |
|
||||||
# OpenProject is a project management system. |
|
||||||
# Copyright (C) 2011-2013 the OpenProject Foundation (OPF) |
|
||||||
# |
|
||||||
# This program is free software; you can redistribute it and/or |
|
||||||
# modify it under the terms of the GNU General Public License version 3. |
|
||||||
# |
|
||||||
# This program is distributed in the hope that it will be useful, |
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
# GNU General Public License for more details. |
|
||||||
# |
|
||||||
# You should have received a copy of the GNU General Public License |
|
||||||
# along with this program; if not, write to the Free Software |
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
||||||
# |
|
||||||
# See doc/COPYRIGHT.md for more details. |
|
||||||
#++ |
|
||||||
|
|
||||||
class CreateMeetingContents < ActiveRecord::Migration |
|
||||||
def self.up |
|
||||||
create_table :meeting_contents do |t| |
|
||||||
t.column :type, :string |
|
||||||
t.column :meeting_id, :integer |
|
||||||
t.column :author_id, :integer |
|
||||||
t.column :text, :text |
|
||||||
t.column :comment, :string |
|
||||||
t.column :version, :integer |
|
||||||
|
|
||||||
t.timestamps |
|
||||||
end |
|
||||||
end |
|
||||||
|
|
||||||
def self.down |
|
||||||
drop_table :meeting_contents |
|
||||||
end |
|
||||||
end |
|
@ -1,28 +0,0 @@ |
|||||||
#-- copyright |
|
||||||
# OpenProject is a project management system. |
|
||||||
# Copyright (C) 2011-2013 the OpenProject Foundation (OPF) |
|
||||||
# |
|
||||||
# This program is free software; you can redistribute it and/or |
|
||||||
# modify it under the terms of the GNU General Public License version 3. |
|
||||||
# |
|
||||||
# This program is distributed in the hope that it will be useful, |
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
# GNU General Public License for more details. |
|
||||||
# |
|
||||||
# You should have received a copy of the GNU General Public License |
|
||||||
# along with this program; if not, write to the Free Software |
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
||||||
# |
|
||||||
# See doc/COPYRIGHT.md for more details. |
|
||||||
#++ |
|
||||||
|
|
||||||
class CreateMeetingContentVersions < ActiveRecord::Migration |
|
||||||
def self.up |
|
||||||
MeetingContent.create_versioned_table |
|
||||||
end |
|
||||||
|
|
||||||
def self.down |
|
||||||
MeetingContent.drop_versioned_table |
|
||||||
end |
|
||||||
end |
|
@ -1,38 +0,0 @@ |
|||||||
#-- copyright |
|
||||||
# OpenProject is a project management system. |
|
||||||
# Copyright (C) 2011-2013 the OpenProject Foundation (OPF) |
|
||||||
# |
|
||||||
# This program is free software; you can redistribute it and/or |
|
||||||
# modify it under the terms of the GNU General Public License version 3. |
|
||||||
# |
|
||||||
# This program is distributed in the hope that it will be useful, |
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
# GNU General Public License for more details. |
|
||||||
# |
|
||||||
# You should have received a copy of the GNU General Public License |
|
||||||
# along with this program; if not, write to the Free Software |
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
||||||
# |
|
||||||
# See doc/COPYRIGHT.md for more details. |
|
||||||
#++ |
|
||||||
|
|
||||||
class CreateMeetingParticipants < ActiveRecord::Migration |
|
||||||
def self.up |
|
||||||
create_table :meeting_participants do |t| |
|
||||||
t.column :user_id, :integer |
|
||||||
t.column :meeting_id, :integer |
|
||||||
t.column :meeting_role_id, :integer |
|
||||||
t.column :email, :string |
|
||||||
t.column :name, :string |
|
||||||
t.column :invited, :boolean |
|
||||||
t.column :attended, :boolean |
|
||||||
|
|
||||||
t.timestamps |
|
||||||
end |
|
||||||
end |
|
||||||
|
|
||||||
def self.down |
|
||||||
drop_table :meeting_participants |
|
||||||
end |
|
||||||
end |
|
@ -1,32 +0,0 @@ |
|||||||
#-- copyright |
|
||||||
# OpenProject is a project management system. |
|
||||||
# Copyright (C) 2011-2013 the OpenProject Foundation (OPF) |
|
||||||
# |
|
||||||
# This program is free software; you can redistribute it and/or |
|
||||||
# modify it under the terms of the GNU General Public License version 3. |
|
||||||
# |
|
||||||
# This program is distributed in the hope that it will be useful, |
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
# GNU General Public License for more details. |
|
||||||
# |
|
||||||
# You should have received a copy of the GNU General Public License |
|
||||||
# along with this program; if not, write to the Free Software |
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
||||||
# |
|
||||||
# See doc/COPYRIGHT.md for more details. |
|
||||||
#++ |
|
||||||
|
|
||||||
class AddLockToMeetingContent < ActiveRecord::Migration |
|
||||||
def self.up |
|
||||||
add_column :meeting_contents, :locked, :boolean, :default => false |
|
||||||
# Check for existence of the pre-journalized MeetingContentVersions table |
|
||||||
add_column :meeting_content_versions, :locked, :boolean, :default => nil if table_exists? :meeting_content_versions |
|
||||||
end |
|
||||||
|
|
||||||
def self.down |
|
||||||
remove_column :meeting_contents, :locked |
|
||||||
# Check for existence of the pre-journalized MeetingContentVersions table |
|
||||||
remove_column :meeting_content_versions, :locked if table_exists? :meeting_content_versions |
|
||||||
end |
|
||||||
end |
|
@ -1,57 +0,0 @@ |
|||||||
#-- copyright |
|
||||||
# OpenProject is a project management system. |
|
||||||
# Copyright (C) 2011-2013 the OpenProject Foundation (OPF) |
|
||||||
# |
|
||||||
# This program is free software; you can redistribute it and/or |
|
||||||
# modify it under the terms of the GNU General Public License version 3. |
|
||||||
# |
|
||||||
# This program is distributed in the hope that it will be useful, |
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
# GNU General Public License for more details. |
|
||||||
# |
|
||||||
# You should have received a copy of the GNU General Public License |
|
||||||
# along with this program; if not, write to the Free Software |
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
||||||
# |
|
||||||
# See doc/COPYRIGHT.md for more details. |
|
||||||
#++ |
|
||||||
|
|
||||||
class CreateInitialMeetingJournals < ActiveRecord::Migration |
|
||||||
def self.up |
|
||||||
|
|
||||||
[Meeting].each do |p| |
|
||||||
say_with_time("Building initial journals for #{p.class_name}") do |
|
||||||
|
|
||||||
# avoid touching the journaled object on journal creation |
|
||||||
p.journal_class.class_exec { |
|
||||||
def touch_journaled_after_creation |
|
||||||
end |
|
||||||
} |
|
||||||
|
|
||||||
activity_type = p.activity_provider_options.keys.first |
|
||||||
|
|
||||||
# Create initial journals |
|
||||||
p.find(:all).each do |o| |
|
||||||
# Using rescue and save! here because either the Journal or the |
|
||||||
# touched record could fail. This will catch either error and continue |
|
||||||
begin |
|
||||||
new_journal = o.recreate_initial_journal! |
|
||||||
rescue ActiveRecord::RecordInvalid => ex |
|
||||||
if new_journal.errors.count == 1 && new_journal.errors.first[0] == "version" |
|
||||||
# Skip, only error was from creating the initial journal for a record that already had one. |
|
||||||
else |
|
||||||
puts "ERROR: errors creating the initial journal for #{o.class.to_s}##{o.id.to_s}:" |
|
||||||
puts " #{ex.message}" |
|
||||||
end |
|
||||||
end |
|
||||||
end |
|
||||||
end |
|
||||||
end |
|
||||||
end |
|
||||||
|
|
||||||
def self.down |
|
||||||
# no-op |
|
||||||
# (well, in theory we should delete the MeetingJournals…) |
|
||||||
end |
|
||||||
end |
|
@ -1,73 +0,0 @@ |
|||||||
#-- copyright |
|
||||||
# OpenProject is a project management system. |
|
||||||
# Copyright (C) 2011-2013 the OpenProject Foundation (OPF) |
|
||||||
# |
|
||||||
# This program is free software; you can redistribute it and/or |
|
||||||
# modify it under the terms of the GNU General Public License version 3. |
|
||||||
# |
|
||||||
# This program is distributed in the hope that it will be useful, |
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
# GNU General Public License for more details. |
|
||||||
# |
|
||||||
# You should have received a copy of the GNU General Public License |
|
||||||
# along with this program; if not, write to the Free Software |
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
||||||
# |
|
||||||
# See doc/COPYRIGHT.md for more details. |
|
||||||
#++ |
|
||||||
|
|
||||||
class MergeMeetingContentVersionsWithJournals < ActiveRecord::Migration |
|
||||||
def self.up |
|
||||||
# The table doesn't exist on fresh installations |
|
||||||
if table_exists? :meeting_content_versions |
|
||||||
# This is provided here for migrating up after the MeetingContent::Version class has been removed |
|
||||||
unless MeetingContent.const_defined?("Version") |
|
||||||
MeetingContent.const_set("Version", Class.new(ActiveRecord::Base)) |
|
||||||
end |
|
||||||
|
|
||||||
# load some classes |
|
||||||
MeetingAgenda |
|
||||||
MeetingMinutes |
|
||||||
|
|
||||||
# avoid touching WikiContent on journal creation |
|
||||||
MeetingAgendaJournal.class_exec { |
|
||||||
def touch_journaled_after_creation |
|
||||||
end |
|
||||||
} |
|
||||||
MeetingMinutesJournal.class_exec { |
|
||||||
def touch_journaled_after_creation |
|
||||||
end |
|
||||||
} |
|
||||||
|
|
||||||
cache = Hash.new{|h,k| h[k] = Hash.new{|h,k| h[k] = Hash.new{|h,k| h[k] = {}}}} |
|
||||||
|
|
||||||
MeetingContent::Version.find_by_sql('SELECT * FROM meeting_content_versions ORDER BY version ASC').each do |mcv| |
|
||||||
options = {:journaled_id => mcv.meeting_content_id, :created_at => mcv.created_at, |
|
||||||
:user_id => mcv.author_id, :notes => mcv.comment, :activity_type => 'meetings', |
|
||||||
:version => mcv.version} |
|
||||||
ft = [cache[mcv.meeting_content_id][mcv.versioned_type][mcv.version-1][:locked], mcv.locked] |
|
||||||
options[:changes] = {'locked' => ft} unless mcv.version == 1 || ft.first == ft.last |
|
||||||
journal = case mcv.versioned_type |
|
||||||
when 'MeetingAgenda' |
|
||||||
MeetingAgendaJournal.create! options |
|
||||||
when 'MeetingMinutes' |
|
||||||
MeetingMinutesJournal.create! options |
|
||||||
end |
|
||||||
journal.text = mcv.text unless mcv.text == cache[mcv.meeting_content_id][mcv.versioned_type][mcv.version-1][:text] |
|
||||||
cache[mcv.meeting_content_id][mcv.versioned_type][mcv.version] = {:text => mcv.text, :locked => mcv.locked} |
|
||||||
end |
|
||||||
|
|
||||||
drop_table :meeting_content_versions |
|
||||||
end |
|
||||||
|
|
||||||
change_table :meeting_contents do |t| |
|
||||||
t.rename :version, :lock_version |
|
||||||
t.remove :comment |
|
||||||
end |
|
||||||
end |
|
||||||
|
|
||||||
def self.down |
|
||||||
raise ActiveRecord::IrreversibleMigration, "Can't revert to pre-journalized versioning model" |
|
||||||
end |
|
||||||
end |
|
@ -0,0 +1,63 @@ |
|||||||
|
require Rails.root.join("db","migrate","migration_utils","migration_squasher").to_s |
||||||
|
require 'open_project/plugins/migration_mapping' |
||||||
|
# This migration aggregates the migrations detailed in MIGRATION_FILES |
||||||
|
class AggregatedImpermanentMembershipsMigrations < ActiveRecord::Migration |
||||||
|
|
||||||
|
|
||||||
|
MIGRATION_FILES = <<-MIGRATIONS |
||||||
|
20110106210555_create_meetings.rb |
||||||
|
20110106221214_create_meeting_contents.rb |
||||||
|
20110106221946_create_meeting_content_versions.rb |
||||||
|
20110108230721_create_meeting_participants.rb |
||||||
|
20110224180804_add_lock_to_meeting_content.rb |
||||||
|
20110819162852_create_initial_meeting_journals.rb |
||||||
|
20111605171815_merge_meeting_content_versions_with_journals.rb |
||||||
|
MIGRATIONS |
||||||
|
|
||||||
|
OLD_PLUGIN_NAME = "redmine_meeting" |
||||||
|
|
||||||
|
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 "meeting_contents" do |t| |
||||||
|
t.string "type" |
||||||
|
t.integer "meeting_id" |
||||||
|
t.integer "author_id" |
||||||
|
t.text "text" |
||||||
|
t.integer "lock_version" |
||||||
|
t.datetime "created_at", :null => false |
||||||
|
t.datetime "updated_at", :null => false |
||||||
|
t.boolean "locked", :default => false |
||||||
|
end |
||||||
|
|
||||||
|
create_table "meeting_participants" do |t| |
||||||
|
t.integer "user_id" |
||||||
|
t.integer "meeting_id" |
||||||
|
t.integer "meeting_role_id" |
||||||
|
t.string "email" |
||||||
|
t.string "name" |
||||||
|
t.boolean "invited" |
||||||
|
t.boolean "attended" |
||||||
|
t.datetime "created_at", :null => false |
||||||
|
t.datetime "updated_at", :null => false |
||||||
|
end |
||||||
|
|
||||||
|
create_table "meetings" do |t| |
||||||
|
t.string "title" |
||||||
|
t.integer "author_id" |
||||||
|
t.integer "project_id" |
||||||
|
t.string "location" |
||||||
|
t.datetime "start_time" |
||||||
|
t.float "duration" |
||||||
|
t.datetime "created_at", :null => false |
||||||
|
t.datetime "updated_at", :null => false |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
def down |
||||||
|
drop_table "meeting_contents" |
||||||
|
drop_table "meeting_participants" |
||||||
|
drop_table "meetings" |
||||||
|
end |
||||||
|
end |
Loading…
Reference in new issue