use strictures 1;
use Data::Query::ExprBuilder::Identifier;
-use Data::Query::Constants qw(
- DQ_SELECT DQ_IDENTIFIER DQ_OPERATOR DQ_VALUE DQ_ALIAS
-);
-use Data::Query::ExprHelpers qw(perl_scalar_value identifier);
+use Data::Query::ExprHelpers;
+use Data::Query::Constants;
sub expr (&) {
_run_expr($_[0])->{expr};
sub _run_expr {
local $_ = Data::Query::ExprBuilder::Identifier->new({
- expr => identifier()
+ expr => Identifier(),
});
$_[0]->();
}
my @final;
while (@select) {
my $e = shift @select;
- push @final, my $res = { expr => $e->{expr} };
- if (ref($select[0]) eq 'LIES::AS') {
- $res->{name} = identifier(${shift @select});
- }
+ push @final,
+ (ref($select[0]) eq 'LIES::AS'
+ ? Alias(${shift(@select)}, $e->{expr})
+ : $e->{expr}
+ );
}
return +{
- expr => {
- type => DQ_SELECT,
- select => \@final
- },
- @_ ? (from => $_[0]->{expr}) : ()
+ expr => Select(\@final, ($_[0]||{})->{expr})
};
}
my @from = _run_expr(shift);
if (@from == 2 and ref($from[1]) eq 'LIES::AS') {
return +{
- expr => {
- type => DQ_ALIAS,
- source => $from[0],
- alias => identifier(${$from[1]}),
- }
+ expr => Alias(${$from[1]}, $from[0])
};
} elsif (@from == 1) {
return { expr => $from[0] };