Sha256: 4065ab8fdd8ba810b0df59ce189397aefdfadce751e1a67ba62333b9bfdc4d06

Contents?: true

Size: 836 Bytes

Versions: 22

Compression:

Stored size: 836 Bytes

Contents

# frozen_string_literal: true

class ReeSwagger::BuildSerializerSchema
  include Ree::FnDSL

  fn :build_serializer_schema do
    link :get_serializer_definition
  end

  contract(ReeMapper::Mapper => Nilor[Hash])
  def call(mapper)
    if mapper.type
      return get_serializer_definition(mapper.type, method(:call).to_proc)
    end

    properties = mapper.fields.each_with_object({}) do |(_name, field), acc|
      swagger_field = {}

      field_mapper = field.type
      swagger_type = call(field_mapper)
      swagger_field.merge!(swagger_type) if swagger_type

      description = field.doc
      swagger_field[:description] = description if description

      swagger_field[:nullable] = true if field.null

      acc[field.name] = swagger_field
    end

    {
      type: 'object',
      properties: properties
    }
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
ree_lib-1.0.21 lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_serializer_schema.rb
ree_lib-1.0.20 lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_serializer_schema.rb
ree_lib-1.0.19 lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_serializer_schema.rb
ree_lib-1.0.18 lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_serializer_schema.rb
ree_lib-1.0.17 lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_serializer_schema.rb
ree_lib-1.0.16 lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_serializer_schema.rb
ree_lib-1.0.15 lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_serializer_schema.rb
ree_lib-1.0.14 lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_serializer_schema.rb
ree_lib-1.0.13 lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_serializer_schema.rb
ree_lib-1.0.12 lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_serializer_schema.rb
ree_lib-1.0.11 lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_serializer_schema.rb
ree_lib-1.0.10 lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_serializer_schema.rb
ree_lib-1.0.9 lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_serializer_schema.rb
ree_lib-1.0.8 lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_serializer_schema.rb
ree_lib-1.0.7 lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_serializer_schema.rb
ree_lib-1.0.6 lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_serializer_schema.rb
ree_lib-1.0.5 lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_serializer_schema.rb
ree_lib-1.0.4 lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_serializer_schema.rb
ree_lib-1.0.3 lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_serializer_schema.rb
ree_lib-1.0.2 lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_serializer_schema.rb