Class: Gitlab::GrapeOpenapi::Models::RequestBody::ParameterSchema

Inherits:
Object
  • Object
show all
Includes:
Concerns::FailFastAnnotatable, Concerns::LimitResolver, Concerns::RegexConverter, Concerns::Serializable, Converters::CoercerResolver
Defined in:
lib/gitlab/grape_openapi/models/request_body/parameter_schema.rb

Constant Summary

Constants included from Concerns::RegexConverter

Concerns::RegexConverter::JS_REGEX_TARGET

Constants included from Concerns::FailFastAnnotatable

Concerns::FailFastAnnotatable::FAIL_FAST_ANNOTATION

Instance Method Summary collapse

Methods included from Concerns::RegexConverter

#regexp_to_pattern

Methods included from Converters::CoercerResolver

#build_coerced_schema, #coercer_mapping_for

Constructor Details

#initialize(route:, key:, param_options:) ⇒ ParameterSchema

Returns a new instance of ParameterSchema.



14
15
16
17
18
19
# File 'lib/gitlab/grape_openapi/models/request_body/parameter_schema.rb', line 14

def initialize(route:, key:, param_options:)
  @route = route
  @key = key
  @param_options = param_options
  @validations = validations_for(key.to_sym)
end

Instance Method Details

#buildObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/gitlab/grape_openapi/models/request_body/parameter_schema.rb', line 21

def build
  fail_fast = fail_fast_in_validations?(validations)
  @param_options = param_options.merge(fail_fast: fail_fast) if fail_fast
  built_schema = build_raw_type_schema

  unless built_schema
    object_type = Converters::TypeResolver.resolve_type(param_options[:type]) || 'string'
    object_format = Converters::TypeResolver.resolve_format(nil, param_options[:type])
    built_schema = build_resolved_schema(object_type, object_format)
  end

  apply_allow_blank(built_schema)
  apply_limit!(built_schema, validations)
  built_schema
end