package DBIx::Class::Storage::DBI::Replicated::Replicant;
-use Moose::Role;
+use Moo::Role;
+use DBIx::Class::Storage::DBI::Replicated::Types
+ qw(Boolean DBICStorageDBI Defined);
+
requires qw/_query_start/;
with 'DBIx::Class::Storage::DBI::Replicated::WithDSN';
-use MooseX::Types::Moose 'Bool';
-
-use namespace::clean -except => 'meta';
=head1 NAME
=head2 active
This is a boolean which allows you to programmatically activate or deactivate a
-replicant from the pool. This way to you do stuff like disallow a replicant
-when it get's too far behind the master, if it stops replicating, etc.
+replicant from the pool. This way you can do stuff like disallow a replicant
+when it gets too far behind the master, if it stops replicating, etc.
This attribute DOES NOT reflect a replicant's internal status, i.e. if it is
properly replicating from a master and has not fallen too many seconds behind a
reliability threshold. For that, use L</is_replicating> and L</lag_behind_master>.
Since the implementation of those functions database specific (and not all DBIC
-supported DB's support replication) you should refer your database specific
+supported DBs support replication) you should refer your database-specific
storage driver for more information.
=cut
has 'active' => (
is=>'rw',
- isa=>Bool,
+ isa=>Boolean,
lazy=>1,
required=>1,
- default=>1,
+ default=> sub {1},
+);
+
+has dsn => (is => 'rw', isa => Defined(err=>sub{"'dsn' must be defined"}));
+has id => (is => 'rw', isa => Defined(err=>sub{"'id' must be defined"}));
+
+=head2 master
+
+Reference to the master Storage.
+
+=cut
+
+has master => (
+ is => 'rw',
+ isa =>DBICStorageDBI,
+ weak_ref => 1,
);
=head1 METHODS
=cut
sub debugobj {
- return shift->schema->storage->debugobj;
+ (shift)->master->debugobj;
}
=head1 ALSO SEE
=head1 AUTHOR
-John Napiorkowski <john.napiorkowski@takkle.com>
+John Napiorkowski <jjnapiork@cpan.org>
=head1 LICENSE