passthrough role for DBIC sqlmaker
[dbsrgits/SQL-Abstract.git] / lib / DBIx / Class / SQLMaker / Role / SQLA2Passthrough.pm
CommitLineData
5410c047 1package DBIx::Class::SQLMaker::Role::SQLA2Passthrough;
2
3use Role::Tiny;
4
5around select => sub {
6 my ($orig, $self, $table, $fields, $where, $rs_attrs, $limit, $offset) = @_;
7
8 $fields = \[ $self->render_expr({ -list => [
9 grep defined,
10 map +(ref($_) eq 'HASH'
11 ? do {
12 my %f = %$_;
13 my $as = delete $f{-as};
14 my ($f, $rhs) = %f;
15 my $func = +{ "-${f}" => $rhs };
16 ($as
17 ? +{ -op => [ 'as', $func, { -ident => [ $as ] } ] }
18 : $func)
19 }
20 : $_), ref($fields) eq 'ARRAY' ? @$fields : $fields
21 ] }, -ident) ];
22
23 if (my $gb = $rs_attrs->{group_by}) {
24 $rs_attrs = {
25 %$rs_attrs,
26 group_by => \[ $self->render_expr({ -list => $gb }, -ident) ]
27 };
28 }
29 $self->$orig($table, $fields, $where, $rs_attrs, $limit, $offset);
30});
31
321;