Module: MarkMapper::Plugins::Indexable::ClassMethods
- Defined in:
- lib/mark_mapper/plugins/indexable.rb
Instance Method Summary collapse
-
#index(name, options = {}) ⇒ Object
Defines all the MarkLogic indexes for this document.
-
#index_defs ⇒ Object
Get all the defined indexes for this document.
-
#remove_index(name) ⇒ Object
Removes the definition for an index Used for testing.
Instance Method Details
#index(name, options = {}) ⇒ Object
Defines all the MarkLogic indexes for this document
Model.index :first_name, :type => String, :facet => true
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/mark_mapper/plugins/indexable.rb', line 31 def index(name, = {}) [:type] ||= String [:type] = [:type].xs_type if [:type].respond_to?(:xs_type) raise InvalidIndexType, "Invalid index type: #{options[:type]}" unless [Boolean.xs_type, Integer.xs_type, String.xs_type, Float.xs_type].include? [:type] new_index = begin case [:kind] when "field" then MarkLogic::DatabaseSettings::RangeFieldIndex.new(name, ) when "path" then MarkLogic::DatabaseSettings::RangePathIndex.new(name, ) else MarkLogic::DatabaseSettings::RangeElementIndex.new(name, ) end end if !index_defs.has_key?(name.to_s) index_defs[name.to_s] = new_index MarkMapper.application.add_index(new_index) end end |
#index_defs ⇒ Object
Get all the defined indexes for this document
@return[ Hash ] A hash containing all the index definitions
15 16 17 |
# File 'lib/mark_mapper/plugins/indexable.rb', line 15 def index_defs @index_defs ||= {} end |
#remove_index(name) ⇒ Object
Removes the definition for an index Used for testing
Model.remove_index :name
61 62 63 |
# File 'lib/mark_mapper/plugins/indexable.rb', line 61 def remove_index(name) index_defs.delete name.to_s end |