my $report = {
select => [
{ relation=> 'circ',
- column => { month_trunc => ['checkin_time'] },
+ column => { transform => month_trunc => colname => 'checkin_time' },
alias => '::PARAM4',
},
{ relation=> 'circ-checkin_lib-aou',
- column => 'shortname',
+ column => { colname => 'shortname', transform => 'substring', params => [ 1, 4 ] },
alias => 'Library Short Name',
},
{ relation=> 'circ-circ_staff-au-card-ac',
alias => 'User Barcode',
},
{ relation=> 'circ',
- column => { count => 'id' },
+ column => { transform => count => colname => 'id' },
alias => '::PARAM3',
},
],
condition => { 'in' => '::PARAM1' },
},
{ relation => 'circ',
- column => { month_trunc => ['checkin_time'] },
+ column => { transform => month_trunc => colname => 'checkin_time' },
condition => { 'in' => '::PARAM2' },
},
],
having => [
{ relation => 'circ',
- column => { count => 'id' },
+ column => { transform => count => colname => 'id' },
condition => { '>' => '::PARAM5' },
},
],
order_by => [
{ relation=> 'circ',
- column => { count => 'id' },
+ column => { transform => count => colname => 'id' },
direction => 'descending',
},
{ relation=> 'circ-checkin_lib-aou',
column => 'shortname',
},
{ relation=> 'circ',
- column => { month_trunc => ['checkin_time'] },
+ column => { transform => month_trunc => colname => 'checkin_time' },
direction => 'descending'
},
{ relation=> 'circ-circ_staff-au-card-ac',
$self->{_aggregate} = $col_data->{aggregate};
if (ref($self->{_column})) {
- my ($trans) = keys %{ $self->{_column} };
+ my $trans = $self->{_column}->{transform} || 'Bare';
my $pkg = "OpenILS::Reporter::SQLBuilder::Column::Transform::$trans";
if (UNIVERSAL::can($pkg => 'toSQL')) {
$self->{_transform} = $trans;
sub name {
my $self = shift;
if (ref($self->{_column})) {
- my ($k) = keys %{$self->{_column}};
- if (ref($self->{_column}->{$k})) {
- return $self->resolve_param( $self->{_column}->{$k}->[0] );
- } else {
- return $self->resolve_param( $self->{_column}->{$k} );
- }
+ return $self->{_column}->{colname};
} else {
- return $self->resolve_param( $self->{_column} );
+ return $self->{_column};
}
}
my ($func) = keys %{ $self->{_column} };
my @params;
- @params = @{ $self->{_column}->{$func} } if (ref($self->{_column}->{$func}));
- shift @params if (@params);
+ @params = @{ $self->resolve_param( $self->{_column}->{params} ) } if ($self->{_column}->{params});
my $sql = $func . '("' . $self->{_relation} . '"."' . $self->name . '"';
$sql .= ",'" . join("','", @params) . "'" if (@params);
sub toSQL {
my $self = shift;
- my ($params) = values %{ $self->{_column} };
- my $start = $$params[1];
- my $len = $$params[2];
+ my $params = $self->resolve_param( $self->{_column}->{params} );
+ my $start = $$params[0];
+ my $len = $$params[1];
return 'SUBSTRING("' . $self->{_relation} . '"."' . $self->name . "\",$start,$len)";
}