File Coverage

lib/ActiveRecord/Simple/Migration.pm
Criterion Covered Total %
statement 35 35 100.0
branch 7 14 50.0
condition 3 9 33.3
subroutine 7 7 100.0
pod 0 3 0.0
total 52 68 76.4


line stmt bran cond sub pod time code
1             package ActiveRecord::Simple::Migration;
2              
3 1     1   55800 use strict;
  1         3  
  1         22  
4 1     1   4 use warnings;
  1         2  
  1         21  
5 1     1   14 use 5.010;
  1         2  
6              
7              
8             sub new {
9 1     1 0 294 my ($name, $num) = @_;
10              
11 1   33     3 $num ||= time();
12              
13 1 50       116 open my $fh_up, ">", "$num-UP.sql" or return;
14 1         5 say {$fh_up} "--- Migration #$num, `$name`, UP";
  1         14  
15 1         67 close $fh_up;
16              
17 1 50       53 open my $fh_dn, ">", "$num-DN.sql" or return;
18 1         4 say {$fh_dn} "--- Migration #$num, `$name`. DOWN";
  1         9  
19 1         27 close $fh_dn;
20              
21 1         12 return 1;
22             }
23              
24             sub down {
25 1     1 0 1082 my ($dbh, $num) = @_;
26              
27 1 50 33     10 $dbh && $num or return;
28 1 50       7 my $sql = _slurp_file("$num-DN.sql") or return;
29              
30 1         7 return $dbh->do($sql);
31             }
32              
33             sub up {
34 1     1 0 5 my ($dbh, $num) = @_;
35              
36 1 50 33     9 $dbh && $num or return;
37 1 50       5 my $sql = _slurp_file("$num-UP.sql") or return;
38              
39 1         7 return $dbh->do($sql);
40             }
41              
42             sub _slurp_file {
43 2     2   6 my ($file_path) = @_;
44              
45 2 50       24 return if !-e $file_path;
46 2         43 open my $fh, "$file_path";
47 2         6 my $text = do { local $/; <$fh> };
  2         8  
  2         31  
48 2         9 close $fh;
49              
50 2         15 return $text;
51             }
52              
53              
54             1;