
class AddCampaignsAndTemplates < ActiveRecord::Migration

	def self.up
		create_table :campaigns do |t|
			t.integer   :workspace_id, :null => false
			t.string    :name, :limit => 512
			# Serialized, stores SMTP/other protocol config options etc.
			t.text      :prefs
			t.integer   :status, :default => 0
			t.timestamp :started_at
			t.timestamps null: false
		end

		create_table :email_templates do |t|
			t.string  :name,    :limit => 512
			t.string  :subject, :limit => 1024
			t.text    :body
			t.integer :parent_id
			t.integer :campaign_id
		end
		create_table :attachments do |t|
			t.string  :name,    :limit => 512
			t.binary  :data
			t.string  :content_type, :limit => 512
			t.boolean :inline,  :null => false, :default => true
			t.boolean :zip,     :null => false, :default => false
		end
		create_table :attachments_email_templates, :id => false do |t|
			t.integer :attachment_id
			t.integer :email_template_id
		end

		create_table :email_addresses do |t|
			t.integer :campaign_id, :null => false
			t.string  :first_name,  :limit => 512
			t.string  :last_name,   :limit => 512
			t.string  :address,     :limit => 512
			t.boolean :sent,        :null => false, :default => false
			t.timestamp :clicked_at
		end

		create_table :web_templates do |t|
			t.string  :name,    :limit => 512
			t.string  :title,   :limit => 512
			t.string  :body,    :limit => 524288
			t.integer :campaign_id
		end
	end

	def self.down
		drop_table :campaigns
		drop_table :email_templates
		drop_table :attachments
		drop_table :attachments_email_templates
		drop_table :email_addresses
		drop_table :web_templates
	end

end

