Module: Familia::Features::Relationships::Indexing::ModelClassMethods
- Defined in:
- lib/familia/features/relationships/indexing.rb
Overview
Indexing::ModelClassMethods
Instance Method Summary collapse
-
#ensure_index_field(target_class, index_name, field_type) ⇒ Object
Ensure proper DataType field is declared for index Similar to ensure_collection_field in participation system.
-
#indexing_relationships ⇒ Object
Get all indexing relationships for this class.
-
#multi_index(field, index_name, within:, query: true) ⇒ Object
Define an indexed_by relationship for fast lookups.
-
#unique_index(field, index_name, within: nil, query: true) ⇒ Object
Define a unique index lookup (1:1 mapping).
Instance Method Details
#ensure_index_field(target_class, index_name, field_type) ⇒ Object
Ensure proper DataType field is declared for index Similar to ensure_collection_field in participation system
139 140 141 142 143 |
# File 'lib/familia/features/relationships/indexing.rb', line 139 def ensure_index_field(target_class, index_name, field_type) return if target_class.method_defined?(index_name) || target_class.respond_to?(index_name) target_class.send(field_type, index_name) end |
#indexing_relationships ⇒ Object
Get all indexing relationships for this class
133 134 135 |
# File 'lib/familia/features/relationships/indexing.rb', line 133 def indexing_relationships @indexing_relationships ||= [] end |
#multi_index(field, index_name, within:, query: true) ⇒ Object
Define an indexed_by relationship for fast lookups
Define a multi-value index (1:many mapping)
98 99 100 101 102 103 104 105 106 |
# File 'lib/familia/features/relationships/indexing.rb', line 98 def multi_index(field, index_name, within:, query: true) MultiIndexGenerators.setup( indexed_class: self, field: field, index_name: index_name, within: within, query: query, ) end |
#unique_index(field, index_name, within: nil, query: true) ⇒ Object
Define a unique index lookup (1:1 mapping)
122 123 124 125 126 127 128 129 130 |
# File 'lib/familia/features/relationships/indexing.rb', line 122 def unique_index(field, index_name, within: nil, query: true) UniqueIndexGenerators.setup( indexed_class: self, field: field, index_name: index_name, within: within, query: query, ) end |