/[Frey]/trunk/lib/Frey/Collection.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/lib/Frey/Collection.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 142 by dpavlin, Sun Jul 13 16:17:34 2008 UTC revision 143 by dpavlin, Wed Jul 16 14:17:46 2008 UTC
# Line 3  use Moose::Role; Line 3  use Moose::Role;
3    
4  use Data::Dump qw/dump/;  use Data::Dump qw/dump/;
5  use Carp;  use Carp;
 use Data::Page;  
6    
7  sub total_rows {  =head1 NAME
8    
9    Frey::Collection - role for Fey::ORM to get all results
10    
11    =head1 METHODS
12    
13    =cut
14    
15    =head2 total_entries
16    
17      my $rows = $o->total_entries;
18    
19    =cut
20    
21    sub total_entries {
22          my $self = shift;          my $self = shift;
23          my $table = $self->_table;          my $table = $self->_table;
24          my $count = Fey::Literal::Function->new( 'COUNT', $table->column('id') );       # FIXME id?          my $count = Fey::Literal::Function->new( 'COUNT', $table->column('id') );       # FIXME id?
# Line 26  sub _sql { Line 39  sub _sql {
39          return $self->SchemaClass()->SQLFactoryClass()->new_select();          return $self->SchemaClass()->SQLFactoryClass()->new_select();
40  }  }
41    
42  sub collection {  =head2 collection
         my ( $self, $args ) = @_;  
43    
44          croak "expect HASH not ",dump( $args ) unless ref($args) eq 'HASH';    my $pager = Frey::Pager->new( per_page => 20, page => 1 );
45      my $Fey_Object_Iterator = $o->collection($pager);
46    
47          warn "## collection args = ",dump( $args );  =cut
48    
49          my $pager = Data::Page->new;  sub collection {
50          $pager->total_entries( $self->total_rows );          my ( $self, $pager ) = @_;
         $pager->entries_per_page( $args->{per_page} || 20 );  
         $pager->current_page( $args->{page} || 1 );  
51    
52          my $users_t = $self->_table;          my $table = $self->_table;
53    
54          my $select = $self->_sql->select( $users_t )          my $select = $self->_sql->select( $table )
55                  ->from( $users_t )                  ->from( $table )
56  #               ->where( $message_t->column('message_date'), '>=',  #               ->where( $message_t->column('message_date'), '>=',
57  #                       DateTime->today()->subtract( days => 7 )->strftime( '%Y-%m-%d' ) )  #                       DateTime->today()->subtract( days => 7 )->strftime( '%Y-%m-%d' ) )
58                  ->limit( $pager->entries_per_page, $pager->skipped )          ;
59                  ;  
60            if ( blessed $pager ) {
61                    if ( ref($pager) eq 'Frey::Pager' ) {
62                            warn "FIXING wrong pager object to collection!";
63                            $pager = $pager->pager;
64                    }
65                    warn "## using pager";
66                    $pager->total_entries( $self->total_entries );
67                    $select->limit( $pager->entries_per_page, $pager->skipped );
68            }
69    
70          my $dbh = $self->_dbh($select);          my $dbh = $self->_dbh($select);
71          my $sth = $dbh->prepare( $select->sql($dbh) );          my $sth = $dbh->prepare( $select->sql($dbh) );
72    
73          my $i =          my $i =
74                  Fey::Object::Iterator->new(                  Fey::Object::Iterator->new(
75                          classes     => [ $self->meta()->ClassForTable( $users_t ) ],                          classes     => [ $self->meta()->ClassForTable( $table ) ],
76                          handle      => $sth,                          handle      => $sth,
77                          bind_params => [ $select->bind_params() ],                          bind_params => [ $select->bind_params() ],
78                  );                  );
79    
80          return ( $i, $pager ) if wantarray;          confess "LEGACY: this calling convention is no longer supported" if wantarray;
81          return $i;          return $i;
82  }  }
83    

Legend:
Removed from v.142  
changed lines
  Added in v.143

  ViewVC Help
Powered by ViewVC 1.1.26