class MailMgrInitial < ActiveRecord::Migration
  def self.table_prefix
    MailManager.table_prefix
  rescue
    'mail_manager_'
  end

  def self.up
    create_table :"#{table_prefix}mailing_lists" do |t|
      t.string :name
      t.text :description
      t.string :status
      t.datetime :status_changed_at
      t.timestamps
    end
    create_table :"#{table_prefix}subscriptions" do |t|
      t.integer :contactable_id
      t.string  :contactable_type
      t.string  :first_name
      t.string  :last_name
      t.string  :email_address
      t.integer :mailing_list_id
      t.string :status
      t.datetime :status_changed_at
      t.integer :updated_by
      t.timestamps
    end
    
    create_table :"#{table_prefix}mailings" do |t|
      t.string :subject
      t.string :from_email_address
      t.string :mailable_type
      t.integer :mailable_id
      t.string :status
      t.datetime :status_changed_at
      t.datetime :scheduled_at
      t.boolean :include_images
      t.timestamps
    end
    
    create_table :"#{table_prefix}mailing_lists_#{table_prefix}mailings", :id => false do |t|
      t.integer :mailing_id
      t.integer :mailing_list_id
    end
    create_table :"#{table_prefix}messages" do |t|
      t.string  :type
      t.string  :test_email_address
      t.integer :subscription_id
      t.integer :mailing_id
      t.string :guid
      t.string :status
      t.datetime :status_changed_at
      t.text :result
      t.timestamps
    end
    create_table :"#{table_prefix}bounces" do |t|
      t.integer :message_id
      t.integer :mailing_id
      t.string :status
      t.datetime :status_changed_at
      t.text :bounce_message
      t.text :comments
      t.timestamps
    end
    create_table :"#{table_prefix}mailables" do |t|
      t.string    :name, :null => false
      t.text      :email_html
      t.text      :email_text
      t.boolean   :reusable  
      t.integer   :updated_by
      t.timestamps
    end
  end

  def self.down
    drop_table :"#{table_prefix}mailables"
    drop_table :"#{table_prefix}bounces"
    drop_table :"#{table_prefix}messages"
    drop_table :"#{table_prefix}mailing_lists_#{table_prefix}mailings"
    drop_table :"#{table_prefix}mailings"
    drop_table :"#{table_prefix}subscriptions"
    drop_table :"#{table_prefix}mailing_lists"
  end
end