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

NAME

MongoDBI::Application - MongoDBI Application Class and Document Class Controller

VERSION

version 0.0.6

SYNOPSIS

    package CDDB;

    use MongoDBI;
    
    app {
    
        # shared mongodb connection
        database => {
            name => 'mongodbi_cddb',
            host => 'mongodb://localhost:27017'
        },
    
        # load child doc classes
        classes => {
            self => 1 # loads CDDB::*
        }
    
    };
    
    1;

DESCRIPTION

MongoDBI::Application is used to load and configure associated document classes. It is essentially the application hub (or starting-point). Because all MongoDBI document classes can have their own database configuration, and thus need to be setup individually, MongoDBI::Application can be used to bring those individual classes together to form a single application.

MongoDBI::Application exports the app() method which allows you to configure your application having the configuration applied to all associated document classes. MongoDBI::Application will also load all associated classes and make them available through the class() method after instantiation.

Modeling your database schema will involve learning how models are crafted using MongoDBI::Document, please read that documentation towards getting started. Enjoy!!!

EXPORTS

app

The app method will be exported into the calling class allowing it to configure all associated document classes. MongoDBI::Document classes are designed so that each class may use a different database connection for greater flexibility, however there are times when you will want/need all of your application's document classes to share a single database connection and MongoDBI::Application allows you to do that. MongoDBI::Application can also preload specified classes.

The following examples are recognized parameters the app() method uses to configure your application.

    # share mongodb connection across all document classes
    app {
        
        # shared mongodb connection
        # accepts all parameters MongoDB::Connection does
        database => {
            name => 'mongodbi_cddb',
            host => 'mongodb://localhost:27017'
        }
        
    };
    
    # load desired document classes 
    app {
        
        classes => {
            self => 1, # loads all classes under the current namespace
            load => [
                'Other::Classes',
                'More::Classes',
            ]
        }
        
    };

ATTRIBUTES

config

The config attribute gives you access to the MongoDBI::Application class configuration although it is likely you will never need to used it as the important elements are all exposed via methods.

    my $app = App->new;
    
    $app->config;

METHODS

class

The class method returns the class (string, uninstantiated) for the associated document class registered by the app() method. The class method accepts a class short-name and returns the fully-qualified class name.

    my $app = App->new;
    
    # base class name under same namespace not required (e.g. app_*)
    
    my $foo = $app->class('foo'); # returns App::Foo;
    my $bar = $app->class('bar_baz'); # returns App::BarBaz;
    
    # must specify the base class name on foreign classes
    
    my $xyz = $app->class('app2_xyz'); # returns App2::XYZ;
    
    # if you're a stickler for convention,
    # you can also use case-appropriate syntax
    
    my $foo = $app->class('Foo'); # returns App::Foo;
    my $bar = $app->class('BarBaz'); # returns App::BarBaz;

AUTHOR

Al Newkirk <awncorp@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2011 by awncorp.

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