Class: ParadeDB::Index::DefinitionCompiler
- Inherits:
-
Object
- Object
- ParadeDB::Index::DefinitionCompiler
- Defined in:
- lib/parade_db/index.rb
Overview
Consumed by migration helpers; validates and normalizes the DSL class
Defined Under Namespace
Constant Summary collapse
- FIELD_OPTION_KEYS =
%i[fast record normalizer expand_dots].freeze
Class Method Summary collapse
Class Method Details
.compile!(klass) ⇒ Object
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/parade_db/index.rb', line 102 def compile!(klass) table_name = require_symbol!(klass.table_name, "table_name") key_field = require_symbol!(klass.key_field, "key_field") index_name = klass.index_name.to_s raise InvalidIndexDefinition, "index_name must be present" if index_name.strip.empty? raw_fields = klass.fields entries, = build_entries(raw_fields) if entries.empty? raise InvalidIndexDefinition, "fields must include at least one indexed field" end = (klass.) validate_key_field_shape!(key_field.to_s, entries) validate_query_key_collisions!(entries) Compiled.new( table_name: table_name, key_field: key_field, index_name: index_name, entries: entries, index_options: , field_options: , where: klass.where ) end |