use FindBin;
use lib "$FindBin::Bin/../../lib";
-use SQLADumperSort;
+use Test::SQL::Abstract::Util qw/
+ mk_name
+ mk_value
+ mk_expr
+ field_op_value
+ :dumper_sort
+/;
use SQL::Abstract::Compat;
ok(my $visitor = SQL::Abstract::Compat->new);
-my $foo_id = { -type => 'name', args => [qw/foo/] };
-my $bar_id = { -type => 'name', args => [qw/bar/] };
+my $foo_id = { -type => 'identifier', elements => [qw/foo/] };
+my $bar_id = { -type => 'identifier', elements => [qw/bar/] };
my $foo_eq_1 = field_op_value($foo_id, '==', 1);
my $bar_eq_str = field_op_value($bar_id, '==', 'some str');
-type => 'expr',
op => '==',
args => [
- { -type => 'name', args => ['worker'] },
+ { -type => 'identifier', elements => ['worker'] },
{ -type => 'value', value => $_[0] },
],
}
'test', '*', [ { ticket => [11, 12, 13] } ]
),
{ -type => 'select',
- columns => [ { -type => 'name', args => ['*'] } ],
- tablespec => { -type => 'name', args => ['test'] },
+ columns => [ { -type => 'identifier', elements => ['*'] } ],
+ tablespec => { -type => 'identifier', elements => ['test'] },
where => $ticket_or_eq
},
"Complex AST with convert('UPPER')";
]
),
{ -type => 'select',
- columns => [ { -type => 'name', args => ['*'] } ],
- tablespec => { -type => 'name', args => ['test'] },
+ columns => [ { -type => 'identifier', elements => ['*'] } ],
+ tablespec => { -type => 'identifier', elements => ['test'] },
where => $hostname_and_ticket
},
"Complex AST mixing arrays+hashes with convert('UPPER')";
]
),
{ -type => 'select',
- columns => [ { -type => 'name', args => ['*'] } ],
- tablespec => { -type => 'name', args => ['test'] },
+ columns => [ { -type => 'identifier', elements => ['*'] } ],
+ tablespec => { -type => 'identifier', elements => ['test'] },
where => {
-type => 'expr',
op => 'or',
]
),
{ -type => 'select',
- columns => [ { -type => 'name', args => ['*'] } ],
- tablespec => { -type => 'name', args => ['test'] },
+ columns => [ { -type => 'identifier', elements => ['*'] } ],
+ tablespec => { -type => 'identifier', elements => ['test'] },
where => {
-type => 'expr',
op => 'or',
]
),
{ -type => 'select',
- columns => [ { -type => 'name', args => ['*'] } ],
- tablespec => { -type => 'name', args => ['test'] },
+ columns => [ { -type => 'identifier', elements => ['*'] } ],
+ tablespec => { -type => 'identifier', elements => ['test'] },
where => {
-type => 'expr',
op => 'or',
},
"Complex AST [ {a => [1,2],b => 3}, { c => 4 }, { d => [5,6,7], e => { '!=' => [8,9] }, q => {'not in' => [10,11] } } ]";
-sub field_op_value {
- my ($field, $op, $value) = @_;
- $field = ref $field eq 'HASH'
- ? $field
- : ref $field eq 'ARRAY'
- ? { -type => 'name', args => $field }
- : { -type => 'name', args => [$field] };
+sub upper { mk_expr(UPPER => @_) }
- my @value = ref $value eq 'HASH'
- ? $value
- : ref $value eq 'ARRAY'
- ? @$value
- : { -type => 'value', value => $value };
- return {
- -type => 'expr',
- op => $op,
- args => [
- $field,
- @value
- ]
- };
-}
-
-sub upper { expr(UPPER => @_) }
-
-sub expr {
- my ($op, @args) = @_;
-
- return {
- -type => 'expr',
- op => $op,
- args => [@args]
- };
-}
-
-sub mk_name {
- my ($field) = @_;
- $field = ref $field eq 'HASH'
- ? $field
- : ref $field eq 'ARRAY'
- ? { -type => 'name', args => $field }
- : { -type => 'name', args => [$field] };
- return $field;
-}
-
-sub mk_value {
- return { -type => 'value', value => $_[0] }
-}