[Jifty-commit] r5706 - Jifty-DBI/branches/tisql/lib/Jifty/DBI

Jifty commits jifty-commit at lists.jifty.org
Tue Aug 12 23:00:29 EDT 2008


Author: ruz
Date: Tue Aug 12 23:00:29 2008
New Revision: 5706

Modified:
   Jifty-DBI/branches/tisql/lib/Jifty/DBI/Tisql.pm

Log:
* rename parse_reference_condition method -> external_reference
* make it chainable
* use new API
* use new tisql

Modified: Jifty-DBI/branches/tisql/lib/Jifty/DBI/Tisql.pm
==============================================================================
--- Jifty-DBI/branches/tisql/lib/Jifty/DBI/Tisql.pm	(original)
+++ Jifty-DBI/branches/tisql/lib/Jifty/DBI/Tisql.pm	Tue Aug 12 23:00:29 2008
@@ -357,49 +357,48 @@
     }
 }
 
-sub parse_column_reference {
+sub external_reference {
     my $self = shift;
     my %args = @_;
 
     my $record = $args{'record'};
     my $column = $args{'column'};
-    my $string = $column->tisql;
+    my $name   = $column->name;
 
-    my $record_alias = {
-        string    => 'record',
+    my $aliases = { __record__ => {
+        string    => '__record__',
         previous  => undef,
         chain     => [$column],
         sql_alias => $self->{'collection'}->new_alias( $record ),
-    };
+    } };
 
-    my $tree = {
-        aliases => {
-            record => $record_alias
-        },
-        conditions => undef,
+    my $column_cb = sub {
+        my $str = shift;
+        $str = "__record__". $str if 0 == rindex $str, '.', 0;
+        substr($str, 0, length($name)) = '' if 0 == rindex $str, "$name.", 0;
+        return $self->find_column($str, $aliases);
     };
-
-    $tree->{'conditions'} = $self->as_array(
-        $string,
-        operand_cb => sub { return $self->parse_condition( $_[0], $tree->{'aliases'} ) },
+    my $conditions = $self->as_array(
+        $column->tisql,
+        operand_cb => sub {
+            return $self->parse_condition( $_[0], $column_cb )
+        },
     );
-    $tree->{'conditions'} = [
+    $conditions = [
+        $conditions, 'AND',
         {
             lhs => {
-                string => 'record.id',
-                previous => $record_alias,
-                chain => [ $record->column('id') ]
+                string   => '__record__.id',
+                previous => $aliases->{'__record__'},
+                chain    => [ $record->column('id') ]
             },
             op => '=',
-            rhs => $record->id
+            rhs => $record->id || 0,
         },
-        'AND',
-        $tree->{'conditions'},
     ];
-    $self->{'tisql'}{'conditions'} = $tree->{'conditions'};
-    $self->apply_query_tree( $tree );
+    $self->apply_query_tree( $conditions );
 
-    return $tree;
+    return $self;
 }
 
 {


More information about the Jifty-commit mailing list