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.
1629 1630 1631 1632 1633 1634 1635 |
# File 'lib/groonga/schema.rb', line 1629 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.
1626 1627 1628 |
# File 'lib/groonga/schema.rb', line 1626 def name @name end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
1627 1628 1629 |
# File 'lib/groonga/schema.rb', line 1627 def @options end |
#target_columns ⇒ Object
Returns the value of attribute target_columns.
1626 1627 1628 |
# File 'lib/groonga/schema.rb', line 1626 def target_columns @target_columns end |
#target_table ⇒ Object
Returns the value of attribute target_table.
1626 1627 1628 |
# File 'lib/groonga/schema.rb', line 1626 def target_table @target_table end |
Class Method Details
.column_name(context, target_table, target_columns) ⇒ Object
1611 1612 1613 1614 |
# File 'lib/groonga/schema.rb', line 1611 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
1616 1617 1618 1619 1620 1621 1622 1623 |
# File 'lib/groonga/schema.rb', line 1616 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
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 1662 1663 1664 1665 1666 1667 1668 1669 |
# File 'lib/groonga/schema.rb', line 1637 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 |