[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