hi, guys.
since I can't touch Cory Watson by [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
so I wonder if this module is fine?
Thanks.
<mailto:[EMAIL PROTECTED]>
--
Fayland Lam // http://www.fayland.org/
package Catalyst::Plugin::DBIC::QueryLog;
use warnings;
use strict;
use NEXT;
use DBIx::Class::QueryLog;
use DBIx::Class::QueryLog::Analyzer;
use base qw/Class::Accessor::Fast/;
__PACKAGE__->mk_accessors('querylog');
use vars qw/$VERSION/;
$VERSION = '0.01';
sub querylog_analyzer {
my $c = shift;
return new DBIx::Class::QueryLog::Analyzer({ querylog => $c->querylog });
}
sub prepare {
my $c = shift;
$c = $c->NEXT::prepare(@_);
my $model_name = $c->config->{'DBIC::QueryLog'}->{MODEL_NAME} || 'DBIC';
my $schema = $c->model($model_name)->schema;
$c->querylog( new DBIx::Class::QueryLog() );
$schema->storage->debugobj( $c->querylog );
$schema->storage->debug(1);
return $c;
}
1; # End of Catalyst::Plugin::DBIC::QueryLog
__END__
=head1 NAME
Catalyst::Plugin::DBIC::QueryLog - Catalyst Plugin for DBIx::Class::QueryLog!
=head1 SYNOPSIS
# MyApp.pm
use Catalyst qw/
...
DBIC::QueryLog # Load this plugin.
...
/;
# myapp.yml
DBIC::QueryLog:
MODEL_NAME: DBIC
=head1 USAGE
then in templates:
[% IF c.querylog %]
<div class="featurebox">
<h3>Query Log Report</h3>
[% SET total = c.querylog.time_elapsed | format('%0.6f') %]
<div>Total SQL Time: [% total | format('%0.6f') %] seconds</div>
[% SET qcount = c.querylog.count %]
<div>Total Queries: [% qcount %]</div>
[% IF qcount %]
<div>Avg Statement Time: [% (c.querylog.time_elapsed / qcount) |
format('%0.6f') %] seconds.</div>
<div>
<table class="table1">
<thead>
<tr>
<th colspan="3">5 Slowest Queries</th>
</tr>
</thead>
<tbody>
<tr>
<th>Time</th>
<th>%</th>
<th>SQL</th>
</tr>
[% SET i = 0 %]
[% FOREACH q = c.querylog_analyzer.get_sorted_queries %]
<tr class="[% IF loop.count % 2 %]odd[% END %]">
<th class="sub">[% q.time_elapsed | format('%0.6f') %]
<td>[% ((q.time_elapsed / total ) * 100 ) | format('%i') %]%</td>
<td>[% q.sql %]</td>
</th></tr>
[% IF i == 5 %]
[% LAST %]
[% END %]
[% SET i = i + 1 %]
[% END %]
</tbody>
</table>
</div>
[% END %]
</div>
[% END %]
=head1 SEE ALSO
L<DBIx::Class::QueryLog>
L<http://www.onemogin.com/blog/554-profile-your-catalystdbixclass-app-with-querylog.html>
=head1 AUTHOR
Fayland Lam, C<< <fayland at gmail> >>
=head1 COPYRIGHT & LICENSE
Copyright 2007 Fayland Lam, all rights reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
=cut
_______________________________________________
List: [email protected]
Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/