NAME

MongoDBx::Bread::Board::Container

VERSION

version 0.003

SYNOPSIS

use MongoDBx::Bread::Board::Container;

# create a container

my $c = MongoDBx::Bread::Board::Container->new(
    name            => 'MongoDB',
    host            => $HOST,
    database_layout => {
        test     => [qw[ foo bar ]],
        test_too => [qw[ baz gorch ]]
    }
);

# fetch the 'foo' collection
# from the 'test' database
my $foo = $c->resolve( service => 'MongoDB/test/foo');

# get the MongoDB::Database
# object for the 'test' db
my $test = $c->resolve( service => 'MongoDB/test_dbh');

# get the MongoDB::Connection
# object used for all the above
my $conn = $c->resolve( service => 'MongoDB/connection');

# you can also create the container
# within an existing Bread::Board config

container 'MyProject' => as {

    # embed the Mongo container ...
    container(
        MongoDBx::Bread::Board::Container->new(
            name            => 'MyMongoDB',
            host            => $HOST,
            database_layout => {
                test     => [qw[ foo bar ]],
                test_too => [qw[ baz gorch ]]
            }
        )
    );

    # create services that depend
    # on the MongoDB container
    service 'foobar' => (
        class        => 'FooBar',
        dependencies => {
            collection => 'MyMongoDB/test/foo'
        }
    );
};

DESCRIPTION

This is a subclass of Bread::Board::Container which can be used to provide services for your MongoDB consuming code. It manages your connection and additionally using the database_layout attribute can provide services to access your databases and collections as well.

ATTRIBUTES

name

This is inherited from Bread::Board::Container, this defaults to 'MongoDB' in this container.

host

The hostname passed to MongoDB::Connection, this defaults to 'mongodb://localhost:27017'.

additional_connection_params

If you want to pass additional parameters to the MongoDB::Connection constructor, just supply them here and they will get merged in with the host and port params.

mongo_connection_class

This is the name of the MongoDB connection class, it default to MongoDB::Connection, which is what you want to use most of the time, but if you want something else then you put it here.

database_layout

This is a data structure that represents the databases and collections you want to access. It is a HASH ref where the keys are the database names and the values are ARRAY refs of collection names. The set of sub-containers and services will then be created based on this information. See the SYNOPSIS and the tests for more detailed examples.

This attribute is required.

AUTHOR

Stevan Little <stevan.little@iinteractive.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2012 by Infinity Interactive, Inc..

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