[Jifty-commit] r1738 - Jifty-DBI/trunk/lib/Jifty/DBI

jifty-commit at lists.jifty.org jifty-commit at lists.jifty.org
Thu Aug 3 02:16:12 EDT 2006


Author: clkao
Date: Thu Aug  3 02:16:10 2006
New Revision: 1738

Modified:
   Jifty-DBI/trunk/lib/Jifty/DBI/Record.pm

Log:
* Propery cache DBI::Record entries when aliased.
* Fewer accessor calls.
* Only apply filter if we have values fetched.



Modified: Jifty-DBI/trunk/lib/Jifty/DBI/Record.pm
==============================================================================
--- Jifty-DBI/trunk/lib/Jifty/DBI/Record.pm	(original)
+++ Jifty-DBI/trunk/lib/Jifty/DBI/Record.pm	Thu Aug  3 02:16:10 2006
@@ -488,8 +488,8 @@
     my $column = shift;
 
     my $value = $self->__value( $column => @_ );
-    my $method = "after_$column";
-    $self->$method( \$value ) if ( $self->can($method) );
+    my $method = $self->can("after_$column");
+    $method->( $self, \$value ) if $method;
     return $value;
 }
 
@@ -502,26 +502,27 @@
 
 sub __value {
     my $self        = shift;
-    my $column_name = lc(shift);
-
-    # In the default case of "yeah, we have a value", return it as
-    # fast as we can.
-    return   $self->{'values'}{$column_name}
-        if ( $self->{'fetched'}{$column_name}
-          && $self->{'decoded'}{$column_name} );
 
+    my $column_name = lc(shift);
     # If the requested column is actually an alias for another, resolve it.
     my $column = $self->column($column_name);
     if  ($column   and defined $column->alias_for_column ) {
         $column = $self->column($column->alias_for_column());
+        $column_name = $column->name;
     }
 
     return unless ($column);
 
-    if ( !$self->{'fetched'}{ $column->name } and my $id = $self->id() ) {
+    # In the default case of "yeah, we have a value", return it as
+    # fast as we can.
+    return   $self->{'values'}{$column_name}
+        if ( $self->{'fetched'}{$column_name}
+          && $self->{'decoded'}{$column_name} );
+
+    if ( !$self->{'fetched'}{ $column_name } and my $id = $self->id() ) {
         my $pkey         = $self->_primary_key();
         my $query_string = "SELECT "
-            . $column->name
+            . $column_name
             . " FROM "
             . $self->table
             . " WHERE $pkey = ?";
@@ -529,18 +530,18 @@
         my ($value) = eval { $sth->fetchrow_array() };
         warn $@ if $@;
 
-        $self->{'values'}{ $column->name }  = $value;
-        $self->{'fetched'}{ $column->name } = 1;
+        $self->{'values'}{ $column_name }  = $value;
+        $self->{'fetched'}{ $column_name } = 1;
     }
-    unless ( $self->{'decoded'}{ $column->name } ) {
+    unless ( $self->{'decoded'}{ $column_name } ) {
         $self->_apply_output_filters(
             column    => $column,
-            value_ref => \$self->{'values'}{ $column->name },
-        );
-        $self->{'decoded'}{ $column->name } = 1;
+            value_ref => \$self->{'values'}{ $column_name },
+        ) if exists $self->{'values'}{ $column_name };
+        $self->{'decoded'}{ $column_name } = 1;
     }
 
-    return $self->{'values'}{ $column->name };
+    return $self->{'values'}{ $column_name };
 }
 
 =head2 _set


More information about the Jifty-commit mailing list