#-- encoding: UTF-8 #-- copyright # OpenProject is a project management system. # Copyright (C) 2012-2015 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 { |m| m.gsub(/_.*\z/, '').to_i } 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