my $class = shift;
my $args = shift;
- my $clear_line = $args->{clear_line} || "\r\e[J";
+ my $clear_line = $args->{clear_line} || "\r\x1b[J";
my $executing = $args->{executing} || (
eval { require Term::ANSIColor } ? do {
my $c = \&Term::ANSIColor::color;
my $use_placeholders = !!$self->_sqlat->fill_in_placeholders;
- # DBIC pre-quotes bindargs
- $bindargs = [map { s/^'//; s/'$//; $_ } @{$bindargs}] if $use_placeholders;
-
my $sqlat = $self->_sqlat;
my $formatted;
if ($self->squash_repeats && $self->_last_sql eq $string) {
sub query_start {
my ($self, $string, @bind) = @_;
- if(defined $self->callback) {
+ if (defined $self->callback) {
$string =~ m/^(\w+)/;
$self->callback->($1, "$string: ".join(', ', @bind)."\n");
return;
=pod
-=head1 SYNOPSIS
+=head1 NAME
- package MyApp::Schema;
+DBIx::Class::Storage::Debug::PrettyPrint - Pretty Printing DebugObj
- use parent 'DBIx::Class::Schema';
+=head1 SYNOPSIS
- use DBIx::Class::Storage::Debug::PrettyPrint;
+ DBIC_TRACE_PROFILE=~/dbic.json perl -Ilib ./foo.pl
- __PACKAGE__->load_namespaces;
+Where dbic.json contains:
- my $pp = DBIx::Class::Storage::Debug::PrettyPrint->new({
- profile => 'console',
- });
+ {
+ "profile":"console",
+ "show_progress":1,
+ "squash_repeats":1
+ }
- sub connection {
- my $self = shift;
+=head1 METHODS
- my $ret = $self->next::method(@_);
+=head2 new
- $self->storage->debugobj($pp);
+ my $pp = DBIx::Class::Storage::Debug::PrettyPrint->new({
+ show_progress => 1, # tries it's best to make it clear that a SQL
+ # statement is still running
+ executing => '...', # the string that is added to the end of SQL
+ # if show_progress is on. You probably don't
+ # need to set this
+ clear_line => '<CR><ESC>[J', # the string used to erase the string added
+ # to SQL if show_progress is on. Again, the
+ # default is probably good enough.
+
+ squash_repeats => 1, # set to true to make repeated SQL queries
+ # be ellided and only show the new bind params
+ # any other args are passed through directly to SQL::Abstract::Tree
+ });
- $ret
- }