Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 8545bbce

Von Sven Schöling vor fast 13 Jahren hinzugefügt

  • ID 8545bbce275692e1e4ac9023320c7c4a8451bfdc
  • Vorgänger 4f6a2fa1
  • Nachfolger 4070dbf3

DBUtils auf LIKE version von add_token gebracht.

Unterschiede anzeigen:

SL/DBUtils.pm
return (defined($value) && "$value" ne "") ? $value * 1 : $default;
}
# boolean escape
sub conv_b {
my ($value, $default) = @_;
return !defined $value && defined $default ? $default
: $value ? 't'
: 'f';
}
sub conv_date {
my ($value) = @_;
return (defined($value) && "$value" ne "") ? $value : undef;
......
my %params = @_;
my $col = $params{col};
my $val = $params{val};
my $method = $params{method} || '=';
my $escape = $params{esc} || sub { $_ };
my $method = $params{esc} =~ /^start|end|substr$/ ? 'ILIKE' : $params{method} || '=';
$val = [ $val ] unless ref $val eq 'ARRAY';
my %escapes = (
id => \&conv_i,
bool => \&conv_b,
date => \&conv_date,
start => sub { $_[0] . '%' },
end => sub { '%' . $_[0] },
substr => sub { '%' . $_[0] . '%' },
);
my $_long_token = sub {
my $op = shift;
sub {
my $col = shift;
return scalar @_ ? join ' OR ', ("$col $op ?") x scalar @_,
: undef;
}
};
my %methods = (
'=' => sub {
my $col = shift;
......
: scalar @_ == 1 ? sprintf '%s = ?', $col
: undef;
},
map({ $_ => $_long_token->($_) } qw(LIKE ILIKE >= <= > <)),
);
$method = $methods{$method} || $method;

Auch abrufbar als: Unified diff