From: Rafael Kitover Date: Sun, 3 May 2009 19:13:06 +0000 (+0000) Subject: C::M::DBIC::Schema - warn on empty schema X-Git-Tag: v0.26~40 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Model-DBIC-Schema.git;a=commitdiff_plain;h=39f5f008313159d879f9934c80cdc58092f62412 C::M::DBIC::Schema - warn on empty schema --- diff --git a/Changes b/Changes index 5ebcbc2..9f6aed9 100644 --- a/Changes +++ b/Changes @@ -1,5 +1,6 @@ Revision history for Perl extension Catalyst::Model::DBIC::Schema + - warn on empty schema - create=dynamic deprecation warning - conversion to Moose (of Model, helper to follow) - cursor caching support (via ::Role::Caching) diff --git a/lib/Catalyst/Model/DBIC/Schema.pm b/lib/Catalyst/Model/DBIC/Schema.pm index 0f2370f..4c3b129 100644 --- a/lib/Catalyst/Model/DBIC/Schema.pm +++ b/lib/Catalyst/Model/DBIC/Schema.pm @@ -7,7 +7,7 @@ with 'MooseX::Object::Pluggable'; our $VERSION = '0.24'; -use Carp::Clan '^Catalyst::Model::DBIC::Schema'; +use Carp::Clan '^Catalyst::Model::DBIC::Schema::'; use Data::Dumper; use DBIx::Class (); use Scalar::Util 'reftype'; @@ -418,7 +418,7 @@ sub BUILD { $self->connect_info($schema_class->storage->connect_info); } else { - croak "Either ->config->{connect_info} must be defined for $class" + die "Either ->config->{connect_info} must be defined for $class" . " or $schema_class must have connect info defined on it." . " Here's what we got:\n" . Dumper($self); @@ -487,7 +487,13 @@ sub _install_rs_models { my $class = $self->_class_name; no strict 'refs'; - foreach my $moniker ($self->schema->sources) { + + my @sources = $self->schema->sources; + + die "No sources found (did you forget to define your tables?)" + unless @sources; + + foreach my $moniker (@sources) { my $classname = "${class}::$moniker"; *{"${classname}::ACCEPT_CONTEXT"} = sub { shift; diff --git a/lib/Catalyst/Model/DBIC/Schema/Role/Caching.pm b/lib/Catalyst/Model/DBIC/Schema/Role/Caching.pm index ba374b5..b540e01 100644 --- a/lib/Catalyst/Model/DBIC/Schema/Role/Caching.pm +++ b/lib/Catalyst/Model/DBIC/Schema/Role/Caching.pm @@ -1,7 +1,7 @@ package Catalyst::Model::DBIC::Schema::Role::Caching; use Moose::Role; -use Carp::Clan '^Catalyst::Model::DBIC::Schema'; +use Carp::Clan '^Catalyst::Model::DBIC::Schema::'; use namespace::clean -except => 'meta'; diff --git a/lib/Catalyst/Model/DBIC/Schema/Role/Replicated.pm b/lib/Catalyst/Model/DBIC/Schema/Role/Replicated.pm index 2ef3c51..dfe5c8f 100644 --- a/lib/Catalyst/Model/DBIC/Schema/Role/Replicated.pm +++ b/lib/Catalyst/Model/DBIC/Schema/Role/Replicated.pm @@ -2,7 +2,7 @@ package Catalyst::Model::DBIC::Schema::Role::Replicated; use Moose::Role; use Moose::Autobox; -use Carp::Clan '^Catalyst::Model::DBIC::Schema'; +use Carp::Clan '^Catalyst::Model::DBIC::Schema::'; use Catalyst::Model::DBIC::Schema::Types 'ConnectInfos'; @@ -60,12 +60,14 @@ after setup => sub { } else { $self->storage_type('::DBI::Replicated'); } + + $self->connect_info->{balancer_type} ||= '::Random'; }; after finalize => sub { my $self = shift; - $self->storage->connect_replicants($self->replicants->flatten); + $self->storage->connect_replicants(map [ $_ ], $self->replicants->flatten); }; =head1 SEE ALSO diff --git a/lib/Catalyst/Model/DBIC/Schema/Types.pm b/lib/Catalyst/Model/DBIC/Schema/Types.pm index 989d502..9b440a2 100644 --- a/lib/Catalyst/Model/DBIC/Schema/Types.pm +++ b/lib/Catalyst/Model/DBIC/Schema/Types.pm @@ -3,10 +3,10 @@ package Catalyst::Model::DBIC::Schema::Types; use MooseX::Types -declare => [qw/ConnectInfo ConnectInfos Replicants SchemaClass/]; +use Carp::Clan '^Catalyst::Model::DBIC::Schema::'; use MooseX::Types::Moose qw/ArrayRef HashRef Str ClassName/; use Scalar::Util 'reftype'; use List::MoreUtils 'all'; -use Carp; use namespace::clean -except => 'meta'; @@ -57,16 +57,16 @@ sub _coerce_connect_info_from_arrayref { for my $i (0..1) { my $extra = shift @$_; last unless $extra; - croak "invalid connect_info" unless reftype $extra eq 'HASH'; + die "invalid connect_info" unless reftype $extra eq 'HASH'; %connect_info = (%connect_info, %$extra); } - croak "invalid connect_info" if @$_; + die "invalid connect_info" if @$_; } elsif (@$_ == 1 && reftype $_->[0] eq 'HASH') { return $_->[0]; } else { - croak "invalid connect_info"; + die "invalid connect_info"; } \%connect_info;