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.
1612 1613 1614 1615 1616 1617 1618 |
# File 'lib/groonga/schema.rb', line 1612 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.
1609 1610 1611 |
# File 'lib/groonga/schema.rb', line 1609 def name @name end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
1610 1611 1612 |
# File 'lib/groonga/schema.rb', line 1610 def @options end |
#target_columns ⇒ Object
Returns the value of attribute target_columns.
1609 1610 1611 |
# File 'lib/groonga/schema.rb', line 1609 def target_columns @target_columns end |
#target_table ⇒ Object
Returns the value of attribute target_table.
1609 1610 1611 |
# File 'lib/groonga/schema.rb', line 1609 def target_table @target_table end |
Class Method Details
.column_name(context, target_table, target_columns) ⇒ Object
1594 1595 1596 1597 |
# File 'lib/groonga/schema.rb', line 1594 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
1599 1600 1601 1602 1603 1604 1605 1606 |
# File 'lib/groonga/schema.rb', line 1599 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
1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 |
# File 'lib/groonga/schema.rb', line 1620 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 |