File Coverage

blib/lib/HPC/Runner/Command/Plugin/Logger/Sqlite/Deploy.pm
Criterion Covered Total %
statement 28 28 100.0
branch 6 10 60.0
condition n/a
subroutine 4 4 100.0
pod 0 3 0.0
total 38 45 84.4


line stmt bran cond sub pod time code
1             package HPC::Runner::Command::Plugin::Logger::Sqlite::Deploy;
2              
3 3     3   1717 use Moose::Role;
  3         4  
  3         25  
4              
5             has 'clean_db' => (
6             is => 'rw',
7             isa => 'Bool',
8             default => 0
9             );
10              
11             sub deploy_schema {
12 4     4 0 6 my $self = shift;
13              
14 4 100       136 if ( $self->clean_db ) {
15 2         8 $self->deploy_schema_drop_tables;
16             }
17 4         228 $self->deploy_schema_create_tables;
18             }
19              
20             sub deploy_schema_create_tables {
21 4     4 0 12 my $self = shift;
22              
23 4         146 my $dbh = $self->schema->storage->dbh;
24             ###Create Tables
25              
26 4         2168 my $sql = <<EOF;
27              
28             CREATE TABLE IF NOT EXISTS submission (
29             submission_pi INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
30             project text,
31             submission_meta text,
32             total_processes integer NOT NULL,
33             total_batches integet NOT NULL,
34             submission_time text NOT NULL
35             );
36              
37             EOF
38              
39 4         26 $dbh->do($sql);
40              
41 4         130930 $sql = <<EOF;
42             CREATE TABLE IF NOT EXISTS jobs (
43             job_pi INTEGER PRIMARY KEY NOT NULL,
44             submission_fk integer NOT NULL,
45             job_scheduler_id text,
46             start_time text NOT NULL,
47             exit_time text NOT NULL,
48             duration text,
49             jobs_meta text,
50             job_name text,
51             FOREIGN KEY (submission_fk) REFERENCES submission(submission_pi) ON DELETE NO ACTION ON UPDATE NO ACTION
52             );
53             EOF
54              
55 4         44 $dbh->do($sql);
56              
57 4         64976 $sql = <<EOF;
58             CREATE INDEX IF NOT EXISTS jobs_idx_submission_id ON jobs (submission_fk);
59             EOF
60 4         38 $dbh->do($sql);
61              
62 4         64662 $sql = <<EOF;
63              
64             CREATE TABLE IF NOT EXISTS tasks (
65             task_pi INTEGER PRIMARY KEY NOT NULL,
66             job_fk integer NOT NULL,
67             pid integer NOT NULL,
68             start_time text NOT NULL,
69             exit_time text,
70             duration text,
71             exit_code integer,
72             tasks_meta text,
73             task_tags text,
74             FOREIGN KEY (job_fk) REFERENCES jobs(job_pi) ON DELETE NO ACTION ON UPDATE NO ACTION
75             );
76             EOF
77              
78 4         36 $dbh->do($sql);
79              
80 4         65994 $sql = <<EOF;
81             CREATE INDEX IF NOT EXISTS tasks_idx_job_pi ON tasks (job_fk);
82             EOF
83              
84 4         74 $dbh->do($sql);
85             }
86              
87             sub deploy_schema_drop_tables {
88 2     2 0 2 my $self = shift;
89              
90 2         78 my $dbh = $self->schema->storage->dbh;
91              
92 2 50       52784 print "We are cleaning the db!\n" if $self->clean_db;
93              
94             ### Drop Tables
95 2         8 my $sql = <<'EOF';
96             --
97             -- Table: submission
98             --
99             DROP TABLE IF EXISTS submission;
100             EOF
101              
102 2 50       82 $dbh->do($sql) if $self->clean_db;
103              
104 2         1218 $sql = <<EOF;
105             --
106             -- Table: jobs
107             --
108             DROP TABLE IF EXISTS jobs;
109             EOF
110              
111 2 50       82 $dbh->do($sql) if $self->clean_db;
112              
113 2         228 $sql = <<EOF;
114             --
115             -- Table: tasks
116             --
117             DROP TABLE IF EXISTS tasks;
118             EOF
119              
120 2 50       76 $dbh->do($sql) if $self->clean_db;
121             }
122              
123             1;