| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
|
|
|
|
|
|
package AproJo::Command::setup; |
|
2
|
1
|
|
|
1
|
|
711
|
use Mojo::Base 'Mojolicious::Command'; |
|
|
1
|
|
|
|
|
2
|
|
|
|
1
|
|
|
|
|
13
|
|
|
3
|
|
|
|
|
|
|
|
|
4
|
1
|
|
|
1
|
|
730
|
use Term::Prompt qw/prompt/; |
|
|
1
|
|
|
|
|
18897
|
|
|
|
1
|
|
|
|
|
684
|
|
|
5
|
|
|
|
|
|
|
|
|
6
|
|
|
|
|
|
|
has description => "Create the database for your AproJo application.\n"; |
|
7
|
|
|
|
|
|
|
has usage => "usage: $0 setup\n"; |
|
8
|
|
|
|
|
|
|
|
|
9
|
|
|
|
|
|
|
sub run { |
|
10
|
0
|
|
|
0
|
1
|
0
|
my ($self) = @_; |
|
11
|
|
|
|
|
|
|
|
|
12
|
0
|
|
|
|
|
0
|
my $user = prompt('x', 'Admin Username: ', '', ''); |
|
13
|
0
|
|
|
|
|
0
|
my $full = prompt('x', 'Admin Full Name: ', '', ''); |
|
14
|
0
|
|
|
|
|
0
|
my $pass1 = prompt('p', 'Admin Password: ', '', ''); |
|
15
|
0
|
|
|
|
|
0
|
print "\n"; |
|
16
|
|
|
|
|
|
|
|
|
17
|
|
|
|
|
|
|
#TODO check for acceptable password |
|
18
|
|
|
|
|
|
|
|
|
19
|
0
|
|
|
|
|
0
|
my $pass2 = prompt('p', 'Repeat Admin Password: ', '', ''); |
|
20
|
0
|
|
|
|
|
0
|
print "\n"; |
|
21
|
|
|
|
|
|
|
|
|
22
|
0
|
0
|
|
|
|
0
|
unless ($pass1 eq $pass2) { |
|
23
|
0
|
|
|
|
|
0
|
die "Passwords do not match"; |
|
24
|
|
|
|
|
|
|
} |
|
25
|
|
|
|
|
|
|
|
|
26
|
0
|
|
|
|
|
0
|
$self->inject_sample_data($user, $pass1, $full); |
|
27
|
|
|
|
|
|
|
|
|
28
|
0
|
|
|
|
|
0
|
print "Database created! Run 'aprojo daemon' to start the server.\n"; |
|
29
|
|
|
|
|
|
|
} |
|
30
|
|
|
|
|
|
|
|
|
31
|
|
|
|
|
|
|
sub inject_sample_data { |
|
32
|
1
|
|
|
1
|
0
|
66969
|
my $self = shift; |
|
33
|
1
|
50
|
|
|
|
2
|
my $schema = eval { $_[-1]->isa('AproJo::DB::Schema') } ? pop() : $self->app->schema; |
|
|
1
|
|
|
|
|
13
|
|
|
34
|
|
|
|
|
|
|
|
|
35
|
1
|
50
|
|
|
|
3
|
my $user = shift or die "Must provide an administrative username"; |
|
36
|
1
|
50
|
|
|
|
4
|
my $pass = shift or die "Must provide a password for $user"; |
|
37
|
1
|
|
50
|
|
|
5
|
my $alias = shift || "Administrator"; |
|
38
|
|
|
|
|
|
|
|
|
39
|
1
|
|
|
|
|
8
|
$schema->deploy({ add_drop_table => 1}); |
|
40
|
|
|
|
|
|
|
|
|
41
|
1
|
|
|
|
|
699864
|
my $units = [ |
|
42
|
|
|
|
|
|
|
{'description_short' => 'pc', 'description_long' => 'pieces'}, |
|
43
|
|
|
|
|
|
|
{'description_short' => 'h', 'description_long' => 'hours'}, |
|
44
|
|
|
|
|
|
|
]; |
|
45
|
|
|
|
|
|
|
|
|
46
|
1
|
|
|
|
|
3
|
for my $unit (@$units) { |
|
47
|
2
|
|
|
|
|
3993
|
$schema->resultset('Unit')->create($unit); |
|
48
|
|
|
|
|
|
|
} |
|
49
|
|
|
|
|
|
|
|
|
50
|
1
|
|
|
|
|
1536
|
my $statuses = [ |
|
51
|
|
|
|
|
|
|
{'status' => 'ordered'}, |
|
52
|
|
|
|
|
|
|
{'status' => 'work'}, |
|
53
|
|
|
|
|
|
|
{'status' => 'proven'}, |
|
54
|
|
|
|
|
|
|
{'status' => 'invoiced'}, |
|
55
|
|
|
|
|
|
|
]; |
|
56
|
|
|
|
|
|
|
|
|
57
|
1
|
|
|
|
|
3
|
for my $status (@$statuses) { |
|
58
|
4
|
|
|
|
|
4106
|
$schema->resultset('Status')->create($status); |
|
59
|
|
|
|
|
|
|
} |
|
60
|
|
|
|
|
|
|
|
|
61
|
1
|
|
|
|
|
1704
|
my $role = $schema->resultset('Role')->create({ |
|
62
|
|
|
|
|
|
|
'name' => 'admin', |
|
63
|
|
|
|
|
|
|
}); |
|
64
|
|
|
|
|
|
|
|
|
65
|
1
|
|
|
|
|
1594
|
my $admin = $schema->resultset('User')->create({ |
|
66
|
|
|
|
|
|
|
name => $user, |
|
67
|
|
|
|
|
|
|
alias => $alias, |
|
68
|
|
|
|
|
|
|
password => $pass, |
|
69
|
|
|
|
|
|
|
}); |
|
70
|
|
|
|
|
|
|
|
|
71
|
1
|
|
|
|
|
1797
|
my $admin_role = $schema->resultset('UserRole')->create({ |
|
72
|
|
|
|
|
|
|
user_id => $admin->user_id, |
|
73
|
|
|
|
|
|
|
role_id => $role->role_id, |
|
74
|
|
|
|
|
|
|
}); |
|
75
|
|
|
|
|
|
|
|
|
76
|
|
|
|
|
|
|
#my $group = $admin->add_to_groups({ |
|
77
|
|
|
|
|
|
|
# 'name' => 'admin', |
|
78
|
|
|
|
|
|
|
#}); |
|
79
|
|
|
|
|
|
|
|
|
80
|
1
|
|
|
|
|
1528
|
return $schema; |
|
81
|
|
|
|
|
|
|
} |
|
82
|
|
|
|
|
|
|
|
|
83
|
|
|
|
|
|
|
1; |