FIRST ? SKIP ?
[dbsrgits/Data-Query.git] / lib / Data / Query / Renderer / SQL / Slice / FirstSkip.pm
1 package Data::Query::Renderer::SQL::Slice::FirstSkip;
2
3 use Moo::Role;
4 use Data::Query::Constants qw(DQ_SLICE);
5
6 my %handle = (limit => 'FIRST', offset => 'SKIP');
7
8 sub _slice_order { qw(limit offset) }
9
10 sub _render_slice {
11   my ($self, $dq) = @_;
12   my $basic = $self->_render($dq->{from});
13   return [
14     $basic->[0], # SELECT keyword
15     (map +(
16       $dq->{$_}
17         ? ($self->_format_keyword($handle{$_}), $self->_render($dq->{$_}))
18         : ()
19       ), $self->_slice_order
20     ),
21     @{$basic}[1..$#$basic]
22   ];
23 };
24
25 1;