class AddTopicCustomFields < ActiveRecord::Migration
  def change
    create_table :topic_custom_fields do |t|
      t.integer :topic_id, null: false
      t.string :name, limit: 256, null: false
      t.text :value
      t.timestamps
    end

    add_index :topic_custom_fields, [:topic_id, :name]

    # migrate meta_data into custom fields
    execute <<-SQL
      INSERT INTO topic_custom_fields(topic_id, name, value)
        SELECT id, (each(meta_data)).key, (each(meta_data)).value
            FROM topics WHERE meta_data <> ''
    SQL

    remove_column :topics, :meta_data
  end
end