lib/services/wallaby/map.rb in wallaby-5.1.5 vs lib/services/wallaby/map.rb in wallaby-5.1.6

- old
+ new

@@ -1,90 +1,128 @@ module Wallaby - # Global storage of all the maps for model classes + # @private + # Global mappings class Map - # { model => mode } - def self.mode_map - @mode_map ||= ModeMapper.new(Mode.descendants).map.freeze - end + class << self + # { model => mode } + # @return [Hash] { model => mode } + def mode_map + @mode_map ||= ModeMapper.new(Mode.descendants).map.freeze + end - # [ model classes ] - def self.model_classes - @model_classes ||= - ModelClassCollector.new(::Wallaby.configuration).collect.freeze - end + # @return [Array] [ model classes ] + def model_classes + @model_classes ||= ModelClassCollector.new(configuration).collect.freeze + end - # { model => controller } - def self.controller_map(model_class) - @controller_map ||= ModelClassMapper.new(ResourcesController).map - @controller_map[model_class] ||= ResourcesController - end + # { model => controller } + # @param model_class [Class] + # @return [Class] controller class + # default to `mapping.resources_controller` + def controller_map(model_class) + @controller_map ||= + ModelClassMapper.new(mapping.resources_controller).map + @controller_map[model_class] ||= mapping.resources_controller + end - # { model => model decorator } - def self.model_decorator_map(model_class) - @model_decorator_map ||= {} - @model_decorator_map[model_class] ||= begin - mode = mode_map[model_class] - mode.model_decorator.new model_class if mode + # { model => model decorator } + # @param model_class [Class] + # @return [Wallaby::ModelDecorator] model decorator instance + def model_decorator_map(model_class) + @model_decorator_map ||= {} + @model_decorator_map[model_class] ||= begin + mode = mode_map[model_class] + mode.model_decorator.new model_class if mode # rubocop:disable Style/SafeNavigation, Metrics/LineLength + end end - end - # { model => resource decorator } - def self.resource_decorator_map(model_class) - @resource_decorator_map ||= ModelClassMapper.new(ResourceDecorator).map - @resource_decorator_map[model_class] ||= begin - ResourceDecorator if mode_map[model_class] + # { model => resource decorator } + # @param model_class [Class] + # @return [Class] resource decorator class + # default to `mapping.resource_decorator` + def resource_decorator_map(model_class) + @resource_decorator_map ||= + ModelClassMapper.new(mapping.resource_decorator).map + @resource_decorator_map[model_class] ||= begin + mapping.resource_decorator if mode_map[model_class] + end end - end - # { model => servicer } - def self.servicer_map(model_class) - @servicer_map ||= ModelClassMapper.new(ModelServicer).map - @servicer_map[model_class] ||= begin - ModelServicer if mode_map[model_class] + # { model => servicer } + # @param model_class [Class] + # @return [Class] resource servicer class + # default to `mapping.resource_servicer` + def servicer_map(model_class) + @servicer_map ||= ModelClassMapper.new(mapping.model_servicer).map + @servicer_map[model_class] ||= begin + mapping.model_servicer if mode_map[model_class] + end end - end - # { model => service_provider } - def self.service_provider_map(model_class) - @service_provider_map ||= {} - @service_provider_map[model_class] ||= begin - mode = mode_map[model_class] - mode.model_service_provider.new model_class if mode + # { model => service_provider } + # @param model_class [Class] + # @return [Wallaby::ModelServiceProvider] model service provider instance + def service_provider_map(model_class) + @service_provider_map ||= {} + @service_provider_map[model_class] ||= begin + mode = mode_map[model_class] + mode.model_service_provider.new model_class if mode # rubocop:disable Style/SafeNavigation, Metrics/LineLength + end end - end - # { model => paginator } - def self.paginator_map(model_class) - @paginator_map ||= ModelClassMapper.new(ResourcePaginator).map - @paginator_map[model_class] ||= begin - ResourcePaginator if mode_map[model_class] + # { model => paginator } + # @param model_class [Class] + # @return [Hash] { model => paginator } + def paginator_map(model_class) + @paginator_map ||= ModelClassMapper.new(mapping.resource_paginator).map + @paginator_map[model_class] ||= begin + mapping.resource_paginator if mode_map[model_class] + end end - end - # { model => pagination_provider } - def self.pagination_provider_map(model_class) - @pagination_provider_map ||= {} - @pagination_provider_map[model_class] ||= - mode_map[model_class].try(:model_pagination_provider) - end + # { model => pagination_provider } + # @param model_class [Class] + # @return [Class] model pagination provider class + def pagination_provider_map(model_class) + @pagination_provider_map ||= {} + @pagination_provider_map[model_class] ||= + mode_map[model_class].try(:model_pagination_provider) + end - # { model => resources name } - def self.resources_name_map(model_class) - @resources_name_map ||= {} - @resources_name_map[model_class] ||= Utils.to_resources_name model_class - end + # { model => resources name } + # @param model_class [Class] + # @return [String] resources name + def resources_name_map(model_class) + @resources_name_map ||= {} + @resources_name_map[model_class] ||= Utils.to_resources_name model_class + end - # { resources name => model } - def self.model_class_map(resources_name) - @model_class_map ||= {} - @model_class_map[resources_name] ||= Utils.to_model_class resources_name - end + # { resources name => model } + # @param resources_name [String] + # @return [Class] model class + def model_class_map(resources_name) + @model_class_map ||= {} + @model_class_map[resources_name] ||= Utils.to_model_class resources_name + end - # Clear all the class variables to nil - def self.clear - @mode_map, @model_classes, @controller_map, @model_decorator_map, - @resource_decorator_map, @servicer_map, @service_provider_map, - @paginator_map, @pagination_provider_map, @model_class_map, - @resources_name_map = [] + # Clear all the class variables to nil + def clear + @mode_map, @model_classes, @controller_map, @model_decorator_map, + @resource_decorator_map, @servicer_map, @service_provider_map, + @paginator_map, @pagination_provider_map, @model_class_map, + @resources_name_map = [] + end + + private + + # shorthand method + def configuration + ::Wallaby.configuration + end + + # shorthand method + def mapping + configuration.mapping + end end end end