Module: DatabaseValidations::UniquenessKeyExtractor
- Defined in:
- lib/database_validations/lib/uniqueness_key_extractor.rb
Class Method Summary collapse
- .attribute_by_columns_keys(validator) ⇒ Hash
- .attribute_by_indexes_keys(validator) ⇒ Hash
- .attribute_by_key(validator) ⇒ Hash
Class Method Details
.attribute_by_columns_keys(validator) ⇒ Hash
8 9 10 11 12 |
# File 'lib/database_validations/lib/uniqueness_key_extractor.rb', line 8 def attribute_by_columns_keys(validator) validator.attributes.map do |attribute| [KeyGenerator.for_db_uniqueness(attribute, Array.wrap(validator.[:scope])), attribute] end.to_h end |
.attribute_by_indexes_keys(validator) ⇒ Hash
17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/database_validations/lib/uniqueness_key_extractor.rb', line 17 def attribute_by_indexes_keys(validator) # rubocop:disable Metrics/AbcSize adapter = Adapters::BaseAdapter.new(validator.klass) if validator.index_name [[KeyGenerator.for_unique_index(validator.index_name), validator.attributes[0]]].to_h else validator.attributes.map do |attribute| columns = KeyGenerator.unify_columns(attribute, validator.[:scope]) index = adapter.find_unique_index(columns, validator.where) [KeyGenerator.for_unique_index(index.name), attribute] end.to_h end end |
.attribute_by_key(validator) ⇒ Hash
34 35 36 |
# File 'lib/database_validations/lib/uniqueness_key_extractor.rb', line 34 def attribute_by_key(validator) attribute_by_columns_keys(validator).merge(attribute_by_indexes_keys(validator)) end |