converted replicant to a role so that we can apply it after ensure_connected properly...
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Storage / DBI / Replicated / Replicant.pm
index 22ca9fe..e1e7f8d 100644 (file)
@@ -1,16 +1,14 @@
 package DBIx::Class::Storage::DBI::Replicated::Replicant;
 
-use Moose;
-extends 'DBIx::Class::Storage::DBI', 'Moose::Object';
+use Moose::Role;
 
 =head1 NAME
 
-DBIx::Class::Storage::DBI::Replicated::Replicant; A replicated DBI Storage
+DBIx::Class::Storage::DBI::Replicated::Replicant; A replicated DBI Storage Role
 
 =head1 SYNOPSIS
 
-This class is used internally by L<DBIx::Class::Storage::DBI::Replicated>.  You
-shouldn't need to create instances of this class.
+This class is used internally by L<DBIx::Class::Storage::DBI::Replicated>.
     
 =head1 DESCRIPTION
 
@@ -26,10 +24,46 @@ given master database.
 
 This class defines the following attributes.
 
+=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.
+
+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
+storage driver for more information.
+
+=cut
+
+has 'active' => (
+    is=>'rw',
+    isa=>'Bool',
+    lazy=>1,
+    required=>1,
+    default=>1,
+);
+
 =head1 METHODS
 
 This class defines the following methods.
 
+=head2 after: _query_start
+
+advice iof the _query_start method to add more debuggin
+
+=cut
+
+around '_query_start' => sub {
+       my ($method, $self, $sql, @bind) = @_;
+       my $dsn = $self->connect_info->[0];
+       $self->$method("DSN: $dsn SQL: $sql", @bind);
+};
+
+
 =head1 AUTHOR
 
 John Napiorkowski <john.napiorkowski@takkle.com>
@@ -38,4 +72,6 @@ John Napiorkowski <john.napiorkowski@takkle.com>
 
 You may distribute this code under the same terms as Perl itself.
 
-=cut
\ No newline at end of file
+=cut
+
+1;
\ No newline at end of file