File Coverage

blib/lib/Mojolicious/Plugin/SQLiteViewerLite/Base/Sqliteviewerlite.pm
Criterion Covered Total %
statement 95 95 100.0
branch 2 2 100.0
condition 2 3 66.6
subroutine 10 10 100.0
pod 0 8 0.0
total 109 118 92.3


line stmt bran cond sub pod time code
1             package Mojolicious::Plugin::SQLiteViewerLite::Base::Sqliteviewerlite;
2 2     2   1592 use Mojo::Base 'Mojolicious::Controller';
  2         6  
  2         14  
3 2     2   1498 use Data::Page;
  2         11224  
  2         13  
4              
5             sub default {
6 8     8 0 85596 my $self = shift;
7            
8 8         71 my $plugin = $self->stash->{plugin};
9 8         90 my $command = $plugin->command;
10            
11 8         117 my $database = $command->show_databases;
12 8         41 my $current_database = $command->current_database;
13              
14 8         40 $self->render(
15             databases => $database,
16             current_database => $current_database,
17             );
18             }
19              
20             sub tables {
21 6     6 0 163940 my $self = shift;;
22            
23 6         25 my $plugin = $self->stash->{plugin};
24 6         101 my $command = $plugin->command;
25              
26 6         84 my $params = $command->params($self);
27 6         38 my $rule = [
28             database => {default => ''} => [
29             'safety_name'
30             ]
31             ];
32 6         42 my $vresult = $plugin->validator->validate($params, $rule);
33 6         515 my $database = $vresult->data->{database};
34 6         79 my $tables = $command->show_tables($database);
35            
36 6         38 return $self->render(
37             database => $database,
38             tables => $tables
39             );
40             }
41              
42             sub table {
43 13     13 0 166999 my $self = shift;;
44            
45 13         97 my $plugin = $self->stash->{plugin};
46 13         141 my $command = $plugin->command;
47              
48             # Validation
49 13         111 my $params = $command->params($self);
50 13         90 my $rule = [
51             database => {default => ''} => [
52             'safety_name'
53             ],
54             table => {default => ''} => [
55             'safety_name'
56             ]
57             ];
58 13         65 my $vresult = $plugin->validator->validate($params, $rule);
59 13         964 my $database = $vresult->data->{database};
60 13         273 my $table = $vresult->data->{table};
61            
62 13         177 my $table_def = $command->show_create_table($database, $table);
63              
64 13         73 return $self->render(
65             database => $database,
66             table => $table,
67             table_def => $table_def,
68             );
69             }
70              
71             sub showcreatetables {
72 4     4 0 51967 my $self = shift;;
73            
74 4         18 my $plugin = $self->stash->{plugin};
75 4         46 my $command = $plugin->command;
76              
77             # Validation
78 4         34 my $params = $command->params($self);
79 4         25 my $rule = [
80             database => {default => ''} => [
81             'safety_name'
82             ]
83             ];
84 4         47 my $vresult = $plugin->validator->validate($params, $rule);
85 4         370 my $database = $vresult->data->{database};
86 4         48 my $tables = $command->show_tables($database);
87            
88             # Get create tables
89 4         15 my $create_tables = {};
90 4         16 for my $table (@$tables) {
91 12         46 $create_tables->{$table} = $plugin->command->show_create_table($database, $table);
92             }
93            
94             $self->render(
95 4         55 database => $database,
96             create_tables => $create_tables
97             );
98             }
99              
100             sub showselecttables {
101 4     4 0 56157 my $self = shift;;
102            
103 4         18 my $plugin = $self->stash->{plugin};
104 4         42 my $command = $plugin->command;
105              
106             # Validation
107 4         33 my $params = $command->params($self);
108 4         23 my $rule = [
109             database => {default => ''} => [
110             'safety_name'
111             ]
112             ];
113 4         21 my $vresult = $plugin->validator->validate($params, $rule);
114 4         322 my $database = $vresult->data->{database};
115 4         44 my $tables = $command->show_tables($database);
116            
117 4         27 $self->render(
118             database => $database,
119             tables => $tables
120             );
121             }
122              
123             sub showprimarykeys {
124 5     5 0 101862 my $self = shift;;
125            
126 5         24 my $plugin = $self->stash->{plugin};
127 5         53 my $command = $plugin->command;
128              
129             # Validation
130 5         49 my $params = $command->params($self);
131 5         33 my $rule = [
132             database => {default => ''} => [
133             'safety_name'
134             ],
135             ];
136 5         34 my $vresult = $plugin->validator->validate($params, $rule);
137 5         411 my $database = $vresult->data->{database};
138            
139             # Get primary keys
140 5         123 my $primary_keys = $command->show_primary_keys($database);
141            
142 5         38 $self->render(
143             database => $database,
144             primary_keys => $primary_keys
145             );
146             }
147              
148             sub shownullallowedcolumns {
149 5     5 0 92388 my $self = shift;;
150            
151 5         21 my $plugin = $self->stash->{plugin};
152 5         55 my $command = $plugin->command;
153              
154             # Validation
155 5         47 my $params = $command->params($self);
156 5         33 my $rule = [
157             database => {default => ''} => [
158             'safety_name'
159             ],
160             ];
161 5         27 my $vresult = $plugin->validator->validate($params, $rule);
162 5         423 my $database = $vresult->data->{database};
163            
164             # Get null allowed columns
165 5         110 my $null_allowed_columns = $command->show_null_allowed_columns($database);
166            
167 5         30 $self->render(
168             database => $database,
169             null_allowed_columns => $null_allowed_columns
170             );
171             }
172              
173             sub select {
174 11     11 0 3239982 my $self = shift;;
175            
176 11         63 my $plugin = $self->stash->{plugin};
177 11         124 my $command = $plugin->command;
178              
179             # Validation
180 11         136 my $params = $command->params($self);
181 11         151 my $rule = [
182             database => {default => ''} => [
183             'safety_name'
184             ],
185             table => {default => ''} => [
186             'safety_name'
187             ],
188             page => {default => 1} => [
189             'uint'
190             ],
191             condition_column => [
192             'safety_name'
193             ],
194             condition_value => [
195             'not_blank'
196             ]
197             ];
198 11         90 my $vresult = $plugin->validator->validate($params, $rule);
199 11         2461 my $database = $vresult->data->{database};
200 11         269 my $table = $vresult->data->{table};
201            
202             # Where
203 11         241 my $column = $vresult->data->{condition_column};
204 11         234 my $value = $vresult->data->{condition_value};
205            
206 11         78 my $where;
207 11 100 66     61 if (defined $column && defined $value) {
208 1         9 $where = $plugin->dbi->where;
209 1         107 $where->clause(":${column}{like}");
210 1         30 $where->param({$column => $value});
211             }
212            
213             # Limit
214 11         187 my $page = $vresult->data->{page};
215 11         83 my $count = 100;
216 11         52 my $offset = ($page - 1) * $count;
217            
218             # Get null allowed columns
219 11         85 my $result = $plugin->dbi->select(
220             table => "$database.$table",
221             where => $where,
222             append => "limit $offset, $count"
223             );
224 9         9608 my $header = $result->header;
225 9         367 my $rows = $result->fetch_all;
226 9         5389 my $sql = $plugin->dbi->last_sql;
227            
228             # Pager
229 9         397 my $total = $plugin->dbi->select(
230             'count(*)',
231             table => "$database.$table",
232             where => $where
233             )->value;
234 9         7644 my $pager = Data::Page->new($total, $count, $page);
235            
236 9         713 $self->render(
237             database => $database,
238             table => $table,
239             header => $header,
240             rows => $rows,
241             sql => $sql,
242             pager => $pager
243             );
244             }
245              
246             1;