|
Lines 65-70
Generates the DBIC query from the query parameters.
Link Here
|
| 65 |
return ( $filtered_params, $reserved_params ); |
65 |
return ( $filtered_params, $reserved_params ); |
| 66 |
} |
66 |
} |
| 67 |
); |
67 |
); |
|
|
68 |
|
| 69 |
=head3 dbic_merge_sorting |
| 70 |
|
| 71 |
$attributes = $c->dbic_merge_sorting({ attributes => $attributes, params => $params }); |
| 72 |
|
| 73 |
Generates the DBIC order_by attributes based on I<$params>, and merges into I<$attributes>. |
| 74 |
|
| 75 |
=cut |
| 76 |
|
| 77 |
$app->helper( |
| 78 |
'dbic_merge_sorting' => sub { |
| 79 |
my ( $c, $args ) = @_; |
| 80 |
my $attributes = $args->{attributes}; |
| 81 |
|
| 82 |
my @order_by = |
| 83 |
map { _build_order_atom($_) } |
| 84 |
split( /\|/, $args->{params}->{_order_by} ); |
| 85 |
|
| 86 |
$attributes->{order_by} = \@order_by; |
| 87 |
return $attributes; |
| 88 |
} |
| 89 |
); |
| 68 |
} |
90 |
} |
| 69 |
|
91 |
|
| 70 |
=head2 Internal methods |
92 |
=head2 Internal methods |
|
Lines 81-84
sub _reserved_words {
Link Here
|
| 81 |
return \@reserved_words; |
103 |
return \@reserved_words; |
| 82 |
} |
104 |
} |
| 83 |
|
105 |
|
|
|
106 |
=head3 _build_order_atom |
| 107 |
|
| 108 |
my $order_atom = _build_order_atom( $string ); |
| 109 |
|
| 110 |
Parses I<$string> and outputs data valid for using in SQL::Abstract order_by attribute |
| 111 |
according to the following rules: |
| 112 |
|
| 113 |
string -> I<string> |
| 114 |
+string -> I<{ -asc => string }> |
| 115 |
-string -> I<{ -desc => string }> |
| 116 |
|
| 117 |
=cut |
| 118 |
|
| 119 |
sub _build_order_atom { |
| 120 |
my $string = shift; |
| 121 |
|
| 122 |
if ( $string =~ m/^\+/ ) { |
| 123 |
# asc order operator present |
| 124 |
$string =~ s/^\+//; |
| 125 |
return { -asc => $string }; |
| 126 |
} |
| 127 |
elsif ( $string =~ m/^\-/ ) { |
| 128 |
# desc order operator present |
| 129 |
$string =~ s/^\-//; |
| 130 |
return { -desc => $string }; |
| 131 |
} |
| 132 |
else { |
| 133 |
# no order operator present |
| 134 |
return $string; |
| 135 |
} |
| 136 |
} |
| 137 |
|
| 84 |
1; |
138 |
1; |
| 85 |
- |
|
|