Sha256: bbed2c34eca44d4fb23d1a88c8637f429164a2fe199ac73226f34ea409971bdb
Contents?: true
Size: 1.73 KB
Versions: 33
Compression:
Stored size: 1.73 KB
Contents
module Appfuel module Repository class StorageMap attr_reader :domain_name, :container_name, :entries, :storage_type, :storage_key def initialize(data) fail "Mapping data must be a hash" unless data.is_a?(Hash) @container_name = data[:container] @domain_name = data.fetch(:domain_name) { domain_name_failure }.to_s @storage_type = data.fetch(:storage_type) { storage_type_failure } @storage_key = data.fetch(:storage_key) { storage_key_failure } @entries = data.fetch(:entries) { entries_failure } end def storage_attr(domain_attr) entries.each do |data| return data[:storage_attr] if data[:domain_attr] == domain_attr end fail "[storage_map #{domain_name}] #{domain_attr} not registered" end def domain_attr(storage_attr) entries.each do |data| return data[:domain_attr] if data[:storage_attr] == storage_attr end fail "[storage_map #{domain_name}] #{storage_attr} not registered" end def each entries.each do |data| yield data[:domain_attr], data[:storage_attr], data[:skip] end end private def domain_name_failure fail "Fully qualified domain name is required" end def storage_type_failure domain_failure("storage_type is required for storage map") end def storage_key_failure domain_failure(":storage_key is required for storage map") end def entries_failure domain_failure(":mapping_entries are required for storage map") end def domain_failure(msg) fail "[#{domain_name}] #{msg}" end end end end
Version data entries
33 entries across 33 versions & 1 rubygems