Skip to content

Commit

Permalink
Created first draft for schema migration from 0.x to 1.0.
Browse files Browse the repository at this point in the history
  • Loading branch information
gaspard committed Feb 28, 2011
1 parent 0917b8a commit 64ef2c5
Show file tree
Hide file tree
Showing 2 changed files with 413 additions and 0 deletions.
374 changes: 374 additions & 0 deletions misc/migrations/20110228121700_zerox1_schema.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,374 @@
# This migration should be run in the 0.x branch.
# DelayedJobs migration not taken into account here.
class Zerox1Schema < ActiveRecord::Migration
def self.up
$Zerox1SchemaRunning = true
table_options = 'type=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci'
# ============================================ access_hits
# removed in cleanup migration

# ============================================ attachments

create_table "attachments", :options => table_options, :force => true do |t|
t.string "filename"
t.integer "site_id"
t.integer "user_id"
t.datetime "created_at"
t.datetime "updated_at"
end

# ============================================ cached_pages
execute "ALTER TABLE cached_pages COLLATE utf8_unicode_ci;"
execute "ALTER TABLE cached_pages MODIFY path TEXT COLLATE utf8_unicode_ci;"
add_index "cached_pages", ["node_id"], :name => "index_cached_pages_on_node_id"

# ============================================ cached_pages_nodes
execute "ALTER TABLE cached_pages_nodes COLLATE utf8_unicode_ci;"
add_index "cached_pages_nodes", ["node_id"], :name => "index_cached_pages_nodes_on_node_id"
add_index "cached_pages_nodes", ["cached_page_id"], :name => "index_cached_pages_nodes_on_cached_page_id"

# ============================================ caches
execute "ALTER TABLE caches COLLATE utf8_unicode_ci;"
execute "ALTER TABLE caches MODIFY visitor_groups VARCHAR(200) COLLATE utf8_unicode_ci DEFAULT NULL;"
execute "ALTER TABLE caches MODIFY kpath VARCHAR(200) COLLATE utf8_unicode_ci DEFAULT NULL;"
execute "ALTER TABLE caches MODIFY content TEXT COLLATE utf8_unicode_ci;"

# ============================================ comments
create_table "columns", :options => table_options, :force => true do |t|
t.integer "role_id"
t.string "name"
t.string "ptype"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "site_id"
t.string "index", :limit => 30
end

add_index "columns", ["role_id"], :name => "index_columns_on_role_id"
add_index "columns", ["name"], :name => "index_columns_on_name"

# ============================================ comments
execute "ALTER TABLE comments COLLATE utf8_unicode_ci;"
execute "ALTER TABLE comments MODIFY title VARCHAR(250) COLLATE utf8_unicode_ci NOT NULL DEFAULT '';"
execute "ALTER TABLE comments MODIFY `text` TEXT COLLATE utf8_unicode_ci NOT NULL;"
execute "ALTER TABLE comments MODIFY author_name VARCHAR(300) COLLATE utf8_unicode_ci DEFAULT NULL;"
execute "ALTER TABLE comments MODIFY ip VARCHAR(200) COLLATE utf8_unicode_ci DEFAULT NULL;"

add_index "comments", ["discussion_id"], :name => "index_comments_on_discussion_id"
add_index "comments", ["reply_to"], :name => "index_comments_on_reply_to"
add_index "comments", ["user_id"], :name => "index_comments_on_user_id"

# ============================================ contact_contents
# content migrated in zero99_to_one

# ============================================ data_entries
execute "ALTER TABLE data_entries COLLATE utf8_unicode_ci;"
execute "ALTER TABLE data_entries MODIFY `text` TEXT COLLATE utf8_unicode_ci;"

add_index "data_entries", ["node_a_id"], :name => "index_data_entries_on_node_a_id"
add_index "data_entries", ["node_b_id"], :name => "index_data_entries_on_node_b_id"
add_index "data_entries", ["node_c_id"], :name => "index_data_entries_on_node_c_id"
add_index "data_entries", ["node_d_id"], :name => "index_data_entries_on_node_d_id"

# ============================================ delayed_jobs
# ignore

# ============================================ discussions
execute "ALTER TABLE discussions COLLATE utf8_unicode_ci;"
execute "ALTER TABLE discussions MODIFY `lang` VARCHAR(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '';"

add_index "discussions", ["node_id"], :name => "index_discussions_on_node_id"

# ============================================ document_contents
# content migrated in zero99_to_one

# ============================================ form_lines
# removed in cleanup migration

# ============================================ form_seizures
# removed in cleanup migration

# ============================================ groups
execute "ALTER TABLE groups COLLATE utf8_unicode_ci;"
execute "ALTER TABLE groups MODIFY `name` VARCHAR(20) COLLATE utf8_unicode_ci NOT NULL DEFAULT '';"

# ============================================ groups_users
execute "ALTER TABLE groups_users COLLATE utf8_unicode_ci;"

add_index "groups_users", ["group_id"], :name => "index_groups_users_on_group_id"
add_index "groups_users", ["user_id"], :name => "index_groups_users_on_user_id"

# ============================================ dyn_attributes
# content migrated in zero99_to_one

# ============================================ idx_...
create_table "idx_nodes_datetimes", :options => table_options, :force => true do |t|
t.integer "node_id", :null => false
t.string "key"
t.datetime "value"
end

add_index "idx_nodes_datetimes", ["node_id", "key"], :name => "index_idx_nodes_datetimes_on_node_id_and_key"
add_index "idx_nodes_datetimes", ["value"], :name => "index_idx_nodes_datetimes_on_value"
add_index "idx_nodes_datetimes", ["node_id"], :name => "index_idx_nodes_datetimes_on_node_id"

create_table "idx_nodes_floats", :options => table_options, :force => true do |t|
t.integer "node_id", :null => false
t.string "key"
t.float "value"
end

add_index "idx_nodes_floats", ["node_id", "key"], :name => "index_idx_nodes_floats_on_node_id_and_key"
add_index "idx_nodes_floats", ["value"], :name => "index_idx_nodes_floats_on_value"
add_index "idx_nodes_floats", ["node_id"], :name => "index_idx_nodes_floats_on_node_id"

create_table "idx_nodes_integers", :options => table_options, :force => true do |t|
t.integer "node_id", :null => false
t.string "key"
t.integer "value"
end

add_index "idx_nodes_integers", ["node_id", "key"], :name => "index_idx_nodes_integers_on_node_id_and_key"
add_index "idx_nodes_integers", ["value"], :name => "index_idx_nodes_integers_on_value"
add_index "idx_nodes_integers", ["node_id"], :name => "index_idx_nodes_integers_on_node_id"

create_table "idx_nodes_ml_strings", :options => table_options, :force => true do |t|
t.integer "node_id", :null => false
t.string "key"
t.string "lang", :limit => 10
t.string "value"
end

add_index "idx_nodes_ml_strings", ["node_id", "key", "lang"], :name => "index_idx_nodes_ml_strings_on_node_id_and_key_and_lang"
add_index "idx_nodes_ml_strings", ["value"], :name => "index_idx_nodes_ml_strings_on_value"
add_index "idx_nodes_ml_strings", ["node_id"], :name => "index_idx_nodes_ml_strings_on_node_id"

create_table "idx_nodes_strings", :options => table_options, :force => true do |t|
t.integer "node_id", :null => false
t.string "key"
t.string "value"
end

add_index "idx_nodes_strings", ["node_id", "key"], :name => "index_idx_nodes_strings_on_node_id_and_key"
add_index "idx_nodes_strings", ["value"], :name => "index_idx_nodes_strings_on_value"
add_index "idx_nodes_strings", ["node_id"], :name => "index_idx_nodes_strings_on_node_id"

# This is just for testing...
create_table "idx_projects", :options => table_options, :force => true do |t|
t.integer "site_id"
t.integer "node_id"
t.integer "blog_id"
t.string "blog_title"
t.integer "contact_id"
t.string "contact_first_name"
t.string "contact_name"
t.integer "reference_id"
t.string "reference_name"
t.string "reference_title"
t.integer "tag_id"
t.datetime "tag_created_at"
t.string "tag_title"
end

create_table "idx_templates", :options => table_options, :force => true do |t|
t.integer "site_id"
t.integer "node_id"
t.string "format"
t.string "tkpath"
t.string "mode"
t.integer "version_id"
t.integer "skin_id"
end

add_index "idx_templates", ["tkpath"], :name => "index_idx_templates_on_tkpath"
add_index "idx_templates", ["format"], :name => "index_idx_templates_on_format"
add_index "idx_templates", ["mode"], :name => "index_idx_templates_on_mode"
add_index "idx_templates", ["site_id"], :name => "index_idx_templates_on_site_id"
add_index "idx_templates", ["node_id"], :name => "index_idx_templates_on_node_id"
add_index "idx_templates", ["version_id"], :name => "index_idx_templates_on_version_id"

# ============================================ template_contents
# content migrated in zero99_to_one

# ============================================ iformats
execute "ALTER TABLE iformats COLLATE utf8_unicode_ci;"
execute "ALTER TABLE iformats MODIFY `name` VARCHAR(40) COLLATE utf8_unicode_ci DEFAULT NULL;"
execute "ALTER TABLE iformats MODIFY `popup` VARCHAR(120) COLLATE utf8_unicode_ci DEFAULT NULL;"

# ============================================ links
execute "ALTER TABLE links COLLATE utf8_unicode_ci;"
execute "ALTER TABLE links MODIFY `comment` VARCHAR(60) COLLATE utf8_unicode_ci DEFAULT NULL;"

add_index "links", ["source_id"], :name => "index_links_on_source_id"
add_index "links", ["target_id"], :name => "index_links_on_target_id"
add_index "links", ["relation_id"], :name => "index_links_on_relation_id"
add_index "links", ["status"], :name => "index_links_on_status"
add_index "links", ["date"], :name => "index_links_on_date"


# ============================================ nodes
execute "ALTER TABLE nodes COLLATE utf8_unicode_ci;"
execute "ALTER TABLE nodes MODIFY `type` VARCHAR(32) COLLATE utf8_unicode_ci DEFAULT NULL;"
execute "ALTER TABLE nodes MODIFY `kpath` VARCHAR(16) COLLATE utf8_unicode_ci DEFAULT NULL;"
execute "ALTER TABLE nodes MODIFY `user_id` INT(11) NOT NULL;"
execute "ALTER TABLE nodes MODIFY `ref_lang` VARCHAR(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '';"
execute "ALTER TABLE nodes MODIFY `vhash` TEXT COLLATE utf8_unicode_ci;"
execute "ALTER TABLE nodes MODIFY `fullpath` TEXT COLLATE utf8_unicode_ci;"
execute "ALTER TABLE nodes MODIFY `basepath` TEXT COLLATE utf8_unicode_ci;"
# new
add_column :nodes, 'skin_id', :integer
add_column :nodes, "_id", , :string , :limit => 40
add_column :nodes, "idx_datetime1" , :datetime
add_column :nodes, "idx_datetime2" , :datetime
add_column :nodes, "idx_float1" , :float
add_column :nodes, "idx_float2" , :float
add_column :nodes, "idx_string1" , :string
add_column :nodes, "idx_string2" , :string
add_column :nodes, "idx_integer1" , :integer
add_column :nodes, "idx_integer2" , :integer

# idx
add_index "nodes", ["zip", "site_id"], :name => "index_nodes_on_zip_and_site_id"
add_index "nodes", ["kpath"], :name => "index_nodes_on_kpath"
add_index "nodes", ["parent_id"], :name => "index_nodes_on_parent_id"
add_index "nodes", ["project_id"], :name => "index_nodes_on_project_id"
add_index "nodes", ["section_id"], :name => "index_nodes_on_section_id"
add_index "nodes", ["rgroup_id"], :name => "index_nodes_on_rgroup_id"
add_index "nodes", ["wgroup_id"], :name => "index_nodes_on_wgroup_id"
add_index "nodes", ["publish_from"], :name => "index_nodes_on_publish_from"
add_index "nodes", ["site_id"], :name => "index_nodes_on_site_id"
add_index "nodes", ["idx_datetime1"], :name => "index_nodes_on_idx_datetime1"
add_index "nodes", ["idx_datetime2"], :name => "index_nodes_on_idx_datetime2"
add_index "nodes", ["idx_float1"], :name => "index_nodes_on_idx_float1"
add_index "nodes", ["idx_float2"], :name => "index_nodes_on_idx_float2"
add_index "nodes", ["idx_string1"], :name => "index_nodes_on_idx_string1"
add_index "nodes", ["idx_string2"], :name => "index_nodes_on_idx_string2"
add_index "nodes", ["idx_integer1"], :name => "index_nodes_on_idx_integer1"
add_index "nodes", ["idx_integer2"], :name => "index_nodes_on_idx_integer2"

# ============================================ nodes_roles
create_table "nodes_roles", :id => false, :force => true do |t|
t.integer "node_id", :default => 0, :null => false
t.integer "role_id", :default => 0, :null => false
end

add_index "nodes_roles", ["node_id"], :name => "index_nodes_roles_on_node_id"
add_index "nodes_roles", ["role_id"], :name => "index_nodes_roles_on_role_id"

# ============================================ relations
execute "ALTER TABLE relations COLLATE utf8_unicode_ci;"
execute "ALTER TABLE relations MODIFY `source_role` VARCHAR(32) COLLATE utf8_unicode_ci DEFAULT NULL;"
execute "ALTER TABLE relations MODIFY `source_kpath` VARCHAR(16) COLLATE utf8_unicode_ci DEFAULT NULL;"
execute "ALTER TABLE relations MODIFY `source_icon` VARCHAR(200) COLLATE utf8_unicode_ci DEFAULT NULL;"

execute "ALTER TABLE relations MODIFY `target_role` VARCHAR(32) COLLATE utf8_unicode_ci DEFAULT NULL;"
execute "ALTER TABLE relations MODIFY `target_kpath` VARCHAR(16) COLLATE utf8_unicode_ci DEFAULT NULL;"
execute "ALTER TABLE relations MODIFY `target_icon` VARCHAR(200) COLLATE utf8_unicode_ci DEFAULT NULL;"

add_column :relations, :rel_group, :string

add_index "relations", ["source_role"], :name => "index_relations_on_source_role"
add_index "relations", ["target_role"], :name => "index_relations_on_target_role"
add_index "relations", ["site_id"], :name => "index_relations_on_site_id"

# ============================================ roles (virtual_classes)
execute "RENAME TABLE virtual_classes TO roles;"
execute "ALTER TABLE roles COLLATE utf8_unicode_ci;"
execute "ALTER TABLE roles MODIFY `name` VARCHAR(255) COLLATE utf8_unicode_ci DEFAULT NULL;"
execute "ALTER TABLE roles MODIFY `kpath` VARCHAR(16) COLLATE utf8_unicode_ci DEFAULT NULL;"
execute "ALTER TABLE roles MODIFY `real_class` VARCHAR(16) COLLATE utf8_unicode_ci DEFAULT NULL;"
execute "ALTER TABLE roles MODIFY `icon` VARCHAR(200) COLLATE utf8_unicode_ci DEFAULT NULL;"
# new
add_column :roles, :type, :string
add_column :roles, :created_at, :datetime
add_column :roles, :updated_at, :datetime
add_column :roles, :idx_class, :string, :limit => 30
add_column :roles, :idx_scope, :string, :limit => 255

# idx
add_index "roles", ["name"], :name => "index_roles_on_name"
add_index "roles", ["kpath"], :name => "index_roles_on_kpath"
add_index "roles", ["site_id"], :name => "index_roles_on_site_id"

# ============================================ schema_migrations
execute "ALTER TABLE schema_migrations COLLATE utf8_unicode_ci;"
execute "ALTER TABLE schema_migrations MODIFY `version` VARCHAR(255) COLLATE utf8_unicode_ci DEFAULT NULL;"
execute "ALTER TABLE schema_migrations MODIFY `brick` VARCHAR(255) COLLATE utf8_unicode_ci DEFAULT NULL;"

# ============================================ sessions
execute "ALTER TABLE sessions COLLATE utf8_unicode_ci;"
execute "ALTER TABLE sessions MODIFY `session_id` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL;"
execute "ALTER TABLE sessions MODIFY `data` TEXT COLLATE utf8_unicode_ci NOT NULL;"

# ============================================ sites
execute "ALTER TABLE sites COLLATE utf8_unicode_ci;"
execute "ALTER TABLE sites MODIFY `host` VARCHAR(255) COLLATE utf8_unicode_ci DEFAULT NULL;"
execute "ALTER TABLE sites MODIFY `host` VARCHAR(255) COLLATE utf8_unicode_ci DEFAULT NULL;"
execute "ALTER TABLE sites MODIFY `name` VARCHAR(255) COLLATE utf8_unicode_ci DEFAULT NULL;"
execute "ALTER TABLE sites MODIFY `languages` VARCHAR(255) COLLATE utf8_unicode_ci DEFAULT NULL;"
execute "ALTER TABLE sites MODIFY `default_lang` VARCHAR(255) COLLATE utf8_unicode_ci DEFAULT NULL;"

remove_column :sites, :su_id
add_column :sites, :properties, :text
add_column :sites, :api_group_id, :integer
add_column :sites, :roles_updated_at, :datetime

add_index "sites", ["host"], :name => "index_sites_on_host"

# ============================================ stored_columns
create_table "stored_columns", :force => true do |t|
t.integer "stored_role_id"
t.string "name"
t.string "ptype"
end

# ============================================ users
execute "ALTER TABLE users COLLATE utf8_unicode_ci;"
execute "ALTER TABLE users MODIFY `login` VARCHAR(20) COLLATE utf8_unicode_ci DEFAULT NULL;"
execute "ALTER TABLE users MODIFY `crypted_password` VARCHAR(40) COLLATE utf8_unicode_ci DEFAULT NULL;"
execute "ALTER TABLE users MODIFY `time_zone` VARCHAR(255) COLLATE utf8_unicode_ci DEFAULT NULL;"
execute "ALTER TABLE users MODIFY `lang` VARCHAR(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '';"
execute "ALTER TABLE users MODIFY `password_salt` VARCHAR(255) COLLATE utf8_unicode_ci DEFAULT NULL;"
execute "ALTER TABLE users MODIFY `persistence_token` VARCHAR(255) COLLATE utf8_unicode_ci DEFAULT NULL;"
execute "ALTER TABLE users MODIFY `single_access_token` VARCHAR(255) COLLATE utf8_unicode_ci DEFAULT NULL;"

rename_column :users, :contact_id, :node_id

add_column :users, :properties, :text

# ============================================ versions
execute "ALTER TABLE versions COLLATE utf8_unicode_ci;"
execute "ALTER TABLE versions MODIFY `type` VARCHAR(32) COLLATE utf8_unicode_ci DEFAULT NULL;"
execute "ALTER TABLE versions MODIFY `node_id` INT(11) NOT NULL;"
execute "ALTER TABLE versions MODIFY `user_id` INT(11) NOT NULL;"
execute "ALTER TABLE versions MODIFY `lang` VARCHAR(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '';"


remove_index :versions, :column => [:title, :text, :summary]

execute "ALTER TABLE versions MODIFY `comment` TEXT COLLATE utf8_unicode_ci;"

rename_column :versions, :title, :idx_text_high
execute "ALTER TABLE versions MODIFY `idx_text_high` TEXT COLLATE utf8_unicode_ci;"

rename_column :versions, :summary, :idx_text_medium
execute "ALTER TABLE versions MODIFY `idx_text_medium` TEXT COLLATE utf8_unicode_ci;"

rename_column :versions, :text, :idx_text_low
execute "ALTER TABLE versions MODIFY `idx_text_low` TEXT COLLATE utf8_unicode_ci;"

execute "ALTER TABLE versions MODIFY `status` INT(11) NOT NULL;"

# LONGTEXT
add_column :versions, :properties, :limit => 2147483647
add_column :versions, :attachment_id, :integer

add_index "versions", ["node_id"], :name => "index_versions_on_node_id"
add_index "versions", ["user_id"], :name => "index_versions_on_user_id"

# ============================================ zips
execute "ALTER TABLE zips COLLATE utf8_unicode_ci;"

add_index "zips", ["site_id"], :name => "index_zips_on_site_id"
end
end

0 comments on commit 64ef2c5

Please sign in to comment.