# frozen_string_literal: true
class MigrateSchema < ActiveRecord::Migration[5.0]
  def up
    if ActiveRecord::Base.connection.table_exists? 'c_menu_items'
      puts 'Faking the migration...'
      return
    end

    # These are extensions that must be enabled in order to support this database
    enable_extension 'plpgsql'

    create_table 'c_author_records', force: :cascade do |t|
      t.integer  'user_id'
      t.string   'authored_type'
      t.integer  'authored_id'
      t.datetime 'created_at',    null: false
      t.datetime 'updated_at',    null: false
      t.index %w(authored_type authored_id), name: 'index_c_author_records_on_authored_type_and_authored_id', using: :btree
      t.index ['user_id'], name: 'index_c_author_records_on_user_id', using: :btree
    end

    create_table 'c_blogs', force: :cascade do |t|
      t.string   'name'
      t.text     'body'
      t.datetime 'created_at',   null: false
      t.datetime 'updated_at',   null: false
      t.string   'url_alias'
      t.text     'preview_body'
      t.index ['created_at'], name: 'index_c_blogs_on_created_at', using: :btree
    end

    create_table 'c_documents', force: :cascade do |t|
      t.string   'name'
      t.string   'document'
      t.string   'documentable_type'
      t.integer  'documentable_id'
      t.datetime 'created_at',        null: false
      t.datetime 'updated_at',        null: false
    end

    create_table 'c_enquiries', force: :cascade do |t|
      t.string   'name'
      t.string   'email'
      t.text     'body'
      t.datetime 'created_at', null: false
      t.datetime 'updated_at', null: false
    end

    create_table 'c_images', force: :cascade do |t|
      t.string   'image'
      t.string   'alt'
      t.string   'caption'
      t.integer  'imageable_id'
      t.string   'imageable_type'
      t.boolean  'featured_image', default: false
      t.datetime 'created_at',                     null: false
      t.datetime 'updated_at',                     null: false
      t.boolean  'preview_image', default: false
    end

    create_table 'c_locations', force: :cascade do |t|
      t.string   'name'
      t.text     'body'
      t.datetime 'created_at', null: false
      t.datetime 'updated_at', null: false
      t.string   'url_alias'
    end

    create_table 'c_menu_item_hierarchies', id: false, force: :cascade do |t|
      t.integer 'ancestor_id',   null: false
      t.integer 'descendant_id', null: false
      t.integer 'generations',   null: false
      t.index %w(ancestor_id descendant_id generations), name: 'menu_item_anc_desc_idx', unique: true, using: :btree
      t.index ['descendant_id'], name: 'menu_item_desc_idx', using: :btree
    end

    create_table 'c_menu_items', force: :cascade do |t|
      t.string   'name'
      t.string   'link'
      t.boolean  'visible', default: true
      t.integer  'parent_id'
      t.integer  'weight'
      t.string   'machine_name'
      t.integer  'page_id'
      t.datetime 'created_at',                  null: false
      t.datetime 'updated_at',                  null: false
      t.string   'target'
      t.index ['page_id'], name: 'index_c_menu_items_on_page_id', using: :btree
    end

    create_table 'c_non_deletes', force: :cascade do |t|
      t.boolean  'deleted', default: false
      t.string   'non_deletable_type'
      t.integer  'non_deletable_id'
      t.datetime 'created_at',                         null: false
      t.datetime 'updated_at',                         null: false
      t.index %w(non_deletable_type non_deletable_id), name: 'index_c_non_deletes_on_non_deletable_type_and_non_deletable_id', using: :btree
    end

    create_table 'c_page_hierarchies', id: false, force: :cascade do |t|
      t.integer 'ancestor_id',   null: false
      t.integer 'descendant_id', null: false
      t.integer 'generations',   null: false
      t.index %w(ancestor_id descendant_id generations), name: 'page_anc_desc_idx', unique: true, using: :btree
      t.index ['descendant_id'], name: 'page_desc_idx', using: :btree
    end

    create_table 'c_page_infos', force: :cascade do |t|
      t.string   'title'
      t.text     'meta_description'
      t.string   'url_alias'
      t.boolean  'published',        default: true
      t.boolean  'protected',        default: false
      t.string   'page_type'
      t.integer  'page_id'
      t.boolean  'home_page', default: false
      t.integer  'order'
      t.datetime 'created_at',                       null: false
      t.datetime 'updated_at',                       null: false
      t.index %w(page_type page_id), name: 'index_c_page_infos_on_page_type_and_page_id', using: :btree
      t.index ['url_alias'], name: 'index_c_page_infos_on_url_alias', using: :btree
    end

    create_table 'c_pages', force: :cascade do |t|
      t.string   'name'
      t.text     'body'
      t.string   'layout'
      t.boolean  'in_menu'
      t.string   'menu_item'
      t.datetime 'created_at',   null: false
      t.datetime 'updated_at',   null: false
      t.string   'url_alias'
      t.text     'preview_body'
      t.integer  'parent_id'
      t.integer  'weight'
    end

    create_table 'c_permission_subjects', force: :cascade do |t|
      t.string   'name'
      t.text     'body'
      t.string   'subject_type'
      t.integer  'subject_id'
      t.datetime 'created_at',   null: false
      t.datetime 'updated_at',   null: false
    end

    create_table 'c_permissions', force: :cascade do |t|
      t.integer  'role_id'
      t.integer  'permission_subject_id'
      t.boolean  'read'
      t.boolean  'new'
      t.boolean  'edit'
      t.boolean  'remove'
      t.datetime 'created_at',            null: false
      t.datetime 'updated_at',            null: false
      t.index ['permission_subject_id'], name: 'index_c_permissions_on_permission_subject_id', using: :btree
      t.index ['role_id'], name: 'index_c_permissions_on_role_id', using: :btree
    end

    create_table 'c_projects', force: :cascade do |t|
      t.string   'name'
      t.text     'body'
      t.string   'url_alias'
      t.datetime 'created_at', null: false
      t.datetime 'updated_at', null: false
    end

    create_table 'c_redirects', force: :cascade do |t|
      t.string   'old_url'
      t.string   'new_url'
      t.datetime 'last_used'
      t.integer  'used_counter', default: 0
      t.datetime 'created_at',               null: false
      t.datetime 'updated_at',               null: false
    end

    create_table 'c_roles', force: :cascade do |t|
      t.string   'name'
      t.text     'body'
      t.datetime 'created_at', null: false
      t.datetime 'updated_at', null: false
    end

    create_table 'c_slides', force: :cascade do |t|
      t.string   'name'
      t.string   'url'
      t.string   'image'
      t.integer  'slideshow_id'
      t.datetime 'created_at',   null: false
      t.datetime 'updated_at',   null: false
      t.index ['slideshow_id'], name: 'index_c_slides_on_slideshow_id', using: :btree
    end

    create_table 'c_slideshows', force: :cascade do |t|
      t.string   'name'
      t.string   'machine_name'
      t.datetime 'created_at',   null: false
      t.datetime 'updated_at',   null: false
      t.text     'body'
    end

    create_table 'c_team_members', force: :cascade do |t|
      t.string   'name'
      t.string   'role'
      t.string   'image'
      t.text     'body'
      t.datetime 'created_at', null: false
      t.datetime 'updated_at', null: false
    end

    create_table 'c_testimonials', force: :cascade do |t|
      t.text     'quote'
      t.string   'author'
      t.integer  'project_id'
      t.datetime 'created_at', null: false
      t.datetime 'updated_at', null: false
    end

    create_table 'c_user_roles', force: :cascade do |t|
      t.integer  'user_id'
      t.integer  'role_id'
      t.datetime 'created_at', null: false
      t.datetime 'updated_at', null: false
      t.index ['role_id'], name: 'index_c_user_roles_on_role_id', using: :btree
      t.index ['user_id'], name: 'index_c_user_roles_on_user_id', using: :btree
    end

    create_table 'c_users', force: :cascade do |t|
      t.string   'name'
      t.string   'email',                  default: '',    null: false
      t.string   'encrypted_password',     default: '',    null: false
      t.string   'reset_password_token'
      t.datetime 'reset_password_sent_at'
      t.datetime 'remember_created_at'
      t.integer  'sign_in_count', default: 0, null: false
      t.datetime 'current_sign_in_at'
      t.datetime 'last_sign_in_at'
      t.string   'current_sign_in_ip'
      t.string   'last_sign_in_ip'
      t.datetime 'created_at',                             null: false
      t.datetime 'updated_at',                             null: false
      t.boolean  'cd2admin', default: false
      t.index ['email'], name: 'index_c_users_on_email', unique: true, using: :btree
      t.index ['reset_password_token'], name: 'index_c_users_on_reset_password_token', unique: true, using: :btree
    end

    create_table 'c_weights', force: :cascade do |t|
      t.integer  'value'
      t.string   'orderable_type'
      t.integer  'orderable_id'
      t.datetime 'created_at',     null: false
      t.datetime 'updated_at',     null: false
      t.index %w(orderable_type orderable_id), name: 'index_c_weights_on_orderable_type_and_orderable_id', using: :btree
    end

    create_table 'ckeditor_assets', force: :cascade do |t|
      t.string   'data_file_name', null: false
      t.string   'data_content_type'
      t.integer  'data_file_size'
      t.integer  'assetable_id'
      t.string   'assetable_type',    limit: 30
      t.string   'type',              limit: 30
      t.integer  'width'
      t.integer  'height'
      t.datetime 'created_at',                   null: false
      t.datetime 'updated_at',                   null: false
      t.index %w(assetable_type assetable_id), name: 'idx_ckeditor_assetable', using: :btree
      t.index %w(assetable_type type assetable_id), name: 'idx_ckeditor_assetable_type', using: :btree
    end

    add_foreign_key 'c_menu_items', 'c_menu_items', column: 'parent_id', on_delete: :nullify
  end
end