Sha256: 6ddc0d56408c031f65a465aeee221f25be8156c85bc435dafaa89c2182c868f7

Contents?: true

Size: 1.39 KB

Versions: 4

Compression:

Stored size: 1.39 KB

Contents

# frozen_string_literal: true

module Meta
  module Utils
    class RouteDSLBuilders
      class << self
        def merge_meta_options(options1, options2)
          final_options = (options1 || {}).merge(options2 || {})
          if options1[:parameters] && options2[:parameters]
            final_options[:parameters] = options1[:parameters].merge(options2[:parameters])
          end
          if options1[:request_body].is_a?(Meta::JsonSchema::ObjectSchema) && options2[:request_body].is_a?(Meta::JsonSchema::ObjectSchema)
            final_options[:request_body] = options1[:request_body].properties.merge(options2[:request_body].properties)
          end
          if options1[:responses] && options2[:responses]
            final_options[:responses] = options1[:responses].merge(options2[:responses])
          end
          final_options[:scope] = [options1[:scope] || [], options2[:scope] || []].flatten.uniq
          final_options
        end

        def merge_callbacks(parent_callbacks, current_callbacks)
          # 合并父级传递过来的 callbacks,将 before 和 around 放在前面,after 放在后面
          parent_before = parent_callbacks.filter { |cb| cb[:lifecycle] == :before || cb[:lifecycle] == :around }
          parent_after = parent_callbacks.filter { |cb| cb[:lifecycle] == :after }
          parent_before + current_callbacks + parent_after
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
meta-api-0.2.0 lib//meta/utils/route_dsl_builders.rb
meta-api-0.1.2 lib//meta/utils/route_dsl_builders.rb
meta-api-0.1.1 lib//meta/utils/route_dsl_builders.rb
meta-api-0.1.0 lib//meta/utils/route_dsl_builders.rb