Commit | Line | Data |
aad6ee1b |
1 | use strictures; |
aad6ee1b |
2 | use Devel::Dwarn; |
3 | |
781edb05 |
4 | use Data::Query::ExprDeclare qw(SELECT FROM WHERE JOIN ON ORDER BY DESC NULLS LAST AS LEFT JOIN OFFSET LIMIT); |
5 | |
d605d949 |
6 | BEGIN { require 't/example.to_sql' }; |
aad6ee1b |
7 | |
d605d949 |
8 | make_renderer; |
aad6ee1b |
9 | |
a609e537 |
10 | DwarnL to_sql(SELECT { $_->foo, "bar" }); |
11 | DwarnL to_sql(SELECT { $_->foo, "bar" } FROM { $_->baz }); |
12 | DwarnL to_sql(SELECT { $_->foo } FROM { $_->baz, AS('quux') }); |
13 | DwarnL to_sql( |
d605d949 |
14 | SELECT { $_->cd->name } FROM { $_->cds, AS('cd') } |
aad6ee1b |
15 | ); |
d605d949 |
16 | |
17 | my $w_join = |
aad6ee1b |
18 | SELECT { $_->cd->name } |
19 | FROM { $_->cds, AS 'cd' } |
20 | JOIN { $_->artists, AS 'artist' } |
d605d949 |
21 | ON { $_->cd->artistid eq $_->artist->id }; |
22 | |
23 | DwarnL to_sql($w_join); |
24 | |
25 | Dwarn to_sql(FROM { $w_join } WHERE { $_->cd->year > 2000 }); |
26 | |
a609e537 |
27 | DwarnL to_sql( |
aad6ee1b |
28 | SELECT { $_->artist->name } |
29 | FROM { $_->artists, AS 'artist' } |
30 | LEFT JOIN { $_->cds, AS 'cd' } |
31 | ON { $_->cd->artistid eq $_->artist->id } |
32 | ); |
a609e537 |
33 | DwarnL to_sql( |
4e0c6139 |
34 | SELECT { $_->artist->name } WHERE { $_->artist->age > 25 } |
35 | ); |
a609e537 |
36 | DwarnL to_sql( |
4e0c6139 |
37 | SELECT { $_->cd->name } |
38 | FROM { $_->cds, AS 'cd' } |
39 | JOIN { $_->artists, AS 'artist' } |
40 | ON { $_->cd->artistid eq $_->artist->id } |
41 | WHERE { $_->artist->age > 25 } |
42 | ); |
a609e537 |
43 | DwarnL to_sql(ORDER BY { $_->foo, $_->bar, $_->baz } DESC); |
9f0ad8f6 |
44 | |
45 | my $basic = SELECT { $_->cd->name } FROM { $_->cds, AS 'cd' }; |
46 | |
a609e537 |
47 | DwarnL to_sql( |
9f0ad8f6 |
48 | FROM { $basic } WHERE { $_->year > 2000 } |
49 | ); |
50 | |
a609e537 |
51 | DwarnL to_sql( |
9f0ad8f6 |
52 | FROM { $basic } ORDER BY { $_->year } |
53 | ); |
54 | |
a609e537 |
55 | DwarnL to_sql( |
e3335558 |
56 | SELECT { $_->cd->name } FROM { $_->cds, AS 'cd' } ORDER BY { $_->year } DESC NULLS LAST |
9f0ad8f6 |
57 | ); |
d2773428 |
58 | |
49299143 |
59 | my $lo = |
d2773428 |
60 | SELECT { $_->cd->name } |
61 | FROM { $_->cds, AS 'cd' } |
62 | ORDER BY { $_->year } |
a609e537 |
63 | LIMIT { 10 } OFFSET { 10 }; |
64 | |
65 | sub render_orders { |
66 | |
d605d949 |
67 | make_renderer('LimitOffset'); |
a609e537 |
68 | |
69 | DwarnL to_sql($lo); |
70 | |
d605d949 |
71 | make_renderer('RowNum'); |
a609e537 |
72 | |
73 | DwarnL to_sql($lo); |
74 | |
d605d949 |
75 | make_renderer('RowNumberOver'); |
a609e537 |
76 | |
77 | DwarnL to_sql($lo); |
78 | |
79 | } |
80 | |
81 | render_orders(); |
82 | |
83 | $lo = |
84 | SELECT { $_->cd->name, $_->artist->name } |
85 | FROM { $_->cds, AS 'cd' } |
86 | JOIN { $_->artists, AS 'artist' } |
87 | ON { $_->cd->artistid eq $_->artist->id } |
88 | WHERE { $_->artist->age > 25 } |
89 | ORDER BY { $_->artist->age, $_->cd->id } |
90 | LIMIT { 10 } OFFSET { 20 }; |
91 | |
92 | render_orders(); |
d605d949 |
93 | |
94 | my @cols = qw(name year genre); |
95 | |
96 | DwarnL to_sql( |
97 | SELECT { my $cd = $_->cd; map $cd->$_, @cols } |
98 | FROM { $_->cds, AS 'cd' } |
99 | ); |