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