class LittleWeasel::Services::DictionaryMetadataService

This class provides methods for managing and manipulating the dictionary metadata associated with the given dictionary, (dictionary_key) for the supplied metadata_key.

Attributes

dictionary_metadata[RW]

Public Class Methods

init(dictionary_metadata:) click to toggle source

This method initializes the dictionary_metadata object to its initialized state - all data is lost, but the object reference is maintained.

# File lib/LittleWeasel/services/dictionary_metadata_service.rb, line 44
def init(dictionary_metadata:)
  Modules::DictionaryMetadataValidatable.validate dictionary_metadata: dictionary_metadata

  dictionary_metadata.each_key { |key| dictionary_metadata.delete(key) }
  dictionary_metadata
end
init?(dictionary_metadata:) click to toggle source

Returns true if the dictionary metadata is initialized; that is, if it's in the same state the dictionary metadata would be in if init were called.

# File lib/LittleWeasel/services/dictionary_metadata_service.rb, line 54
def init?(dictionary_metadata:)
  Modules::DictionaryMetadataValidatable.validate dictionary_metadata: dictionary_metadata

  initialized_dictionary_metadata = init(dictionary_metadata: {})
  dictionary_metadata.eql?(initialized_dictionary_metadata)
end
Also aliased as: initialized?
initialized?(dictionary_metadata:)
Alias for: init?
new(dictionary_key:, dictionary_cache:, dictionary_metadata:) click to toggle source

@example metadata Hash structure:

{
  <dictionary_id!> =>
    {
      :<metadata_key> => <metadata_object>
    },
    ...
  }
}
# File lib/LittleWeasel/services/dictionary_metadata_service.rb, line 29
def initialize(dictionary_key:, dictionary_cache:, dictionary_metadata:)
  validate_dictionary_key dictionary_key: dictionary_key
  self.dictionary_key = dictionary_key

  validate_dictionary_cache dictionary_cache: dictionary_cache
  self.dictionary_cache = dictionary_cache

  validate_dictionary_metadata dictionary_metadata: dictionary_metadata
  self.dictionary_metadata = dictionary_metadata
end

Public Instance Methods

dictionary_metadata?(metadata_key:) click to toggle source

This method will return true if metadata exists for the dictionary associated with the given dictionary key, for the given metadata key.

# File lib/LittleWeasel/services/dictionary_metadata_service.rb, line 75
def dictionary_metadata?(metadata_key:)
  dictionary_metadata.dig(dictionary_id, metadata_key)&.present? || false
end
get_dictionary_metadata(metadata_key:) click to toggle source
# File lib/LittleWeasel/services/dictionary_metadata_service.rb, line 79
def get_dictionary_metadata(metadata_key:)
  dictionary_metadata.dig(dictionary_id!, metadata_key)
end
init(metadata_key:) click to toggle source

This method initializes the dictionary metadata for dictionary metadata associated with the dictionary_id! and metadata_key.

# File lib/LittleWeasel/services/dictionary_metadata_service.rb, line 65
def init(metadata_key:)
  metadata = dictionary_metadata[dictionary_id!]
  metadata&.delete(metadata_key)
  metadata = dictionary_metadata_init_if
  metadata[metadata_key] = nil
  self
end
set_dictionary_metadata(value:, metadata_key:) click to toggle source
# File lib/LittleWeasel/services/dictionary_metadata_service.rb, line 83
def set_dictionary_metadata(value:, metadata_key:)
  dictionary_metadata[dictionary_id!][metadata_key] = value
  self
end

Private Instance Methods

dictionary_id() click to toggle source
# File lib/LittleWeasel/services/dictionary_metadata_service.rb, line 105
def dictionary_id
  dictionary_cache_service.dictionary_id
end
dictionary_id!() click to toggle source
# File lib/LittleWeasel/services/dictionary_metadata_service.rb, line 109
def dictionary_id!
  dictionary_cache_service.dictionary_id!
end
dictionary_metadata_init_if() click to toggle source

This method initializes the metadata for the dictionary_id! if it is not already initialized. The metadata for the given dictionary_id! is returned.

# File lib/LittleWeasel/services/dictionary_metadata_service.rb, line 99
def dictionary_metadata_init_if
  return dictionary_metadata[dictionary_id!] unless dictionary_metadata_init_needed?

  dictionary_metadata[dictionary_id!] = {}
end
dictionary_metadata_init_needed?() click to toggle source
# File lib/LittleWeasel/services/dictionary_metadata_service.rb, line 92
def dictionary_metadata_init_needed?
  dictionary_metadata[dictionary_id!].blank?
end