X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FReplicated.pm;h=a241ff45a37389777aff6415aed17e40ef64afc5;hb=41916570b3a93b05746e23b73c9a9b5005bc0d2e;hp=89979f17d1fab6331de0785b51b0e90c5c5ca3f9;hpb=3e82fc271c93bb64a0d5f5c159f34e3933890f2a;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/DBI/Replicated.pm b/lib/DBIx/Class/Storage/DBI/Replicated.pm index 89979f1..a241ff4 100644 --- a/lib/DBIx/Class/Storage/DBI/Replicated.pm +++ b/lib/DBIx/Class/Storage/DBI/Replicated.pm @@ -7,10 +7,10 @@ BEGIN { ## use, so we explicitly test for these. my %replication_required = ( - Moose => '0.54', + Moose => '0.77', MooseX::AttributeHelpers => '0.12', - Moose::Util::TypeConstraints => '0.54', - Class::MOP => '0.63', + MooseX::Types => '0.10', + namespace::clean => '0.11', ); my @didnt_load; @@ -28,6 +28,10 @@ BEGIN { use DBIx::Class::Storage::DBI; use DBIx::Class::Storage::DBI::Replicated::Pool; use DBIx::Class::Storage::DBI::Replicated::Balancer; +use DBIx::Class::Storage::DBI::Replicated::Types 'BalancerClassNamePart'; +use MooseX::Types::Moose qw/ClassName HashRef Object/; + +use namespace::clean -except => 'meta'; =head1 NAME @@ -99,10 +103,10 @@ to force a query to run against Master when needed. Replicated Storage has additional requirements not currently part of L - Moose => 0.54 + Moose => 0.77 MooseX::AttributeHelpers => 0.12 - Moose::Util::TypeConstraints => 0.54 - Class::MOP => 0.63 + MooseX::Types => 0.10 + namespace::clean => 0.11 You will need to install these modules manually via CPAN or make them part of the Makefile for your distribution. @@ -133,7 +137,7 @@ to: L. has 'pool_type' => ( is=>'ro', - isa=>'ClassName', + isa=>ClassName, required=>1, default=>'DBIx::Class::Storage::DBI::Replicated::Pool', handles=>{ @@ -150,7 +154,7 @@ See L for available arguments. has 'pool_args' => ( is=>'ro', - isa=>'HashRef', + isa=>HashRef, lazy=>1, required=>1, default=>sub { {} }, @@ -164,23 +168,9 @@ choose how to spread the query load across each replicant in the pool. =cut -subtype 'DBIx::Class::Storage::DBI::Replicated::BalancerClassNamePart', - as 'ClassName'; - -coerce 'DBIx::Class::Storage::DBI::Replicated::BalancerClassNamePart', - from 'Str', - via { - my $type = $_; - if($type=~m/^::/) { - $type = 'DBIx::Class::Storage::DBI::Replicated::Balancer'.$type; - } - Class::MOP::load_class($type); - $type; - }; - has 'balancer_type' => ( is=>'ro', - isa=>'DBIx::Class::Storage::DBI::Replicated::BalancerClassNamePart', + isa=>BalancerClassNamePart, coerce=>1, required=>1, default=> 'DBIx::Class::Storage::DBI::Replicated::Balancer::First', @@ -198,7 +188,7 @@ See L for available arguments. has 'balancer_args' => ( is=>'ro', - isa=>'HashRef', + isa=>HashRef, lazy=>1, required=>1, default=>sub { {} }, @@ -265,7 +255,7 @@ Defines an object that implements the read side of L. has 'read_handler' => ( is=>'rw', - isa=>'Object', + isa=>Object, lazy_build=>1, handles=>[qw/ select @@ -282,7 +272,7 @@ Defines an object that implements the write side of L. has 'write_handler' => ( is=>'ro', - isa=>'Object', + isa=>Object, lazy_build=>1, lazy_build=>1, handles=>[qw/ @@ -423,7 +413,7 @@ sub all_storages { my $self = shift @_; return grep {defined $_ && blessed $_} ( $self->master, - $self->replicants, + values %{ $self->replicants }, ); }