# Migration to add commontator tables
class InstallCommontator < ActiveRecord::Migration[4.2]
  def change
    create_table :commontator_comments do |t|
      t.string   :creator_type
      t.integer  :creator_id
      t.string   :editor_type
      t.integer  :editor_id
      t.integer  :thread_id, null: false
      t.text     :body, null: false
      t.datetime :deleted_at

      t.integer :cached_votes_up, default: 0
      t.integer :cached_votes_down, default: 0

      t.timestamps
    end

    add_index :commontator_comments, %i[creator_id creator_type thread_id],
              name: 'index_commontator_comments_on_c_id_and_c_type_and_t_id'
    add_index :commontator_comments, %i[thread_id created_at]

    add_index  :commontator_comments, :cached_votes_up
    add_index  :commontator_comments, :cached_votes_down

    create_table :commontator_subscriptions do |t|
      t.string   :subscriber_type, null: false
      t.integer  :subscriber_id, null: false
      t.integer  :thread_id, null: false

      t.timestamps
    end

    add_index :commontator_subscriptions, %i[subscriber_id subscriber_type thread_id],
              unique: true,
              name: 'index_commontator_subscriptions_on_s_id_and_s_type_and_t_id'
    add_index :commontator_subscriptions, :thread_id

    create_table :commontator_threads do |t|
      t.string   :commontable_type
      t.integer  :commontable_id
      t.datetime :closed_at
      t.string   :closer_type
      t.integer  :closer_id

      t.timestamps
    end

    add_index :commontator_threads, %i[commontable_id commontable_type],
              unique: true,
              name: 'index_commontator_threads_on_c_id_and_c_type'
  end
end
