The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

ElasticSearchX::Model::Generator - Create a suite of ESX::Model classes from an existing mapping.

VERSION

version 0.1.8

SYNOPSIS

  use ElasticSearchX::Model::Generator qw( generate_model );

  my $instance = generate_model(
    mapping_url => 'http://someserver:port/path/_mapping',
    generated_base_class => 'MyModel',
    base_dir => "../path/to/export/dir/"
  );

  for my $document ( $instance->documents ) {
    # Write the document to disk
    $document->write();
    # Alternatively, load the generated document into memory avoiding writing to disk
    $document->evaluate();
  }

DESCRIPTION

ALPHA Code: This class at present only contains code sufficient for very simple package generation for use in creating a model from an existing mapping for the purposes of search.

EXPORTS

generate_model

this is just a sugar syntax for ESX:M:G->new() you can elect to import to make your code slightly shorter.

METHODS

index_names

  @names = $esmg->index_names

returns the names of all indexes specified in the _mapping

index

  $data = $esmg->index('') # If indexes are not in the data set
  $data = $esmg->index('cpan_v1') # if indexes are in the data set

Returns the data set nested under the specified index.

type_names

  @names = $esmg->type_names( $index )
  @names = $esmg->type_names('')  # return all types defined in an index-free dataset.
  @names = $esmg->type_names('cpan_v1') # return all types in the cpan_v1 index.

type

  $data = $esmg->type( $index, $type )
  $data = $esmg->type( '', 'File' )    # get type 'File' from an index-free dataset
  $data = $esmg->type( 'cpan_v1', 'File' )    # get type 'File' from the cpan_v1 index

property_names

  @names = $esmg->property_names( $index, $type )

properties

  $properties = $esmg->properties( $index, $type )

property

  $property = $esmg->property( $index, $type, $propertyname )

documents

  @documents = $esmg->documents(); # all documents for all indexes
  @documents = $esmg->documents('cpan_v1'); # all documents for cpan_v1
  @documents = $esmg->documents(''); # all documents for an index-free dataset.

ATTRIBUTES

mapping_url

  rw, required

base_dir

  rw, required

generator_base_class

  rw, default: ElasticSearchX::Model::Generator

generated_base_class

  rw, default: MyModel

document_generator_class

  lazy

attribute_generator_class

  lazy

typename_translator_class

  lazy

document_generator

  lazy

attribute_generator

  lazy

typename_translator

  lazy

PRIVATE ATTRIBUTES

_mapping_content

  lazy

_ua

  lazy

_mapping_data

  lazy

PRIVATE METHODS

_build__ua

returns an HTTP::Tiny instance.

_build_document_generator_class

  generator_base_class + '::DocumentGenerator'

_build_document_generator

returns an instance of $document_generator_class

_build_attribute_generator_class

  generator_base_class + '::AttributeGenerator'

_build_attribute_generator

returns an instance of $attribute_generator_class

_build_typename_translator_class

  generator_base_class + '::TypenameTranslator'

_build_typename_translator

returns an instance of $typename_translator_class

_build__mapping_content

returns the content of the URL at mapping_url

_build__mapping_data

returns the decoded data from JSON stored in _mapping_content

AUTHOR

Kent Fredric <kentfredric@gmail.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2013 by Kent Fredric <kentfredric@gmail.com>.

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