Files
openfoodnetwork/db/migrate/20121009232513_create_cms.rb
2012-10-11 10:50:36 +11:00

138 lines
5.2 KiB
Ruby

class CreateCms < ActiveRecord::Migration
def self.up
text_limit = case ActiveRecord::Base.connection.adapter_name
when 'PostgreSQL'
{ }
else
{ :limit => 16777215 }
end
# -- Sites --------------------------------------------------------------
create_table :cms_sites do |t|
t.string :label, :null => false
t.string :identifier, :null => false
t.string :hostname, :null => false
t.string :path
t.string :locale, :null => false, :default => 'en'
t.boolean :is_mirrored, :null => false, :default => false
end
add_index :cms_sites, :hostname
add_index :cms_sites, :is_mirrored
# -- Layouts ------------------------------------------------------------
create_table :cms_layouts do |t|
t.integer :site_id, :null => false
t.integer :parent_id
t.string :app_layout
t.string :label, :null => false
t.string :identifier, :null => false
t.text :content, text_limit
t.text :css, text_limit
t.text :js, text_limit
t.integer :position, :null => false, :default => 0
t.boolean :is_shared, :null => false, :default => false
t.timestamps
end
add_index :cms_layouts, [:parent_id, :position]
add_index :cms_layouts, [:site_id, :identifier], :unique => true
# -- Pages --------------------------------------------------------------
create_table :cms_pages do |t|
t.integer :site_id, :null => false
t.integer :layout_id
t.integer :parent_id
t.integer :target_page_id
t.string :label, :null => false
t.string :slug
t.string :full_path, :null => false
t.text :content, text_limit
t.integer :position, :null => false, :default => 0
t.integer :children_count, :null => false, :default => 0
t.boolean :is_published, :null => false, :default => true
t.boolean :is_shared, :null => false, :default => false
t.timestamps
end
add_index :cms_pages, [:site_id, :full_path]
add_index :cms_pages, [:parent_id, :position]
# -- Page Blocks --------------------------------------------------------
create_table :cms_blocks do |t|
t.integer :page_id, :null => false
t.string :identifier, :null => false
t.text :content
t.timestamps
end
add_index :cms_blocks, [:page_id, :identifier]
# -- Snippets -----------------------------------------------------------
create_table :cms_snippets do |t|
t.integer :site_id, :null => false
t.string :label, :null => false
t.string :identifier, :null => false
t.text :content, text_limit
t.integer :position, :null => false, :default => 0
t.boolean :is_shared, :null => false, :default => false
t.timestamps
end
add_index :cms_snippets, [:site_id, :identifier], :unique => true
add_index :cms_snippets, [:site_id, :position]
# -- Files --------------------------------------------------------------
create_table :cms_files do |t|
t.integer :site_id, :null => false
t.integer :block_id
t.string :label, :null => false
t.string :file_file_name, :null => false
t.string :file_content_type, :null => false
t.integer :file_file_size, :null => false
t.string :description, :limit => 2048
t.integer :position, :null => false, :default => 0
t.timestamps
end
add_index :cms_files, [:site_id, :label]
add_index :cms_files, [:site_id, :file_file_name]
add_index :cms_files, [:site_id, :position]
add_index :cms_files, [:site_id, :block_id]
# -- Revisions -----------------------------------------------------------
create_table :cms_revisions, :force => true do |t|
t.string :record_type, :null => false
t.integer :record_id, :null => false
t.text :data, text_limit
t.datetime :created_at
end
add_index :cms_revisions, [:record_type, :record_id, :created_at]
# -- Categories ---------------------------------------------------------
create_table :cms_categories, :force => true do |t|
t.integer :site_id, :null => false
t.string :label, :null => false
t.string :categorized_type, :null => false
end
add_index :cms_categories, [:site_id, :categorized_type, :label], :unique => true
create_table :cms_categorizations, :force => true do |t|
t.integer :category_id, :null => false
t.string :categorized_type, :null => false
t.integer :categorized_id, :null => false
end
add_index :cms_categorizations, [:category_id, :categorized_type, :categorized_id], :unique => true,
:name => 'index_cms_categorizations_on_cat_id_and_catd_type_and_catd_id'
end
def self.down
drop_table :cms_sites
drop_table :cms_layouts
drop_table :cms_pages
drop_table :cms_snippets
drop_table :cms_blocks
drop_table :cms_files
drop_table :cms_revisions
drop_table :cms_categories
drop_table :cms_categorizations
end
end