Class: Groonga::Schema::IndexColumnDefinition
- Inherits:
-
Object
- Object
- Groonga::Schema::IndexColumnDefinition
- Includes:
- Path
- Defined in:
- lib/groonga/schema.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
Returns the value of attribute name.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#target_columns ⇒ Object
Returns the value of attribute target_columns.
-
#target_table ⇒ Object
Returns the value of attribute target_table.
Class Method Summary collapse
Instance Method Summary collapse
- #define(table_definition, table) ⇒ Object
-
#initialize(name, options = {}) ⇒ IndexColumnDefinition
constructor
A new instance of IndexColumnDefinition.
Methods included from Path
#columns_directory_path, #rmdir_if_available, #tables_directory_path
Constructor Details
#initialize(name, options = {}) ⇒ IndexColumnDefinition
Returns a new instance of IndexColumnDefinition.
1621 1622 1623 1624 1625 1626 1627 |
# File 'lib/groonga/schema.rb', line 1621 def initialize(name, ={}) @name = name @name = @name.to_s if @name.is_a?(Symbol) @options = ( || {}).dup @target_table = nil @target_columns = nil end |
Instance Attribute Details
#name ⇒ Object
Returns the value of attribute name.
1618 1619 1620 |
# File 'lib/groonga/schema.rb', line 1618 def name @name end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
1619 1620 1621 |
# File 'lib/groonga/schema.rb', line 1619 def @options end |
#target_columns ⇒ Object
Returns the value of attribute target_columns.
1618 1619 1620 |
# File 'lib/groonga/schema.rb', line 1618 def target_columns @target_columns end |
#target_table ⇒ Object
Returns the value of attribute target_table.
1618 1619 1620 |
# File 'lib/groonga/schema.rb', line 1618 def target_table @target_table end |
Class Method Details
.column_name(context, target_table, target_columns) ⇒ Object
1603 1604 1605 1606 |
# File 'lib/groonga/schema.rb', line 1603 def column_name(context, target_table, target_columns) target_table = resolve(context, target_table) "#{target_table.name}_#{target_columns.join('_')}" end |
.resolve(context, object) ⇒ Object
1608 1609 1610 1611 1612 1613 1614 1615 |
# File 'lib/groonga/schema.rb', line 1608 def resolve(context, object) return object if object.is_a?(Groonga::Object) if object.respond_to?(:call) object = object.call(context) end return nil if object.nil? context[object] end |
Instance Method Details
#define(table_definition, table) ⇒ Object
1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 |
# File 'lib/groonga/schema.rb', line 1629 def define(table_definition, table) context = table_definition.context target_table = resolve_target_table(context) if target_table.nil? raise UnknownIndexTargetTable.new(@target_table) end nonexistent_columns = nonexistent_columns(target_table) unless nonexistent_columns.empty? raise UnknownIndexTarget.new(target_table, nonexistent_columns) end name = @name || self.class.column_name(context, target_table, @target_columns) index = table.column(name) if index return index if same_index?(context, index, target_table) if @options[:force] index.remove else = @options.merge(:type => :index, :target_table => target_table, :target_columns => @target_columns) raise ColumnCreationWithDifferentOptions.new(index, ) end end index = table.define_index_column(name, target_table, (context, table, name)) index.sources = @target_columns.collect do |column| target_table.column(column) end index end |