Module: ParadeDB::Model::ClassMethods
- Defined in:
- lib/parade_db/model.rb
Instance Method Summary collapse
- #aggregate_by(*group_fields, exact: nil, **named_aggregations) ⇒ Object
- #facets(*fields, **opts) ⇒ Object
- #facets_agg(**named_aggregations) ⇒ Object
- #more_like_this(key, fields: nil, **options) ⇒ Object
- #paradedb_arel ⇒ Object
- #paradedb_index(index_class) ⇒ Object
- #paradedb_index_class ⇒ Object
- #paradedb_index_classes ⇒ Object
- #paradedb_index_name ⇒ Object
- #paradedb_indexed_fields ⇒ Object
- #paradedb_key_field ⇒ Object
- #paradedb_search(column) ⇒ Object
- #paradedb_validate_index! ⇒ Object
- #with_agg(**named_aggregations) ⇒ Object
- #with_facets(*fields, **opts) ⇒ Object
Instance Method Details
#aggregate_by(*group_fields, exact: nil, **named_aggregations) ⇒ Object
94 95 96 97 98 99 100 101 102 |
# File 'lib/parade_db/model.rb', line 94 def aggregate_by(*group_fields, exact: nil, **named_aggregations) ensure_postgres! paradedb_validate_index! all.extending(SearchMethods).aggregate_by( *group_fields, exact: exact, **named_aggregations ) end |
#facets(*fields, **opts) ⇒ Object
76 77 78 79 80 |
# File 'lib/parade_db/model.rb', line 76 def facets(*fields, **opts) ensure_postgres! paradedb_validate_index! all.extending(SearchMethods).facets(*fields, **opts) end |
#facets_agg(**named_aggregations) ⇒ Object
88 89 90 91 92 |
# File 'lib/parade_db/model.rb', line 88 def facets_agg(**named_aggregations) ensure_postgres! paradedb_validate_index! all.extending(SearchMethods).facets_agg(**named_aggregations) end |
#more_like_this(key, fields: nil, **options) ⇒ Object
64 65 66 67 68 |
# File 'lib/parade_db/model.rb', line 64 def more_like_this(key, fields: nil, **) ensure_postgres! paradedb_validate_index! all.extending(SearchMethods).more_like_this(key, fields: fields, **) end |
#paradedb_arel ⇒ Object
104 105 106 107 |
# File 'lib/parade_db/model.rb', line 104 def paradedb_arel ensure_postgres! @paradedb_arel ||= ParadeDB::Arel::Builder.new(table_name) end |
#paradedb_index(index_class) ⇒ Object
109 110 111 112 113 114 115 |
# File 'lib/parade_db/model.rb', line 109 def paradedb_index(index_class) @paradedb_explicit_index_classes ||= [] @paradedb_explicit_index_classes << index_class unless @paradedb_explicit_index_classes.include?(index_class) remove_instance_variable(:@paradedb_index_class) if instance_variable_defined?(:@paradedb_index_class) remove_instance_variable(:@paradedb_index_definition) if instance_variable_defined?(:@paradedb_index_definition) index_class end |
#paradedb_index_class ⇒ Object
126 127 128 129 130 |
# File 'lib/parade_db/model.rb', line 126 def paradedb_index_class return @paradedb_index_class if instance_variable_defined?(:@paradedb_index_class) @paradedb_index_class = paradedb_index_classes.first end |
#paradedb_index_classes ⇒ Object
117 118 119 120 121 122 123 124 |
# File 'lib/parade_db/model.rb', line 117 def paradedb_index_classes if instance_variable_defined?(:@paradedb_explicit_index_classes) && !@paradedb_explicit_index_classes.empty? @paradedb_explicit_index_classes.dup else klass = resolve_paradedb_index_class klass ? [klass] : [] end end |
#paradedb_index_name ⇒ Object
144 145 146 147 |
# File 'lib/parade_db/model.rb', line 144 def paradedb_index_name definition = paradedb_index_definition definition&.index_name end |
#paradedb_indexed_fields ⇒ Object
132 133 134 135 136 137 |
# File 'lib/parade_db/model.rb', line 132 def paradedb_indexed_fields definition = paradedb_index_definition return [] if definition.nil? definition.entries.map(&:query_key).uniq end |
#paradedb_key_field ⇒ Object
139 140 141 142 |
# File 'lib/parade_db/model.rb', line 139 def paradedb_key_field definition = paradedb_index_definition definition&.key_field end |
#paradedb_search(column) ⇒ Object
59 60 61 62 |
# File 'lib/parade_db/model.rb', line 59 def paradedb_search(column) ensure_postgres! all.extending(SearchMethods).search(column) end |
#paradedb_validate_index! ⇒ Object
149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
# File 'lib/parade_db/model.rb', line 149 def paradedb_validate_index! return true if ParadeDB.index_validation_mode == :off classes = paradedb_index_classes return true if classes.empty? all_valid = true classes.each do |klass| definition = klass.compiled_definition next if paradedb_catalog_index_valid?(definition) all_valid = false = "ParadeDB index drift detected for #{name}: expected #{definition.index_name} on #{definition.table_name} with bm25." case ParadeDB.index_validation_mode when :warn paradedb_log_warn() when :raise raise ParadeDB::IndexDriftError, end end all_valid end |
#with_agg(**named_aggregations) ⇒ Object
82 83 84 85 86 |
# File 'lib/parade_db/model.rb', line 82 def with_agg(**named_aggregations) ensure_postgres! paradedb_validate_index! all.extending(SearchMethods).with_agg(**named_aggregations) end |
#with_facets(*fields, **opts) ⇒ Object
70 71 72 73 74 |
# File 'lib/parade_db/model.rb', line 70 def with_facets(*fields, **opts) ensure_postgres! paradedb_validate_index! all.extending(SearchMethods).with_facets(*fields, **opts) end |