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.
1642 1643 1644 1645 1646 1647 1648 |
# File 'lib/groonga/schema.rb', line 1642 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.
1639 1640 1641 |
# File 'lib/groonga/schema.rb', line 1639 def name @name end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
1640 1641 1642 |
# File 'lib/groonga/schema.rb', line 1640 def @options end |
#target_columns ⇒ Object
Returns the value of attribute target_columns.
1639 1640 1641 |
# File 'lib/groonga/schema.rb', line 1639 def target_columns @target_columns end |
#target_table ⇒ Object
Returns the value of attribute target_table.
1639 1640 1641 |
# File 'lib/groonga/schema.rb', line 1639 def target_table @target_table end |
Class Method Details
.column_name(context, target_table, target_columns) ⇒ Object
1624 1625 1626 1627 |
# File 'lib/groonga/schema.rb', line 1624 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
1629 1630 1631 1632 1633 1634 1635 1636 |
# File 'lib/groonga/schema.rb', line 1629 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
1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 |
# File 'lib/groonga/schema.rb', line 1650 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 |