package DBIx::Skinny::Pager::Logic::MySQLFoundRows;
use strict;
use warnings;
use base qw/DBIx::Skinny::Pager/;
use Data::Page;

sub as_sql {
    my $self = shift;
    my $result = $self->SUPER::as_sql;
    # TODO: 正規表現もいいかげんなのでもうちょいちゃんとやりたい
    # as_sqlの中身をいじるのは本家への追従を考えると難しそう
    $result =~ s/SELECT /SELECT SQL_CALC_FOUND_ROWS /; # mysql support only
    $result;
}

sub get_total_entries {
    my $self = shift;
    $self->skinny->search_by_sql(q{SELECT FOUND_ROWS() AS row})->first->row;
}

1;
__END__

=head1 NAME

DBIx::Skinny::Pager::Logic::MySQLFoundRows

=head1 SYNOPSIS

  package Proj::DB;
  use DBIx::Skinny;
  use DBIx::Skinny::Mixin modules => ['Pager'];

  package main;
  use Proj::DB;

  my $rs = Proj::DB->resultset_with_pager('MySQLFoundRows');
  # $rs can handle like DBIx::Skinny::SQL.
  $rs->from(['some_table']);
  $rs->add_where('foo' => 'bar');
  $rs->limit(10);
  $rs->offset(20);
  my ($iter, $pager) = $rs->retrieve;
  # $iter is a DBIx::Skinny::Iterator
  # $pager is a Data::Page

=head1 DESCRIPTION

DBIx::Skinny::Pager::Logic::MySQLFoundRows is supported mysql only.

=head1 AUTHOR

Keiji Yoshimi E<lt>walf443 at gmail dot comE<gt>

=head1 SEE ALSO

=head1 LICENSE

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.

=cut