File Coverage

blib/lib/Games/Lacuna/Task/Action/StarCacheReport.pm
Criterion Covered Total %
statement 4 6 66.6
branch n/a
condition n/a
subroutine 2 2 100.0
pod n/a
total 6 8 75.0


line stmt bran cond sub pod time code
1             package Games::Lacuna::Task::Action::StarCacheReport;
2              
3 1     1   1786 use 5.010;
  1         4  
  1         71  
4             our $VERSION = $Games::Lacuna::Task::VERSION;
5              
6 1     1   422 use Moose -traits => 'NoAutomatic';
  0            
  0            
7             extends qw(Games::Lacuna::Task::Action);
8             with qw(Games::Lacuna::Task::Role::Stars);
9              
10             use Games::Lacuna::Task::Table;
11              
12             sub description {
13             return q[Report the star cache status];
14             }
15             sub run {
16             my ($self) = @_;
17            
18             my $planet_stats = $self->my_body_status($self->home_planet_id);
19            
20             my $table = Games::Lacuna::Task::Table->new({
21             columns => ['State','Count','Min Distance','Max Distance','Avg Distance'],
22             });
23            
24             my @states = (
25             ['probed','is_probed = 1'],
26             ['unprobed','is_probed = 0'],
27             ['unknown','is_probed IS NULL'],
28             );
29            
30             my $total = 0;
31            
32             foreach my $state (@states) {
33            
34             my ($count,$min,$max,$avg) = $self->client->storage_selectrow_array('SELECT
35             COUNT(1),
36             MIN(distance_func(?,?,x,y)),
37             MAX(distance_func(?,?,x,y)),
38             AVG(distance_func(?,?,x,y))
39             FROM star
40             WHERE '.$state->[1],
41             $planet_stats->{x},
42             $planet_stats->{y},
43             $planet_stats->{x},
44             $planet_stats->{y},
45             $planet_stats->{x},
46             $planet_stats->{y},
47             );
48            
49             $table->add_row({
50             state => $state->[0],
51             count => ($count || 0),
52             min_distance => ($min // 0),
53             max_distance => ($max // 0),
54             avg_distance => sprintf('%i',$avg),
55             });
56            
57             $total += $count;
58             }
59            
60             $table->add_row({
61             state => 'total',
62             count => $total
63             });
64            
65             say $table->render_text;
66             }
67              
68              
69             __PACKAGE__->meta->make_immutable;
70             no Moose;
71             1;