/[A3C]/lib/A3C/SQL.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 /lib/A3C/SQL.pm

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

revision 145 by dpavlin, Sat May 31 16:30:09 2008 UTC revision 162 by dpavlin, Sun Jun 15 17:47:39 2008 UTC
# Line 4  use strict; Line 4  use strict;
4  use warnings;  use warnings;
5    
6  use base qw(Jifty::Object Class::Accessor::Fast);  use base qw(Jifty::Object Class::Accessor::Fast);
7  __PACKAGE__->mk_accessors( qw(query arguments dbh) );  __PACKAGE__->mk_accessors( qw(query arguments dbh encoding) );
8    
9  use Data::Dump qw/dump/;  use Data::Dump qw/dump/;
10    
# Line 28  specify it like this: Line 28  specify it like this:
28    my $sql = A3C::SQL->new({    my $sql = A3C::SQL->new({
29          query => 'select now()',          query => 'select now()',
30          dbh => $my_dbh,          dbh => $my_dbh,
31            encoding => 'UTF-8',
32    });    });
33    
34  =head2 sth  =head2 sth
# Line 43  sub sth { Line 44  sub sth {
44                  my $sth = $dbh->prepare( $self->query ) or $dbh->errstr;                  my $sth = $dbh->prepare( $self->query ) or $dbh->errstr;
45                  if ( $self->arguments ) {                  if ( $self->arguments ) {
46                          Jifty->log->debug( $self->sql . ' arguments: ' . dump( $self->arguments ) );                          Jifty->log->debug( $self->sql . ' arguments: ' . dump( $self->arguments ) );
47                          $sth->execute( $self->arguments ) or $dbh->errstr;                          $sth->execute( $self->arguments ) or die $dbh->errstr;
48                  } else {                  } else {
49                          $sth->execute or $dbh->errstr;                          $sth->execute or die $dbh->errstr;
50                  }                  }
51                  $self->{_sth} = $sth;                  $self->{_sth} = $sth;
52          }          }
# Line 65  sub next { Line 66  sub next {
66          my $self = shift;          my $self = shift;
67          my $row = $self->sth->fetchrow_hashref;          my $row = $self->sth->fetchrow_hashref;
68          return unless defined $row;          return unless defined $row;
69          return A3C::SQL::row->new( $row );          return A3C::SQL::row->new( $row, $self->encoding );
70  }  }
71    
72  =head2 count  =head2 count
# Line 79  sub count { Line 80  sub count {
80          return $self->sth->rows;          return $self->sth->rows;
81  }  }
82    
83    =head1 HELPERS
84    
85    This helpers are accessor to L<DBI>
86    
87    =head2 _column_names
88    
89      my @columns = $sql->_column_names;
90    
91    =cut
92    
93    sub _column_names {
94            my $self = shift;
95            return @{ $self->sth->{NAME} };
96    }
97    
98  package A3C::SQL::row;  package A3C::SQL::row;
99    
100  use Encode qw/decode/;  use Encode qw/decode/;
101  use Data::Dump qw/dump/;  use Data::Dump qw/dump/;
102    use base qw/Jifty::Object/;
103    
104  our $AUTOLOAD;  our $AUTOLOAD;
105    
# Line 91  sub new { Line 108  sub new {
108          my $class = ref($that) || $that;          my $class = ref($that) || $that;
109          my $self = shift;          my $self = shift;
110          bless $self, $class;          bless $self, $class;
111            $self->{__encoding} = shift || 'UTF-8';
112          return $self;          return $self;
113  }    }  
114    
# Line 99  sub AUTOLOAD { Line 117  sub AUTOLOAD {
117          my $type = ref($self) or die "$self is not an object";          my $type = ref($self) or die "$self is not an object";
118          my $name = $AUTOLOAD;          my $name = $AUTOLOAD;
119          $name =~ s/.*://;          $name =~ s/.*://;
120  #       warn "SQL: $name doesn't exist" unless defined($self->{$name});          Jifty->log->error("SQL: $name doesn't exist") unless defined($self->{$name});
121          return decode('UTF-8', $self->{$name});          return decode( $self->{__encoding}, $self->{$name} );
122  }  }
123    
124  sub DESTROY {}  sub DESTROY {}

Legend:
Removed from v.145  
changed lines
  Added in v.162

  ViewVC Help
Powered by ViewVC 1.1.26