Mojolicious-Plugin-DBViewer
view release on metacpan or search on metacpan
lib/Mojolicious/Plugin/DBViewer/templates/dbviewer/auto/select.html.ep view on Meta::CPAN
'>',,
'>=',
'is null',
'is not null',
'is space',
'is not space'
];
my $rule = [
database => {default => ''} => [
'safety_name'
],
table => {default => ''} => [
'safety_name'
],
c1 => [
'safety_name || blank'
],
c2 => [
'safety_name || blank'
],
c3 => [
'safety_name || blank'
],
v1 => [
'not_blank'
],
v2 => [
'not_blank'
],
v3 => [
'not_blank'
],
op1 => [
{in_array => $ops}
],
op2 => [
{in_array => $ops}
],
op3 => [
{in_array => $ops}
],
sk1 => [
'safety_name'
],
sk2 => [
'safety_name'
],
so1 => [
'any'
],
so2 => [
'any'
],
u => {default => 'and'} => [
{in_array => ['and', 'or']}
],
j => [
'any'
]
];
my $vresult = $dbviewer->validator->validate($params, $rule);
my $vparams = $vresult->data;
my $database = $vparams->{database};
my $table = $vparams->{table};
my $join_mode = $vparams->{j};
# Paramters
# DBI
my $dbi = $dbviewer->dbi;
my $union = $vparams->{u};
my $charset = stash('charset');
my $where = $dbi->where;
my $merged_param = {};
my @clauses;
for my $num (1 .. 3) {
my $column = $vparams->{"c$num"};
my $op = $vparams->{"op$num"};
my $value = $vparams->{"v$num"};
my $db_op;
my $param;
my $clause;
if (defined $column && $column ne '' && defined $op && $op ne '') {
my $db_value;
if ($op eq 'contains') {
$db_value = "%$value%";
$db_value = Encode::encode($charset, $db_value);
$clause = ":${column}{like}";
$param = {$column => $db_value};
}
elsif ($op eq 'in') {
my $values = $value;
$values =~ s/^ +//;
$values =~ s/ +$//;
my @values = split / +/, $values;
for my $value (@values) {
$value = Encode::encode($charset, $value);
}
$clause = "$column in (" . join(',', (":$column") x @values) . ")";
$param = {$column => \@values};
}
elsif ($op eq 'is null' || $op eq 'is not null') {
$clause = "$column $op";
$param = {};
}
elsif ($op eq 'is space' || $op eq 'is not space') {
$db_op = $op eq 'is space' ? '=' : '<>';
$clause = "$column $db_op ''";
$param = {};
}
else {
$db_op = $op;
$db_value = $value;
$clause = ":${column}{$db_op}";
( run in 0.749 second using v1.01-cache-2.11-cpan-437f7b0c052 )