File Coverage

blib/lib/DBIx/Class/Helper/ResultSet/Shortcut/OrderByMagic.pm
Criterion Covered Total %
statement 21 21 100.0
branch 5 6 83.3
condition 2 3 66.6
subroutine 4 4 100.0
pod 1 1 100.0
total 33 35 94.2


line stmt bran cond sub pod time code
1             package DBIx::Class::Helper::ResultSet::Shortcut::OrderByMagic;
2             $DBIx::Class::Helper::ResultSet::Shortcut::OrderByMagic::VERSION = '2.034002';
3 56     56   20407 use strict;
  56         121  
  56         1260  
4 56     56   242 use warnings;
  56         107  
  56         1224  
5              
6 56     56   235 use parent 'DBIx::Class::Helper::ResultSet::Shortcut::OrderBy', 'DBIx::Class::ResultSet';
  56         100  
  56         243  
7              
8             sub order_by {
9 8     8 1 126627 my ($self, @order) = @_;
10              
11 8 100 66     77 return $self->next::method(@order)
12             if @order && ref($order[0]);
13              
14 6         17 my @clauses;
15 6         17 foreach (@order) {
16 6         55 foreach my $col (split(/\s*,\s*/)) {
17 10         23 my $dir = 'asc';
18 10 100       32 if (substr($col, 0, 1) eq '!') {
19 5         12 $col = substr($col, 1); # take everything after '!'
20 5         10 $dir = 'desc';
21             }
22              
23             # add csa prefix if necessary
24 10 50       59 $col = join('.', $self->current_source_alias, $col)
25             if index($col, '.') == -1;
26              
27 10         83 push @clauses, { "-$dir" => $col };
28             }
29             }
30              
31 6         34 return $self->next::method(\@clauses);
32             }
33              
34             1;
35              
36             __END__
37              
38             =pod
39              
40             =head1 NAME
41              
42             DBIx::Class::Helper::ResultSet::Shortcut::OrderByMagic
43              
44             =head1 AUTHOR
45              
46             Arthur Axel "fREW" Schmidt <frioux+cpan@gmail.com>
47              
48             =head1 COPYRIGHT AND LICENSE
49              
50             This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
51              
52             This is free software; you can redistribute it and/or modify it under
53             the same terms as the Perl 5 programming language system itself.
54              
55             =cut