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.036000';
3 57     57   24534 use strict;
  57         139  
  57         1469  
4 57     57   275 use warnings;
  57         114  
  57         1412  
5              
6 57     57   308 use parent 'DBIx::Class::Helper::ResultSet::Shortcut::OrderBy', 'DBIx::Class::ResultSet';
  57         121  
  57         280  
7              
8             sub order_by {
9 8     8 1 155780 my ($self, @order) = @_;
10              
11 8 100 66     70 return $self->next::method(@order)
12             if @order && ref($order[0]);
13              
14 6         14 my @clauses;
15 6         19 foreach (@order) {
16 6         43 foreach my $col (split(/\s*,\s*/)) {
17 10         26 my $dir = 'asc';
18 10 100       34 if (substr($col, 0, 1) eq '!') {
19 5         16 $col = substr($col, 1); # take everything after '!'
20 5         12 $dir = 'desc';
21             }
22              
23             # add csa prefix if necessary
24 10 50       71 $col = join('.', $self->current_source_alias, $col)
25             if index($col, '.') == -1;
26              
27 10         88 push @clauses, { "-$dir" => $col };
28             }
29             }
30              
31 6         33 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) 2020 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