Clinton Gormley > Elastic-Model-0.27 > Elastic::Model::TypeMap::Structured

Download:
Elastic-Model-0.27.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 0.27   Source   Latest Release: Elastic-Model-0.50

NAME ^

Elastic::Model::TypeMap::Structured - Type maps for MooseX::Types::Structured

VERSION ^

version 0.27

DESCRIPTION ^

Elastic::Model::TypeMap::Structured provides mapping, inflation and deflation for the MooseX::Types::Structured type constraints. It is loaded automatically byElastic::Model::TypeMap::Default.

TYPES ^

Optional

Optional values are mapped, inflated and deflated according to their content type, eg Optional[Int]. An Optional type with no content type is mapped as <{ type = 'object', enabled => 'no' }>> and the value would be passed through unaltered when deflating/inflating.

Tuple

Because array refs are interpreted by Elasticsearch as multiple values of the same type, tuples are converted to hash refs whose keys are the index number. For instance, a field foo with Tuple[Int,Str] and value [5,'foo'] will be deflated to { 0 => 5, 1 => 'foo' }.

A tuple is mapped as an object, with:

    {
        type       => 'object',
        dynamic    => 'strict',
        properties => \%properties
    }

The %properties mapping depends on the content types. A Tuple without content types is mapped as <{ type = 'object', enabled => 'no' }>> and the value would be passed through unaltered when deflating/inflating.

Dict

A Dict is mapped as an object, with:

    {
        type       => 'object',
        dynamic    => 'strict',
        properties => \%properties
    }

The %properties mapping depends on the content types. A Dict without content types is mapped as <{ type = 'object', enabled => 'no' }>> and the value would be passed through unaltered when deflating/inflating.

Map

It is not advisable to allow arbitrary key names in indexed hashes, as you could end up generating many (and conflicting) field mappings. For this reason, Maps are mapped as { type => 'object', enabled => 0 }. In/deflation depends on the content type (eg Map[Str,Int]). A Map without a content type would pass through the value unaltered when inflating/deflatin.

AUTHOR ^

Clinton Gormley <drtech@cpan.org>

COPYRIGHT AND LICENSE ^

This software is copyright (c) 2013 by Clinton Gormley.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

syntax highlighting: