FIRST ? SKIP ?
Matt S Trout [Sun, 6 May 2012 23:58:32 +0000 (23:58 +0000)]
lib/Data/Query/Renderer/SQL/Slice/FirstSkip.pm

index c085a1d..f6cd6dd 100644 (file)
@@ -3,18 +3,20 @@ package Data::Query::Renderer::SQL::Slice::FirstSkip;
 use Moo::Role;
 use Data::Query::Constants qw(DQ_SLICE);
 
+my %handle = (limit => 'FIRST', offset => 'SKIP');
+
+sub _slice_order { qw(limit offset) }
+
 sub _render_slice {
   my ($self, $dq) = @_;
   my $basic = $self->_render($dq->{from});
   return [
     $basic->[0], # SELECT keyword
-    ($dq->{limit}
-      ? ($self->_format_keyword('FIRST'), $self->_render($dq->{limit}))
-      : ()
-    ),
-    ($dq->{offset}
-      ? ($self->_format_keyword('SKIP'), $self->_render($dq->{offset}))
-      : ()
+    (map +(
+      $dq->{$_}
+        ? ($self->_format_keyword($handle{$_}), $self->_render($dq->{$_}))
+        : ()
+      ), $self->_slice_order
     ),
     @{$basic}[1..$#$basic]
   ];