The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strictures 1;
package Mojito::Model::Doc;
{
  $Mojito::Model::Doc::VERSION = '0.21';
}
use Mojito::Model::Doc::Mongo;
use Mojito::Model::Doc::Deep;
use Moo;
use Data::Dumper::Concise;

has 'doc' => (
    is => 'ro',
    lazy => 1,
    writer => '_set_doc',
    handles =>  [ qw( get_most_recent_docs get_feed_docs get_collections get_collection_pages get_docs_for_month) ],
);

sub BUILD {
    my ($self, $constructor_args_href) = @_;
    
    # Determine the document store backend from the configuration
    my $doc_storage = ucfirst lc $constructor_args_href->{config}->{document_storage};
    my $delegatee = __PACKAGE__ . '::' . $doc_storage;
    $self->_set_doc($delegatee->new($constructor_args_href));
}

1;