X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Model-DBIC-Schema.git;a=blobdiff_plain;f=lib%2FCatalyst%2FModel%2FDBIC%2FSchema.pm;h=a0dc60e4192c3a68324aa1a60a6ccae3f979fb9d;hp=161021cc69dce7f1c2c58a3a62696438a10ba18b;hb=0f64d02c0dbd5e4ac6a69c4799f28e2b15a94731;hpb=45b101914d8e7130178e9f9748deda25992b6317 diff --git a/lib/Catalyst/Model/DBIC/Schema.pm b/lib/Catalyst/Model/DBIC/Schema.pm index 161021c..a0dc60e 100644 --- a/lib/Catalyst/Model/DBIC/Schema.pm +++ b/lib/Catalyst/Model/DBIC/Schema.pm @@ -5,7 +5,7 @@ use mro 'c3'; extends 'Catalyst::Model'; with 'CatalystX::Component::Traits'; -our $VERSION = '0.61'; +our $VERSION = '0.65'; $VERSION = eval $VERSION; use namespace::autoclean; @@ -17,7 +17,7 @@ use Module::Runtime qw/use_module/; use Catalyst::Model::DBIC::Schema::Types qw/ConnectInfo SchemaClass Schema/; -use MooseX::Types::Moose qw/Str/; +use MooseX::Types::Moose qw/Str Bool/; use MooseX::Types::LoadableClass qw/LoadableClass/; =head1 NAME @@ -306,6 +306,17 @@ Traits that come with the distribution: =back +=head2 compose_namespaces + +This model calls L by default to +install classes into the model namespaces. You can turn that off by +setting this attribute to false. Default is true. + +=head2 install_model_shortcuts + +If you don't want shortcut models so you can do e.g. C<< $c->model('DB::Book') +>> set this attribute to false, Default is true. + =head2 storage_type Allows the use of a different C than what is set in your @@ -376,10 +387,13 @@ schema->resultset, schema->source, and schema->class. =head2 composed_schema Accessor which returns the composed schema, which has no connection info, -which was used in constructing the C above. Useful for creating +which was used in constructing the L. Useful for creating new connections based on the same schema/model. There are direct shortcuts from the model object for composed_schema->clone and composed_schema->connect +If L is not true, L is equivalent to +C<< $model->schema_class->clone >>. + =head2 clone Shortcut for ->composed_schema->clone @@ -422,6 +436,10 @@ has schema_class => ( required => 1 ); +has compose_namespaces => (is => 'ro', isa => Bool, default => 1 ); + +has install_model_shortcuts => (is => 'ro', isa => Bool, default => 1 ); + has storage_type => (is => 'rw', isa => Str); has connect_info => (is => 'rw', isa => ConnectInfo, coerce => 1); @@ -476,8 +494,13 @@ sub BUILD { my $is_installed = defined $self->composed_schema; - $self->composed_schema($schema_class->compose_namespace($class)) - unless $is_installed; + if (not $is_installed) { + $self->composed_schema($self->compose_namespaces ? + $schema_class->compose_namespace($class) + : + $schema_class->clone + ); + } $self->schema($self->composed_schema->clone) unless $self->schema; @@ -487,7 +510,9 @@ sub BUILD { $self->schema->connection($self->connect_info); - $self->_install_rs_models unless $is_installed; + if ((not $is_installed) && $self->install_model_shortcuts) { + $self->_install_rs_models; + } } sub clone { shift->composed_schema->clone(@_); }