class InitialMigration < ActiveRecord::Migration def self.up create_table :users do |t| t.string :first_name t.string :last_name t.string :login, :null => false t.string :email, :null => false t.string :crypted_password, :null => false t.string :password_salt, :null => false t.string :persistence_token, :null => false t.string :single_access_token, :null => false t.string :perishable_token, :null => false t.integer :login_count, :null => false, :default => 0 t.integer :failed_login_count, :null => false, :default => 0 t.datetime :last_request_at t.datetime :current_login_at t.datetime :last_login_at t.string :current_login_ip t.string :last_login_ip t.timestamps t.datetime :deleted_at end create_table :allowed_values do |t| t.string :type t.string :code t.string :value t.integer :position t.timestamps t.datetime :deleted_at end create_table :product_categories do |t| t.string :code t.string :name t.integer :position t.timestamps t.datetime :deleted_at end add_index(:product_categories, :code, :unique => true) create_table :products do |t| t.integer :product_category_id t.string :code t.string :internal_code t.string :file t.string :name t.string :label t.boolean :promoted, :default => false t.boolean :homepage, :default => false t.decimal :price, :scale => 2, :precision => 10 t.decimal :regular_price, :scale => 2, :precision => 10 t.integer :bmtID t.integer :position t.timestamps t.datetime :deleted_at end add_index(:products, :code, :unique => true) add_index(:products, :internal_code, :unique => true) create_table :products_promotions, :id => false, :primary_key => [:product_id, :promotion_id] do |t| t.integer :product_id t.integer :promotion_id, :references => :allowed_values end create_table :product_descriptions do |t| t.integer :product_description_type_id, :references => :allowed_values t.integer :product_id t.string :title t.text :value t.timestamps end create_table :product_pages do |t| t.integer :parent_id, :references => :product_pages t.integer :product_id t.boolean :tab, :default => false t.string :code t.string :name t.text :html t.integer :position t.timestamps t.datetime :deleted_at end create_table :product_offers do |t| t.integer :product_id t.integer :related_product_id, :references => :products t.integer :bmtID t.string :name t.text :description t.decimal :price, :scale => 2, :precision => 10 t.datetime :begins_at t.datetime :expires_at t.integer :position t.timestamps end create_table :product_editions do |t| t.integer :product_id t.string :code t.string :internal_code t.integer :bmtID t.string :name t.text :description t.decimal :price, :scale => 2, :precision => 10 t.decimal :regular_price, :scale => 2, :precision => 10 t.boolean :initial, :default => false t.integer :position t.timestamps end add_index(:product_editions, :internal_code, :unique => true) create_table :product_discounts do |t| t.integer :product_id t.integer :product_edition_id t.string :discount_type t.string :discount_code t.decimal :price, :scale => 2, :precision => 10 t.timestamps end create_table :product_upgrades do |t| t.integer :product_id t.integer :product_edition_id t.string :upgrade_type t.string :bmtID t.decimal :price, :scale => 2, :precision => 10 t.timestamps end create_table :product_url_params do |t| t.integer :product_id t.integer :url_destination_id, :references => :allowed_values t.string :url_param t.boolean :default, :default => false t.timestamps end create_table :releases do |t| t.integer :product_id t.string :version t.integer :build t.text :description t.text :changelog t.date :date t.datetime :postpone_till t.timestamps end create_table :testimonials do |t| t.integer :product_id t.text :text t.string :author t.boolean :hidden, :default => false t.integer :position t.timestamps t.datetime :deleted_at end create_table :testimonial_positions do |t| t.integer :testimonial_id t.integer :testimonial_location_id, :references => :allowed_values t.integer :product_id t.text :extract t.integer :position end create_table :product_images do |t| t.integer :product_id t.string :image t.string :alt t.string :label t.timestamps end create_table :screenshots do |t| t.integer :product_id t.string :image t.string :alt t.string :label t.integer :position t.timestamps end create_table :product_icons do |t| t.integer :product_id t.string :icon t.integer :size t.timestamps end create_table :latests do |t| t.string :title t.string :link t.text :body t.date :date t.timestamps t.datetime :deleted_at end create_table :faq_categories do |t| t.integer :product_id t.string :url_param t.string :name t.string :description t.integer :position t.timestamps t.datetime :deleted_at end create_table :faqs do |t| t.integer :faq_category_id t.string :url_param t.text :question t.text :answer t.boolean :featured, :default => false t.integer :position t.timestamps t.datetime :deleted_at end create_table :support_requests do |t| t.integer :support_request_origin_id, :references => :allowed_values t.string :name t.string :email t.integer :product_id t.string :subject t.text :message t.boolean :mail_sent, :default => false t.timestamps t.datetime :deleted_at end create_table :volume_discounts do |t| t.integer :from t.integer :to t.integer :discount t.timestamps end create_table :download_logs do |t| t.integer :product_id t.text :request t.timestamp :created_at end create_table :meta_tags do |t| t.string :path t.string :title t.text :keywords t.text :description t.timestamps end create_table :sitemap_titles do |t| t.string :path t.string :title t.timestamps end create_table :static_pages do |t| t.string :code t.string :url_param t.string :name t.text :html t.timestamps t.datetime :deleted_at end add_index(:static_pages, :code, :unique => true) end def self.down drop_table :static_pages drop_table :sitemap_titles drop_table :meta_tags drop_table :download_logs drop_table :volume_discounts drop_table :support_requests drop_table :faqs drop_table :faq_categories drop_table :latests drop_table :product_icons drop_table :product_screenshots drop_table :product_images drop_table :testimonial_positions drop_table :testimonials drop_table :releases drop_table :product_url_params drop_table :product_upgrades drop_table :product_discounts drop_table :product_editions drop_table :product_offers drop_table :product_pages drop_table :product_descriptions drop_table :products_promotions drop_table :products drop_table :product_categories drop_table :allowed_values drop_table :users end end