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/000_aggregated_migrations.rb

896 lines
39 KiB

#-- copyright
# OpenProject is a project management system.
# Copyright (C) 2012-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.
#
# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
# Copyright (C) 2006-2013 Jean-Philippe Lang
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# 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.rdoc for more details.
#++
# This migration aggregates the migrations detailed in the @@migrations
# heredoc
class AggregatedMigrations < ActiveRecord::Migration
class IncompleteMigrationsError < ::StandardError
end
@@migrations = <<-MIGRATIONS
001_setup.rb
002_issue_move.rb
003_issue_add_note.rb
004_export_pdf.rb
005_issue_start_date.rb
006_calendar_and_activity.rb
007_create_journals.rb
008_create_user_preferences.rb
009_add_hide_mail_pref.rb
010_create_comments.rb
011_add_news_comments_count.rb
012_add_comments_permissions.rb
013_create_queries.rb
014_add_queries_permissions.rb
015_create_repositories.rb
016_add_repositories_permissions.rb
017_create_settings.rb
018_set_doc_and_files_notifications.rb
019_add_issue_status_position.rb
020_add_role_position.rb
021_add_tracker_position.rb
022_serialize_possibles_values.rb
023_add_tracker_is_in_roadmap.rb
024_add_roadmap_permission.rb
025_add_search_permission.rb
026_add_repository_login_and_password.rb
027_create_wikis.rb
028_create_wiki_pages.rb
029_create_wiki_contents.rb
030_add_projects_feeds_permissions.rb
031_add_repository_root_url.rb
032_create_time_entries.rb
033_add_timelog_permissions.rb
034_create_changesets.rb
035_create_changes.rb
036_add_changeset_commit_date.rb
037_add_project_identifier.rb
038_add_custom_field_is_filter.rb
039_create_watchers.rb
040_create_changesets_issues.rb
041_rename_comment_to_comments.rb
042_create_issue_relations.rb
043_add_relations_permissions.rb
044_set_language_length_to_five.rb
045_create_boards.rb
046_create_messages.rb
047_add_boards_permissions.rb
048_allow_null_version_effective_date.rb
049_add_wiki_destroy_page_permission.rb
050_add_wiki_attachments_permissions.rb
051_add_project_status.rb
052_add_changes_revision.rb
053_add_changes_branch.rb
054_add_changesets_scmid.rb
055_add_repositories_type.rb
056_add_repositories_changes_permission.rb
057_add_versions_wiki_page_title.rb
058_add_issue_categories_assigned_to_id.rb
059_add_roles_assignable.rb
060_change_changesets_committer_limit.rb
061_add_roles_builtin.rb
062_insert_builtin_roles.rb
063_add_roles_permissions.rb
064_drop_permissions.rb
065_add_settings_updated_on.rb
066_add_custom_value_customized_index.rb
067_create_wiki_redirects.rb
068_create_enabled_modules.rb
069_add_issues_estimated_hours.rb
070_change_attachments_content_type_limit.rb
071_add_queries_column_names.rb
072_add_enumerations_position.rb
073_add_enumerations_is_default.rb
074_add_auth_sources_tls.rb
075_add_members_mail_notification.rb
076_allow_null_position.rb
077_remove_issue_statuses_html_color.rb
078_add_custom_fields_position.rb
079_add_user_preferences_time_zone.rb
080_add_users_type.rb
081_create_projects_trackers.rb
082_add_messages_locked.rb
083_add_messages_sticky.rb
084_change_auth_sources_account_limit.rb
085_add_role_tracker_old_status_index_to_workflows.rb
086_add_custom_fields_searchable.rb
087_change_projects_description_to_text.rb
088_add_custom_fields_default_value.rb
089_add_attachments_description.rb
090_change_versions_name_limit.rb
091_change_changesets_revision_to_string.rb
092_change_changes_from_revision_to_string.rb
093_add_wiki_pages_protected.rb
094_change_projects_homepage_limit.rb
095_add_wiki_pages_parent_id.rb
096_add_commit_access_permission.rb
097_add_view_wiki_edits_permission.rb
098_set_topic_authors_as_watchers.rb
099_add_delete_wiki_pages_attachments_permission.rb
100_add_changesets_user_id.rb
101_populate_changesets_user_id.rb
102_add_custom_fields_editable.rb
103_set_custom_fields_editable.rb
104_add_projects_lft_and_rgt.rb
105_build_projects_tree.rb
106_remove_projects_projects_count.rb
107_add_open_id_authentication_tables.rb
108_add_identity_url_to_users.rb
20090214190337_add_watchers_user_id_type_index.rb
20090312172426_add_queries_sort_criteria.rb
20090312194159_add_projects_trackers_unique_index.rb
20090318181151_extend_settings_name.rb
20090323224724_add_type_to_enumerations.rb
20090401221305_update_enumerations_to_sti.rb
20090401231134_add_active_field_to_enumerations.rb
20090403001910_add_project_to_enumerations.rb
20090406161854_add_parent_id_to_enumerations.rb
20090425161243_add_queries_group_by.rb
20090503121501_create_member_roles.rb
20090503121505_populate_member_roles.rb
20090503121510_drop_members_role_id.rb
20090614091200_fix_messages_sticky_null.rb
20090704172350_populate_users_type.rb
20090704172355_create_groups_users.rb
20090704172358_add_member_roles_inherited_from.rb
20091010093521_fix_users_custom_values.rb
20091017212227_add_missing_indexes_to_workflows.rb
20091017212457_add_missing_indexes_to_custom_fields_projects.rb
20091017212644_add_missing_indexes_to_messages.rb
20091017212938_add_missing_indexes_to_repositories.rb
20091017213027_add_missing_indexes_to_comments.rb
20091017213113_add_missing_indexes_to_enumerations.rb
20091017213151_add_missing_indexes_to_wiki_pages.rb
20091017213228_add_missing_indexes_to_watchers.rb
20091017213257_add_missing_indexes_to_auth_sources.rb
20091017213332_add_missing_indexes_to_documents.rb
20091017213444_add_missing_indexes_to_tokens.rb
20091017213536_add_missing_indexes_to_changesets.rb
20091017213642_add_missing_indexes_to_issue_categories.rb
20091017213716_add_missing_indexes_to_member_roles.rb
20091017213757_add_missing_indexes_to_boards.rb
20091017213835_add_missing_indexes_to_user_preferences.rb
20091017213910_add_missing_indexes_to_issues.rb
20091017214015_add_missing_indexes_to_members.rb
20091017214107_add_missing_indexes_to_custom_fields.rb
20091017214136_add_missing_indexes_to_queries.rb
20091017214236_add_missing_indexes_to_time_entries.rb
20091017214308_add_missing_indexes_to_news.rb
20091017214336_add_missing_indexes_to_users.rb
20091017214406_add_missing_indexes_to_attachments.rb
20091017214440_add_missing_indexes_to_wiki_contents.rb
20091017214519_add_missing_indexes_to_custom_values.rb
20091017214611_add_missing_indexes_to_journals.rb
20091017214644_add_missing_indexes_to_issue_relations.rb
20091017214720_add_missing_indexes_to_wiki_redirects.rb
20091017214750_add_missing_indexes_to_custom_fields_trackers.rb
20091025163651_add_activity_indexes.rb
20091108092559_add_versions_status.rb
20091114105931_add_view_issues_permission.rb
20091123212029_add_default_done_ratio_to_issue_status.rb
20091205124427_add_versions_sharing.rb
20091220183509_add_lft_and_rgt_indexes_to_projects.rb
20091220183727_add_index_to_settings_name.rb
20091220184736_add_indexes_to_issue_status.rb
20091225164732_remove_enumerations_opt.rb
20091227112908_change_wiki_contents_text_limit.rb
20100129193402_change_users_mail_notification_to_string.rb
20100129193813_update_mail_notification_values.rb
20100221100219_add_index_on_changesets_scmid.rb
20100313132032_add_issues_nested_sets_columns.rb
20100313171051_add_index_on_issues_nested_set.rb
20100705164950_change_changes_path_length_limit.rb
20100714111651_prepare_journals_for_acts_as_journalized.rb
20100714111652_update_journals_for_acts_as_journalized.rb
20100714111653_build_initial_journals_for_acts_as_journalized.rb
20100714111654_add_changes_from_journal_details_for_acts_as_journalized.rb
20100804112053_merge_wiki_versions_with_journals.rb
20100819172912_enable_calendar_and_gantt_modules_where_appropriate.rb
20101104182107_add_unique_index_on_members.rb
20101107130441_add_custom_fields_visible.rb
20101114115114_change_projects_name_limit.rb
20101114115359_change_projects_identifier_limit.rb
20110220160626_add_workflows_assignee_and_author.rb
20110223180944_add_users_salt.rb
20110223180953_salt_user_passwords.rb
20110224000000_add_repositories_path_encoding.rb
20110226120112_change_repositories_password_limit.rb
20110226120132_change_auth_sources_account_password_limit.rb
20110227125750_change_journal_details_values_to_text.rb
20110228000000_add_repositories_log_encoding.rb
20110228000100_copy_repositories_log_encoding.rb
20110314014400_add_start_date_to_versions.rb
20110401192910_add_index_to_users_type.rb
20110519194936_remove_comments_from_wiki_content.rb
20110729125454_remove_double_initial_wiki_content_journals.rb
MIGRATIONS
def up
intersection = aggregated_versions & all_versions
if intersection == []
# No migrations that this migration aggregates have already been
# applied. In this case, run the aggregated migration.
run_aggregated_migrations
elsif intersection == aggregated_versions
# All migrations that this migration aggregates have already
# been applied. In this case, remove the information about those
# migrations from the schema_migrations table and we're done.
execute <<-SQL + (intersection.map { |version| <<-CONDITIONS }).join(" OR ")
DELETE FROM
#{quoted_schema_migrations_table_name}
WHERE
SQL
#{version_column_for_comparison} = #{quote_value(version.to_s)}
CONDITIONS
else
missing = aggregated_versions - intersection
# Only a part of the migrations that this migration aggregates
# have already been applied. In this case, fail miserably.
raise IncompleteMigrationsError, <<-MESSAGE.split("\n").map(&:strip!).join(" ") + "\n"
It appears you are migrating from an incompatible version of
ChiliProject. Your database has only some migrations from ChiliProject <
v2.4.0. Please update your database to the schema of ChiliProject
v2.4.0 and run the OpenProject migrations again. The following
migrations are missing: #{missing}
MESSAGE
end
end
def down
# TODO.
raise ActiveRecord::IrreversibleMigration, "Kind of still a TODO."
end
private
def run_aggregated_migrations
create_table "attachments", :force => true do |t|
t.integer "container_id", :default => 0, :null => false
t.string "container_type", :limit => 30, :default => "", :null => false
t.string "filename", :default => "", :null => false
t.string "disk_filename", :default => "", :null => false
t.integer "filesize", :default => 0, :null => false
t.string "content_type", :default => ""
t.string "digest", :limit => 40, :default => "", :null => false
t.integer "downloads", :default => 0, :null => false
t.integer "author_id", :default => 0, :null => false
t.datetime "created_on"
t.string "description"
end
add_index "attachments", ["author_id"], :name => "index_attachments_on_author_id"
add_index "attachments", ["container_id", "container_type"], :name => "index_attachments_on_container_id_and_container_type"
add_index "attachments", ["created_on"], :name => "index_attachments_on_created_on"
create_table "auth_sources", :force => true do |t|
t.string "type", :limit => 30, :default => "", :null => false
t.string "name", :limit => 60, :default => "", :null => false
t.string "host", :limit => 60
t.integer "port"
t.string "account"
t.string "account_password", :default => ""
t.string "base_dn"
t.string "attr_login", :limit => 30
t.string "attr_firstname", :limit => 30
t.string "attr_lastname", :limit => 30
t.string "attr_mail", :limit => 30
t.boolean "onthefly_register", :default => false, :null => false
t.boolean "tls", :default => false, :null => false
end
add_index "auth_sources", ["id", "type"], :name => "index_auth_sources_on_id_and_type"
create_table "boards", :force => true do |t|
t.integer "project_id", :null => false
t.string "name", :default => "", :null => false
t.string "description"
t.integer "position", :default => 1
t.integer "topics_count", :default => 0, :null => false
t.integer "messages_count", :default => 0, :null => false
t.integer "last_message_id"
end
add_index "boards", ["last_message_id"], :name => "index_boards_on_last_message_id"
add_index "boards", ["project_id"], :name => "boards_project_id"
create_table "changes", :force => true do |t|
t.integer "changeset_id", :null => false
t.string "action", :limit => 1, :default => "", :null => false
t.text "path", :null => false
t.text "from_path"
t.string "from_revision"
t.string "revision"
t.string "branch"
end
add_index "changes", ["changeset_id"], :name => "changesets_changeset_id"
create_table "changesets", :force => true do |t|
t.integer "repository_id", :null => false
t.string "revision", :null => false
t.string "committer"
t.datetime "committed_on", :null => false
t.text "comments"
t.date "commit_date"
t.string "scmid"
t.integer "user_id"
end
add_index "changesets", ["committed_on"], :name => "index_changesets_on_committed_on"
add_index "changesets", ["repository_id", "revision"], :name => "changesets_repos_rev", :unique => true
add_index "changesets", ["repository_id", "scmid"], :name => "changesets_repos_scmid"
add_index "changesets", ["repository_id"], :name => "index_changesets_on_repository_id"
add_index "changesets", ["user_id"], :name => "index_changesets_on_user_id"
create_table "changesets_issues", :id => false, :force => true do |t|
t.integer "changeset_id", :null => false
t.integer "issue_id", :null => false
end
add_index "changesets_issues", ["changeset_id", "issue_id"], :name => "changesets_issues_ids", :unique => true
create_table "comments", :force => true do |t|
t.string "commented_type", :limit => 30, :default => "", :null => false
t.integer "commented_id", :default => 0, :null => false
t.integer "author_id", :default => 0, :null => false
t.text "comments"
t.datetime "created_on", :null => false
t.datetime "updated_on", :null => false
end
add_index "comments", ["author_id"], :name => "index_comments_on_author_id"
add_index "comments", ["commented_id", "commented_type"], :name => "index_comments_on_commented_id_and_commented_type"
create_table "custom_fields", :force => true do |t|
t.string "type", :limit => 30, :default => "", :null => false
t.string "name", :limit => 30, :default => "", :null => false
t.string "field_format", :limit => 30, :default => "", :null => false
t.text "possible_values"
t.string "regexp", :default => ""
t.integer "min_length", :default => 0, :null => false
t.integer "max_length", :default => 0, :null => false
t.boolean "is_required", :default => false, :null => false
t.boolean "is_for_all", :default => false, :null => false
t.boolean "is_filter", :default => false, :null => false
t.integer "position", :default => 1
t.boolean "searchable", :default => false
t.text "default_value"
t.boolean "editable", :default => true
t.boolean "visible", :default => true, :null => false
end
add_index "custom_fields", ["id", "type"], :name => "index_custom_fields_on_id_and_type"
create_table "custom_fields_projects", :id => false, :force => true do |t|
t.integer "custom_field_id", :default => 0, :null => false
t.integer "project_id", :default => 0, :null => false
end
add_index "custom_fields_projects", ["custom_field_id", "project_id"], :name => "index_custom_fields_projects_on_custom_field_id_and_project_id"
create_table "custom_fields_trackers", :id => false, :force => true do |t|
t.integer "custom_field_id", :default => 0, :null => false
t.integer "tracker_id", :default => 0, :null => false
end
add_index "custom_fields_trackers", ["custom_field_id", "tracker_id"], :name => "index_custom_fields_trackers_on_custom_field_id_and_tracker_id"
create_table "custom_values", :force => true do |t|
t.string "customized_type", :limit => 30, :default => "", :null => false
t.integer "customized_id", :default => 0, :null => false
t.integer "custom_field_id", :default => 0, :null => false
t.text "value"
end
add_index "custom_values", ["custom_field_id"], :name => "index_custom_values_on_custom_field_id"
add_index "custom_values", ["customized_type", "customized_id"], :name => "custom_values_customized"
create_table "documents", :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.integer "category_id", :default => 0, :null => false
t.string "title", :limit => 60, :default => "", :null => false
t.text "description"
t.datetime "created_on"
end
add_index "documents", ["category_id"], :name => "index_documents_on_category_id"
add_index "documents", ["created_on"], :name => "index_documents_on_created_on"
add_index "documents", ["project_id"], :name => "documents_project_id"
create_table "enabled_modules", :force => true do |t|
t.integer "project_id"
t.string "name", :null => false
end
add_index "enabled_modules", ["project_id"], :name => "enabled_modules_project_id"
create_table "enumerations", :force => true do |t|
t.string "name", :limit => 30, :default => "", :null => false
t.integer "position", :default => 1
t.boolean "is_default", :default => false, :null => false
t.string "type"
t.boolean "active", :default => true, :null => false
t.integer "project_id"
t.integer "parent_id"
end
add_index "enumerations", ["id", "type"], :name => "index_enumerations_on_id_and_type"
add_index "enumerations", ["project_id"], :name => "index_enumerations_on_project_id"
create_table "groups_users", :id => false, :force => true do |t|
t.integer "group_id", :null => false
t.integer "user_id", :null => false
end
add_index "groups_users", ["group_id", "user_id"], :name => "groups_users_ids", :unique => true
create_table "issue_categories", :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.string "name", :limit => 30, :default => "", :null => false
t.integer "assigned_to_id"
end
add_index "issue_categories", ["assigned_to_id"], :name => "index_issue_categories_on_assigned_to_id"
add_index "issue_categories", ["project_id"], :name => "issue_categories_project_id"
create_table "issue_relations", :force => true do |t|
t.integer "issue_from_id", :null => false
t.integer "issue_to_id", :null => false
t.string "relation_type", :default => "", :null => false
t.integer "delay"
end
add_index "issue_relations", ["issue_from_id"], :name => "index_issue_relations_on_issue_from_id"
add_index "issue_relations", ["issue_to_id"], :name => "index_issue_relations_on_issue_to_id"
create_table "issue_statuses", :force => true do |t|
t.string "name", :limit => 30, :default => "", :null => false
t.boolean "is_closed", :default => false, :null => false
t.boolean "is_default", :default => false, :null => false
t.integer "position", :default => 1
t.integer "default_done_ratio"
end
add_index "issue_statuses", ["is_closed"], :name => "index_issue_statuses_on_is_closed"
add_index "issue_statuses", ["is_default"], :name => "index_issue_statuses_on_is_default"
add_index "issue_statuses", ["position"], :name => "index_issue_statuses_on_position"
create_table "issues", :force => true do |t|
t.integer "tracker_id", :default => 0, :null => false
t.integer "project_id", :default => 0, :null => false
t.string "subject", :default => "", :null => false
t.text "description"
t.date "due_date"
t.integer "category_id"
t.integer "status_id", :default => 0, :null => false
t.integer "assigned_to_id"
t.integer "priority_id", :default => 0, :null => false
t.integer "fixed_version_id"
t.integer "author_id", :default => 0, :null => false
t.integer "lock_version", :default => 0, :null => false
t.datetime "created_on"
t.datetime "updated_on"
t.date "start_date"
t.integer "done_ratio", :default => 0, :null => false
t.float "estimated_hours"
t.integer "parent_id"
t.integer "root_id"
t.integer "lft"
t.integer "rgt"
end
add_index "issues", ["assigned_to_id"], :name => "index_issues_on_assigned_to_id"
add_index "issues", ["author_id"], :name => "index_issues_on_author_id"
add_index "issues", ["category_id"], :name => "index_issues_on_category_id"
add_index "issues", ["created_on"], :name => "index_issues_on_created_on"
add_index "issues", ["fixed_version_id"], :name => "index_issues_on_fixed_version_id"
add_index "issues", ["priority_id"], :name => "index_issues_on_priority_id"
add_index "issues", ["project_id"], :name => "issues_project_id"
add_index "issues", ["root_id", "lft", "rgt"], :name => "index_issues_on_root_id_and_lft_and_rgt"
add_index "issues", ["status_id"], :name => "index_issues_on_status_id"
add_index "issues", ["tracker_id"], :name => "index_issues_on_tracker_id"
create_table "journal_details", :force => true do |t|
t.integer "journal_id", :default => 0, :null => false
t.string "property", :limit => 30, :default => "", :null => false
t.string "prop_key", :limit => 30, :default => "", :null => false
t.text "old_value"
t.text "value"
end
add_index "journal_details", ["journal_id"], :name => "journal_details_journal_id"
create_table "journals", :force => true do |t|
t.integer "journaled_id", :default => 0, :null => false
t.integer "user_id", :default => 0, :null => false
t.text "notes"
t.datetime "created_at", :null => false
t.integer "version", :default => 0, :null => false
t.string "activity_type"
t.text "changes"
t.string "type"
end
add_index "journals", ["activity_type"], :name => "index_journals_on_activity_type"
add_index "journals", ["created_at"], :name => "index_journals_on_created_at"
add_index "journals", ["created_at"], :name => "index_journals_on_created_on"
add_index "journals", ["journaled_id"], :name => "index_journals_on_journaled_id"
add_index "journals", ["journaled_id"], :name => "index_journals_on_journalized_id"
add_index "journals", ["type"], :name => "index_journals_on_type"
add_index "journals", ["user_id"], :name => "index_journals_on_user_id"
create_table "member_roles", :force => true do |t|
t.integer "member_id", :null => false
t.integer "role_id", :null => false
t.integer "inherited_from"
end
add_index "member_roles", ["member_id"], :name => "index_member_roles_on_member_id"
add_index "member_roles", ["role_id"], :name => "index_member_roles_on_role_id"
create_table "members", :force => true do |t|
t.integer "user_id", :default => 0, :null => false
t.integer "project_id", :default => 0, :null => false
t.datetime "created_on"
t.boolean "mail_notification", :default => false, :null => false
end
add_index "members", ["project_id"], :name => "index_members_on_project_id"
add_index "members", ["user_id", "project_id"], :name => "index_members_on_user_id_and_project_id", :unique => true
add_index "members", ["user_id"], :name => "index_members_on_user_id"
create_table "messages", :force => true do |t|
t.integer "board_id", :null => false
t.integer "parent_id"
t.string "subject", :default => "", :null => false
t.text "content"
t.integer "author_id"
t.integer "replies_count", :default => 0, :null => false
t.integer "last_reply_id"
t.datetime "created_on", :null => false
t.datetime "updated_on", :null => false
t.boolean "locked", :default => false
t.integer "sticky", :default => 0
end
add_index "messages", ["author_id"], :name => "index_messages_on_author_id"
add_index "messages", ["board_id"], :name => "messages_board_id"
add_index "messages", ["created_on"], :name => "index_messages_on_created_on"
add_index "messages", ["last_reply_id"], :name => "index_messages_on_last_reply_id"
add_index "messages", ["parent_id"], :name => "messages_parent_id"
create_table "news", :force => true do |t|
t.integer "project_id"
t.string "title", :limit => 60, :default => "", :null => false
t.string "summary", :default => ""
t.text "description"
t.integer "author_id", :default => 0, :null => false
t.datetime "created_on"
t.integer "comments_count", :default => 0, :null => false
end
add_index "news", ["author_id"], :name => "index_news_on_author_id"
add_index "news", ["created_on"], :name => "index_news_on_created_on"
add_index "news", ["project_id"], :name => "news_project_id"
create_table "open_id_authentication_associations", :force => true do |t|
t.integer "issued"
t.integer "lifetime"
t.string "handle"
t.string "assoc_type"
t.binary "server_url"
t.binary "secret"
end
create_table "open_id_authentication_nonces", :force => true do |t|
t.integer "timestamp", :null => false
t.string "server_url"
t.string "salt", :null => false
end
create_table "projects", :force => true do |t|
t.string "name", :default => "", :null => false
t.text "description"
t.string "homepage", :default => ""
t.boolean "is_public", :default => true, :null => false
t.integer "parent_id"
t.datetime "created_on"
t.datetime "updated_on"
t.string "identifier"
t.integer "status", :default => 1, :null => false
t.integer "lft"
t.integer "rgt"
end
add_index "projects", ["lft"], :name => "index_projects_on_lft"
add_index "projects", ["rgt"], :name => "index_projects_on_rgt"
create_table "projects_trackers", :id => false, :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.integer "tracker_id", :default => 0, :null => false
end
add_index "projects_trackers", ["project_id", "tracker_id"], :name => "projects_trackers_unique", :unique => true
add_index "projects_trackers", ["project_id"], :name => "projects_trackers_project_id"
create_table "queries", :force => true do |t|
t.integer "project_id"
t.string "name", :default => "", :null => false
t.text "filters"
t.integer "user_id", :default => 0, :null => false
t.boolean "is_public", :default => false, :null => false
t.text "column_names"
t.text "sort_criteria"
t.string "group_by"
end
add_index "queries", ["project_id"], :name => "index_queries_on_project_id"
add_index "queries", ["user_id"], :name => "index_queries_on_user_id"
create_table "repositories", :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.string "url", :default => "", :null => false
t.string "login", :limit => 60, :default => ""
t.string "password", :default => ""
t.string "root_url", :default => ""
t.string "type"
t.string "path_encoding", :limit => 64
t.string "log_encoding", :limit => 64
end
add_index "repositories", ["project_id"], :name => "index_repositories_on_project_id"
create_table "roles", :force => true do |t|
t.string "name", :limit => 30, :default => "", :null => false
t.integer "position", :default => 1
t.boolean "assignable", :default => true
t.integer "builtin", :default => 0, :null => false
t.text "permissions"
end
create_table "settings", :force => true do |t|
t.string "name", :default => "", :null => false
t.text "value"
t.datetime "updated_on"
end
add_index "settings", ["name"], :name => "index_settings_on_name"
create_table "time_entries", :force => true do |t|
t.integer "project_id", :null => false
t.integer "user_id", :null => false
t.integer "issue_id"
t.float "hours", :null => false
t.string "comments"
t.integer "activity_id", :null => false
t.date "spent_on", :null => false
t.integer "tyear", :null => false
t.integer "tmonth", :null => false
t.integer "tweek", :null => false
t.datetime "created_on", :null => false
t.datetime "updated_on", :null => false
end
add_index "time_entries", ["activity_id"], :name => "index_time_entries_on_activity_id"
add_index "time_entries", ["created_on"], :name => "index_time_entries_on_created_on"
add_index "time_entries", ["issue_id"], :name => "time_entries_issue_id"
add_index "time_entries", ["project_id"], :name => "time_entries_project_id"
add_index "time_entries", ["user_id"], :name => "index_time_entries_on_user_id"
create_table "tokens", :force => true do |t|
t.integer "user_id", :default => 0, :null => false
t.string "action", :limit => 30, :default => "", :null => false
t.string "value", :limit => 40, :default => "", :null => false
t.datetime "created_on", :null => false
end
add_index "tokens", ["user_id"], :name => "index_tokens_on_user_id"
create_table "trackers", :force => true do |t|
t.string "name", :limit => 30, :default => "", :null => false
t.boolean "is_in_chlog", :default => false, :null => false
t.integer "position", :default => 1
t.boolean "is_in_roadmap", :default => true, :null => false
end
create_table "user_preferences", :force => true do |t|
t.integer "user_id", :default => 0, :null => false
t.text "others"
t.boolean "hide_mail", :default => false
t.string "time_zone"
end
add_index "user_preferences", ["user_id"], :name => "index_user_preferences_on_user_id"
create_table "users", :force => true do |t|
t.string "login", :limit => 30, :default => "", :null => false
t.string "hashed_password", :limit => 40, :default => "", :null => false
t.string "firstname", :limit => 30, :default => "", :null => false
t.string "lastname", :limit => 30, :default => "", :null => false
t.string "mail", :limit => 60, :default => "", :null => false
t.boolean "admin", :default => false, :null => false
t.integer "status", :default => 1, :null => false
t.datetime "last_login_on"
t.string "language", :limit => 5, :default => ""
t.integer "auth_source_id"
t.datetime "created_on"
t.datetime "updated_on"
t.string "type"
t.string "identity_url"
t.string "mail_notification", :default => "", :null => false
t.string "salt", :limit => 64
end
add_index "users", ["auth_source_id"], :name => "index_users_on_auth_source_id"
add_index "users", ["id", "type"], :name => "index_users_on_id_and_type"
add_index "users", ["type"], :name => "index_users_on_type"
create_table "versions", :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.string "name", :default => "", :null => false
t.string "description", :default => ""
t.date "effective_date"
t.datetime "created_on"
t.datetime "updated_on"
t.string "wiki_page_title"
t.string "status", :default => "open"
t.string "sharing", :default => "none", :null => false
t.date "start_date"
end
add_index "versions", ["project_id"], :name => "versions_project_id"
add_index "versions", ["sharing"], :name => "index_versions_on_sharing"
create_table "watchers", :force => true do |t|
t.string "watchable_type", :default => "", :null => false
t.integer "watchable_id", :default => 0, :null => false
t.integer "user_id"
end
add_index "watchers", ["user_id", "watchable_type"], :name => "watchers_user_id_type"
add_index "watchers", ["user_id"], :name => "index_watchers_on_user_id"
add_index "watchers", ["watchable_id", "watchable_type"], :name => "index_watchers_on_watchable_id_and_watchable_type"
create_table "wiki_content_versions", :force => true do |t|
t.integer "wiki_content_id", :null => false
t.integer "page_id", :null => false
t.integer "author_id"
t.binary "data", :limit => 16.megabytes
t.string "compression", :limit => 6, :default => ""
t.string "comments", :default => ""
t.datetime "updated_on", :null => false
t.integer "version", :null => false
end
add_index "wiki_content_versions", ["updated_on"], :name => "index_wiki_content_versions_on_updated_on"
add_index "wiki_content_versions", ["wiki_content_id"], :name => "wiki_content_versions_wcid"
create_table "wiki_contents", :force => true do |t|
t.integer "page_id", :null => false
t.integer "author_id"
t.text "text", :limit => 16.megabytes
t.datetime "updated_on", :null => false
t.integer "lock_version", :null => false
end
add_index "wiki_contents", ["author_id"], :name => "index_wiki_contents_on_author_id"
add_index "wiki_contents", ["page_id"], :name => "wiki_contents_page_id"
create_table "wiki_pages", :force => true do |t|
t.integer "wiki_id", :null => false
t.string "title", :null => false
t.datetime "created_on", :null => false
t.boolean "protected", :default => false, :null => false
t.integer "parent_id"
end
add_index "wiki_pages", ["parent_id"], :name => "index_wiki_pages_on_parent_id"
add_index "wiki_pages", ["wiki_id", "title"], :name => "wiki_pages_wiki_id_title"
add_index "wiki_pages", ["wiki_id"], :name => "index_wiki_pages_on_wiki_id"
create_table "wiki_redirects", :force => true do |t|
t.integer "wiki_id", :null => false
t.string "title"
t.string "redirects_to"
t.datetime "created_on", :null => false
end
add_index "wiki_redirects", ["wiki_id", "title"], :name => "wiki_redirects_wiki_id_title"
add_index "wiki_redirects", ["wiki_id"], :name => "index_wiki_redirects_on_wiki_id"
create_table "wikis", :force => true do |t|
t.integer "project_id", :null => false
t.string "start_page", :null => false
t.integer "status", :default => 1, :null => false
end
add_index "wikis", ["project_id"], :name => "wikis_project_id"
create_table "workflows", :force => true do |t|
t.integer "tracker_id", :default => 0, :null => false
t.integer "old_status_id", :default => 0, :null => false
t.integer "new_status_id", :default => 0, :null => false
t.integer "role_id", :default => 0, :null => false
t.boolean "assignee", :default => false, :null => false
t.boolean "author", :default => false, :null => false
end
add_index "workflows", ["new_status_id"], :name => "index_workflows_on_new_status_id"
add_index "workflows", ["old_status_id"], :name => "index_workflows_on_old_status_id"
add_index "workflows", ["role_id", "tracker_id", "old_status_id"], :name => "wkfs_role_tracker_old_status"
add_index "workflows", ["role_id"], :name => "index_workflows_on_role_id"
true
end
def aggregated_versions
@@aggregated_versions ||= @@migrations.split.map do |m|
m.gsub(/_.*\z/, '').to_i
end
end
def all_versions
@@all_versions ||= ActiveRecord::Migrator.get_all_versions
end
def schema_migrations_table_name
ActiveRecord::Migrator.schema_migrations_table_name
end
def quoted_schema_migrations_table_name
ActiveRecord::Base.connection.quote_table_name(schema_migrations_table_name)
end
def quoted_version_column_name
ActiveRecord::Base.connection.quote_table_name("version")
end
def version_column_for_comparison
"#{quoted_schema_migrations_table_name}.#{quoted_version_column_name}"
end
def quote_value s
ActiveRecord::Base.connection.quote(s)
end
end