Merge pull request #435 from opf/feature/migrate_legacy_issues
commit
c76e00eccd
@ -0,0 +1,181 @@ |
|||||||
|
#-- copyright |
||||||
|
# OpenProject is a project management system. |
||||||
|
# |
||||||
|
# Copyright (C) 2012-2013 the OpenProject Team |
||||||
|
# |
||||||
|
# This program is free software; you can redistribute it and/or |
||||||
|
# modify it under the terms of the GNU General Public License version 3. |
||||||
|
# |
||||||
|
# See doc/COPYRIGHT.rdoc for more details. |
||||||
|
#++ |
||||||
|
|
||||||
|
class LegacyIssuesToWorkPackages < ActiveRecord::Migration |
||||||
|
|
||||||
|
class ExistingWorkPackagesError < ::StandardError |
||||||
|
end |
||||||
|
|
||||||
|
class ExistingLegacyIssuesError < ::StandardError |
||||||
|
end |
||||||
|
|
||||||
|
def up |
||||||
|
raise_on_existing_work_package_entries |
||||||
|
|
||||||
|
copy_legacy_issues_to_work_packages |
||||||
|
end |
||||||
|
|
||||||
|
def down |
||||||
|
raise_on_existing_legacy_issue_entries |
||||||
|
|
||||||
|
copy_work_packages_to_legacy_issues |
||||||
|
end |
||||||
|
|
||||||
|
private |
||||||
|
|
||||||
|
def raise_on_existing_work_package_entries |
||||||
|
existing_work_packages = select_all <<-SQL |
||||||
|
SELECT * |
||||||
|
FROM work_packages |
||||||
|
SQL |
||||||
|
|
||||||
|
if existing_work_packages.size > 0 |
||||||
|
raise ExistingWorkPackagesError, <<-MESSAGE.split("\n").map(&:strip!).join(" ") + "\n" |
||||||
|
There are already entries in the work_packages table. |
||||||
|
This migration assumes that there are none. |
||||||
|
MESSAGE |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
def copy_legacy_issues_to_work_packages |
||||||
|
execute <<-SQL |
||||||
|
INSERT INTO work_packages |
||||||
|
( |
||||||
|
id, |
||||||
|
type_id, |
||||||
|
project_id, |
||||||
|
subject, |
||||||
|
description, |
||||||
|
due_date, |
||||||
|
category_id, |
||||||
|
status_id, |
||||||
|
assigned_to_id, |
||||||
|
priority_id, |
||||||
|
fixed_version_id, |
||||||
|
author_id, |
||||||
|
lock_version, |
||||||
|
done_ratio, |
||||||
|
estimated_hours, |
||||||
|
created_at, |
||||||
|
updated_at, |
||||||
|
start_date, |
||||||
|
planning_element_status_comment, |
||||||
|
deleted_at, |
||||||
|
parent_id, |
||||||
|
responsible_id, |
||||||
|
planning_element_status_id, |
||||||
|
sti_type, |
||||||
|
root_id, |
||||||
|
lft, |
||||||
|
rgt |
||||||
|
) |
||||||
|
SELECT |
||||||
|
id, |
||||||
|
tracker_id, |
||||||
|
project_id, |
||||||
|
subject, |
||||||
|
description, |
||||||
|
due_date, |
||||||
|
category_id, |
||||||
|
status_id, |
||||||
|
assigned_to_id, |
||||||
|
priority_id, |
||||||
|
fixed_version_id, |
||||||
|
author_id, |
||||||
|
lock_version, |
||||||
|
done_ratio, |
||||||
|
estimated_hours, |
||||||
|
created_on, |
||||||
|
updated_on, |
||||||
|
start_date, |
||||||
|
'', |
||||||
|
NULL, |
||||||
|
parent_id, |
||||||
|
NULL, |
||||||
|
NULL, |
||||||
|
NULL, |
||||||
|
root_id, |
||||||
|
lft, |
||||||
|
rgt |
||||||
|
FROM legacy_issues |
||||||
|
SQL |
||||||
|
|
||||||
|
end |
||||||
|
|
||||||
|
def raise_on_existing_legacy_issue_entries |
||||||
|
existing_legacy_issues = select_all <<-SQL |
||||||
|
SELECT * |
||||||
|
FROM legacy_issues |
||||||
|
SQL |
||||||
|
|
||||||
|
if existing_legacy_issues.size > 0 |
||||||
|
raise ExistingLegacyIssuesError, <<-MESSAGE.split("\n").map(&:strip!).join(" ") + "\n" |
||||||
|
There are already entries in the legacy_issues table. |
||||||
|
This migration assumes that there are none. |
||||||
|
MESSAGE |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
def copy_work_packages_to_legacy_issues |
||||||
|
execute <<-SQL |
||||||
|
INSERT INTO legacy_issues |
||||||
|
( |
||||||
|
id, |
||||||
|
tracker_id, |
||||||
|
project_id, |
||||||
|
subject, |
||||||
|
description, |
||||||
|
due_date, |
||||||
|
category_id, |
||||||
|
status_id, |
||||||
|
assigned_to_id, |
||||||
|
priority_id, |
||||||
|
fixed_version_id, |
||||||
|
author_id, |
||||||
|
lock_version, |
||||||
|
done_ratio, |
||||||
|
estimated_hours, |
||||||
|
created_on, |
||||||
|
updated_on, |
||||||
|
start_date, |
||||||
|
parent_id, |
||||||
|
root_id, |
||||||
|
lft, |
||||||
|
rgt |
||||||
|
) |
||||||
|
SELECT |
||||||
|
id, |
||||||
|
type_id, |
||||||
|
project_id, |
||||||
|
subject, |
||||||
|
description, |
||||||
|
due_date, |
||||||
|
category_id, |
||||||
|
status_id, |
||||||
|
assigned_to_id, |
||||||
|
priority_id, |
||||||
|
fixed_version_id, |
||||||
|
author_id, |
||||||
|
lock_version, |
||||||
|
done_ratio, |
||||||
|
estimated_hours, |
||||||
|
created_at, |
||||||
|
updated_at, |
||||||
|
start_date, |
||||||
|
parent_id, |
||||||
|
root_id, |
||||||
|
lft, |
||||||
|
rgt |
||||||
|
FROM work_packages |
||||||
|
SQL |
||||||
|
|
||||||
|
end |
||||||
|
end |
Loading…
Reference in new issue