From: Andy Allan Date: Sun, 9 Nov 2008 16:11:42 +0000 (+0000) Subject: migrations: add specific method for nodes/ways/relations enum column X-Git-Tag: live~7569^2~176 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/051f20e2771a44ddc5ed8d730f357cc323532233 migrations: add specific method for nodes/ways/relations enum column --- diff --git a/db/migrate/007_add_relations.rb b/db/migrate/007_add_relations.rb index b4aff6e09..c265fc3ad 100644 --- a/db/migrate/007_add_relations.rb +++ b/db/migrate/007_add_relations.rb @@ -11,7 +11,7 @@ class AddRelations < ActiveRecord::Migration t.column "member_role", :string end # enums work like strings but are more efficient - execute "alter table current_relation_members change column member_type member_type enum('node','way','relation');" + alter_column_nwr_enum :current_relation_members, :member_type add_primary_key "current_relation_members", ["id", "member_type", "member_id", "member_role"] add_index "current_relation_members", ["member_type", "member_id"], :name => "current_relation_members_member_idx" @@ -41,7 +41,7 @@ class AddRelations < ActiveRecord::Migration t.column "version", :bigint, :limit => 20, :default => 0, :null => false end - execute "alter table relation_members change column member_type member_type enum('node','way','relation');" + alter_column_nwr_enum :relation_members, :member_type add_primary_key "relation_members", ["id", "version", "member_type", "member_id", "member_role"] add_index "relation_members", ["member_type", "member_id"], :name => "relation_members_member_idx" diff --git a/lib/migrate.rb b/lib/migrate.rb index 585b47b1c..69538f1da 100644 --- a/lib/migrate.rb +++ b/lib/migrate.rb @@ -85,6 +85,10 @@ module ActiveRecord def add_fulltext_index (table_name, column) execute "CREATE FULLTEXT INDEX `#{table_name}_#{column}_idx` ON `#{table_name}` (`#{column}`)" end + + def alter_column_nwr_enum (table_name, column) + execute "alter table #{table_name} change column #{column} #{column} enum('node','way','relation');" + end end end end