module Skr::Core::DB::MigrationMethods

Public Instance Methods

create_skr_table(table_name, *args, &block) click to toggle source
# File lib/skr/core/db/migration_helpers.rb, line 64
def create_skr_table(table_name, *args, &block)
    definition = nil
    create_table( Skr::Core.config.table_prefix + table_name, *args ) do | td |
        # Thanks for the trick from the Foreigner gem!
        # in connection_adapters/abstract/schema_statements
        definition = td
        block.call(td) unless block.nil?
    end
    definition.skr_foreign_keys.each do |to_table, options |
        skr_add_foreign_key( table_name, to_table, options )
    end
    definition.skr_extra_indexes.each do | index_column, options |
        skr_add_index( table_name, index_column, options )
    end
end
drop_skr_table( table_name, *args ) click to toggle source
# File lib/skr/core/db/migration_helpers.rb, line 115
def drop_skr_table( table_name, *args )
    drop_table( Skr::Core.config.table_prefix + table_name )
end
remove_skr_index( table_name, column ) click to toggle source
# File lib/skr/core/db/migration_helpers.rb, line 119
def remove_skr_index( table_name, column )
    remove_index( Skr::Core.config.table_prefix + table_name, column )
end
skr_add_foreign_key( table_name, to_table, options = {} ) click to toggle source
# File lib/skr/core/db/migration_helpers.rb, line 91
def skr_add_foreign_key( table_name, to_table, options = {} )
    from_table = Skr::Core.config.table_prefix + table_name.to_s
    to_table   = Skr::Core.config.table_prefix + to_table.to_s
    # table_name #from_table = Skr::Core.config.table_prefix + table_name
    column  = options[:column] || "#{to_table.to_s.singularize}_id"
    foreign_key_name = options.key?(:name) ? options[:name].to_s : "#{from_table}_#{column}_fk"

    primary_key = options[:primary_key] || "id"
    dependency = case options[:dependent]
                 when :nullify then "ON DELETE SET NULL"
                 when :delete  then "ON DELETE CASCADE"
                 when :restrict then "ON DELETE RESTRICT"
                 else ""
                 end
    sql = "ALTER TABLE #{quote_table_name(from_table)} " +
          "ADD CONSTRAINT #{quote_column_name(foreign_key_name)} " +
          "FOREIGN KEY (#{quote_column_name(column)}) " +
          "REFERENCES #{quote_table_name( to_table )}(#{primary_key})"
    sql << " #{dependency}" if dependency.present?
    sql << " #{options[:options]}" if options[:options]

    execute(sql)
end
skr_add_index( table_name, columns, options={} ) click to toggle source
# File lib/skr/core/db/migration_helpers.rb, line 80
def skr_add_index( table_name, columns, options={} )
    table_name = Skr::Core.config.table_prefix + table_name.to_s
    if options[:function]
        unique = options[:unique] ? 'unique' : ''
        name   = table_name + 'indx_' + columns
        execute( "create #{unique} index #{name} on #{table_name}(#{options[:function]})" )
    else
        add_index( table_name, columns, options  )
    end
end