Module: Persistence::Object::Index::BlockIndex::BlockIndexInterface

Includes:
CascadingConfiguration::Array, CascadingConfiguration::Setting, Persistence::Object::Index
Included in:
Persistence::Object::Index::BlockIndex, Port::Bucket::BucketIndex
Defined in:
lib/persistence/object/index/block_index/block_index_interface.rb

Overview

Interface for block index instances, which index keys provided by running a Proc on an object instance.

Instance Attribute Summary

Attributes included from Persistence::Object::Index

#parent_bucket

Instance Method Summary collapse

Methods included from Persistence::Object::Index

#adapter_index, #atomic_cursor, #count, #cursor, #delete_keys_for_object!, #delete_keys_for_object_id!, #disable, #each, #get_object_id, #index_existing_objects, #index_object_id, #init_sorting_procs, #initialize_for_bucket, #name, #permits_duplicates?, #persisted?, #sorting_proc_for_sort_name

Instance Method Details

#index_object(object) ⇒ Object

Index keys for object instance.

Parameters:

  • object (Object)

    Object to index.



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/persistence/object/index/block_index/block_index_interface.rb', line 78

def index_object( object )

  # get key(s) from block(s)
  keys = [ ]
  indexing_procs.each do |this_indexing_proc|

    if block_return = object.instance_eval( & this_indexing_proc ) or
       permits_nil_keys?

      keys.push( block_return )

    end

  end

  if keys.empty?

    if requires_keys
      raise ::Persistence::Exception::IndexingBlockFailedToGenerateKeys.new,
            'Index block failed to generate keys, which were required.'      
    end

  else
    
    super( object, *keys )

  end
  
  return self
  
end

#indexing_procsCompositingArray<Proc>

Procs used to generate keys.

Returns:

  • (CompositingArray<Proc>)

    Procs for key generation.



67
# File 'lib/persistence/object/index/block_index/block_index_interface.rb', line 67

attr_array  :indexing_procs

#initialize(index_name, parent_bucket, permits_duplicates = nil, sorting_proc_or_sort_names = nil, duplicates_sorting_proc_or_sort_names = nil, ancestor_index_instance = nil) {|object| ... } ⇒ Object

Yields:

  • (object)

    Block to create index keys on object.

Yield Parameters:

  • object (Object)

    Object to index.



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/persistence/object/index/block_index/block_index_interface.rb', line 17

def initialize( index_name, 
                parent_bucket, 
                permits_duplicates = nil, 
                sorting_proc_or_sort_names = nil, 
                duplicates_sorting_proc_or_sort_names = nil,
                ancestor_index_instance = nil,
                & indexing_block )
  
  super
  
  if block_given?
    indexing_procs.push( indexing_block )
  elsif indexing_procs.empty?
    raise ::Persistence::Exception::BlockRequired, 'Block required for index.'
  end
  
      
end

#permits_nil_keys?true, false

Whether index permits nil keys be generated when block is run.

Returns:

  • (true, false)

    Whether keys must be non-nil.



56
# File 'lib/persistence/object/index/block_index/block_index_interface.rb', line 56

attr_setting  :permits_nil_keys?

#requires_keystrue, false

Whether index requires keys be generated when block is run.

Returns:

  • (true, false)

    Whether keys must be generated.



45
# File 'lib/persistence/object/index/block_index/block_index_interface.rb', line 45

attr_setting  :requires_keys