3e93154cce9526bd347258c39098b44eba2d7062
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / CDBICompat / Iterator.pm
1 package DBIx::Class::CDBICompat::Iterator;
2
3 use strict;
4 use warnings;
5
6
7 =head1 NAME
8
9 DBIx::Class::CDBICompat::Iterator - Emulates the extra behaviors of the Class::DBI search iterator.
10
11 =head1 SYNOPSIS
12
13 See DBIx::Class::CDBICompat for directions for use.
14
15 =head1 DESCRIPTION
16
17 Emulates the extra behaviors of the Class::DBI search iterator.
18
19 =head2 Differences from DBIx::Class result set
20
21 The CDBI iterator returns true if there were any results, false otherwise.  The DBIC result set always returns true.
22
23 =cut
24
25
26 sub _init_result_source_instance {
27   my $class = shift;
28
29   my $table = $class->next::method(@_);
30   $table->resultset_class("DBIx::Class::CDBICompat::Iterator::ResultSet");
31
32   return $table;
33 }
34
35
36
37 package DBIx::Class::CDBICompat::Iterator::ResultSet;
38
39 use strict;
40 use warnings;
41
42 use base qw(DBIx::Class::ResultSet);
43
44 sub _bool {
45     # Performance hack so internal checks whether the result set
46     # exists won't do a SQL COUNT.
47     return 1 if caller =~ /^DBIx::Class::/;
48
49     return $_[0]->count;
50 }
51
52 1;