}
}
-use Moose;
+use Moo;
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 qw/BalancerClassNamePart DBICSchema DBICStorageDBI/;
-use MooseX::Types::Moose qw/ClassName HashRef Object/;
-use Scalar::Util 'reftype';
+use Types::Standard qw/ClassName HashRef Object/;
+use Type::Utils qw(class_type role_type);
+use Scalar::Util qw(reftype blessed);
+use Sub::Name qw(subname);
use Hash::Merge;
use List::Util qw/min max reduce/;
use Context::Preserve 'preserve_context';
+use Class::Inspector;
use Try::Tiny;
-use namespace::clean -except => 'meta';
+use namespace::clean;
=head1 NAME
has 'pool' => (
is=>'ro',
- isa=>'DBIx::Class::Storage::DBI::Replicated::Pool',
- lazy_build=>1,
+ isa=>class_type('DBIx::Class::Storage::DBI::Replicated::Pool'),
+ lazy=>1,
+ builder=>1,
+ predicate=>1,
+ clearer=>1,
handles=>[qw/
connect_replicants
replicants
has 'balancer' => (
is=>'rw',
- isa=>'DBIx::Class::Storage::DBI::Replicated::Balancer',
- lazy_build=>1,
+ isa=>role_type('DBIx::Class::Storage::DBI::Replicated::Balancer'),
+ lazy=>1,
+ builder=>1,
+ predicate=>1,
+ clearer=>1,
handles=>[qw/auto_validate_every/],
);
has 'master' => (
is=> 'ro',
isa=>DBICStorageDBI,
- lazy_build=>1,
+ lazy=>1,
+ builder=>1,
+ predicate=>1,
+ clearer=>1,
);
=head1 ATTRIBUTES IMPLEMENTING THE DBIx::Storage::DBI INTERFACE
_parse_connect_do
savepoints
_sql_maker_opts
+ _use_multicolumn_in
_conn_pid
_dbh_autocommit
_native_data_type
_execute
_do_query
_dbh_execute
- /, Class::MOP::Class->initialize('DBIx::Class::Storage::DBIHacks')->get_method_list ],
+ /, @{Class::Inspector->functions('DBIx::Class::Storage::DBIHacks')} ],
reader => [qw/
select
select_single
_bind_sth_params
/,(
# the capability framework
- # not sure if CMOP->initialize does evil things to DBIC::S::DBI, fix if a problem
grep
- { $_ =~ /^ _ (?: use | supports | determine_supports ) _ /x }
- ( Class::MOP::Class->initialize('DBIx::Class::Storage::DBI')->get_all_method_names )
+ { $_ =~ /^ _ (?: use | supports | determine_supports ) _ /x and $_ ne '_use_multicolumn_in' }
+ @{Class::Inspector->functions('DBIx::Class::Storage::DBI')}
)],
};
}
for my $method (@{$method_dispatch->{unimplemented}}) {
- __PACKAGE__->meta->add_method($method, sub {
+ no strict 'refs';
+ *{$method} = subname $method, sub {
my $self = shift;
$self->throw_exception("$method() must not be called on ".(blessed $self).' objects');
- });
+ };
}
=head2 read_handler
has 'read_handler' => (
is=>'rw',
isa=>Object,
- lazy_build=>1,
+ lazy=>1,
+ builder=>1,
+ predicate=>1,
+ clearer=>1,
handles=>$method_dispatch->{reader},
);
has 'write_handler' => (
is=>'ro',
isa=>Object,
- lazy_build=>1,
+ lazy=>1,
+ builder=>1,
+ predicate=>1,
+ clearer=>1,
handles=>$method_dispatch->{writer},
);
# Make sure master is blessed into the correct class and apply role to it.
my $master = $self->master;
$master->_determine_driver;
- Moose::Meta::Class->initialize(ref $master);
- DBIx::Class::Storage::DBI::Replicated::WithDSN->meta->apply($master);
+ Moo::Role->apply_roles_to_object(
+ $master,
+ 'DBIx::Class::Storage::DBI::Replicated::WithDSN',
+ );
# link pool back to master
$self->pool->master($master);
=cut
-__PACKAGE__->meta->make_immutable;
-
1;