NAME
    Catalyst::TraitFor::Model::DBIC::Schema::QueryLog -
    DBIx::Class::QueryLog support for Catalyst::Model::DBIC::Schema
VERSION
    version 0.03
SYNOPSIS
        use base qw/Catalyst::Model::DBIC::Schema/;
    
        __PACKAGE__->config({
            traits => ['QueryLog'],
            connect_info => 
                ['dbi:mysql:master', 'user', 'pass'],
        });
        # or
        __PACKAGE__->config({
            traits => ['QueryLog'],
            connect_info => 
                ['dbi:mysql:master', 'user', 'pass'],
            querylog_args => {
                passthrough => 1,
            },
        });
DESCRIPTION
    check Catalyst::Model::DBIC::Schema for more details
    Enable DBIx::Class::QueryLog support for Catalyst::Model::DBIC::Schema.
  METHODS
    querylog
        an instance of DBIx::Class::QueryLog.
    querylog_analyzer
        an instance of DBIx::Class::QueryLog::Analyzer.
    querylog_args
        passed to DBIx::Class::QueryLog->new;
  EXAMPLE CODE
      
        Query Log Report
        [% SET total = c.model('FilmDB').querylog.time_elapsed | format('%0.6f') %]
        
Total SQL Time: [% total | format('%0.6f') %] seconds
        [% SET qcount = c.model('FilmDB').querylog.count %]
        
Total Queries: [% qcount %]
        [% IF qcount %]
        
Avg Statement Time: [% (c.model('FilmDB').querylog.time_elapsed / qcount) | format('%0.6f') %] seconds.
        
         
          
           
            | 5 Slowest Queries | 
          
          
           
            | Time | % | SQL | 
           [% SET i = 0 %]
           [% FOREACH q = c.model('FilmDB').querylog_analyzer.get_sorted_queries %]
           
            | [% q.time_elapsed | format('%0.6f') %] | [% ((q.time_elapsed / total ) * 100 ) | format('%i') %]% | [% q.sql %] : ([% q.params.join(', ') %]) | 
           [% IF i == 5 %]
            [% LAST %]
           [% END %]
           [% SET i = i + 1 %]
           [% END %]
          
         
         
        [% END %]
      
 
    OR
      my $total = sprintf('%0.6f', $c->model('DBIC')->querylog->time_elapsed);
      $c->log->debug("Total SQL Time: $total seconds");
      my $qcount = $c->model('DBIC')->querylog->count;
      if ($qcount) {
        $c->log->debug("Avg Statement Time: " . sprintf('%0.6f', $total / $qcount));
        my $i = 0;
        my $qs = $c->model('DBIC')->querylog_analyzer->get_sorted_queries();
        foreach my $q (@$qs) {
          my $q_total = sprintf('%0.6f', $q->time_elapsed);
          my $q_percent = sprintf('%0.6f', ( ($q->time_elapsed / $total) * 100 ));
          my $q_sql = $q->sql . ' : ' . join(', ', @{$q->params});
          $c->log->debug("SQL: $q_sql");
          $c->log->debug("Costs: $q_total, takes $q_percent");
          last if ($i == 5);
          $i++;
        }
      }
  SEE ALSO
    Catalyst::Model::DBIC::Schema
    DBIx::Class::QueryLog
    Catalyst::Component::InstancePerContext
AUTHOR
      Fayland Lam 
COPYRIGHT AND LICENSE
    This software is copyright (c) 2010 by Fayland Lam.
    This is free software; you can redistribute it and/or modify it under
    the same terms as perl itself.