Eine weitere Datenbankhilfsfunktion eingebaut.
[kivitendo-erp.git] / SL / DBUtils.pm
1 package SL::DBUtils;
2
3 require Exporter;
4 @ISA = qw(Exporter);
5
6 @EXPORT = qw(conv_i conv_date do_query selectrow_query dump_query);
7
8 sub conv_i {
9   my ($value, $default) = @_;
10   return (defined($value) && "$value" ne "") ? $value * 1 : $default;
11 }
12
13 sub conv_date {
14   my ($value) = @_;
15   return (defined($value) && "$value" ne "") ? $value : undef;
16 }
17
18 sub do_query {
19   my ($form, $dbh, $query) = splice(@_, 0, 3);
20
21   if (0 == scalar(@_)) {
22     $dbh->do($query) || $form->dberror($query);
23   } else {
24     $dbh->do($query, undef, @_) ||
25       $form->dberror($query . " (" . join(", ", @_) . ")");
26   }
27 }
28
29 sub selectrow_query {
30   my ($form, $dbh, $query) = splice(@_, 0, 3);
31
32   if (0 == scalar(@_)) {
33     my @results = $dbh->selectrow_array($query);
34     $form->dberror($query) if ($dbh->err);
35     return @results;
36   } else {
37     my @results = $dbh->selectrow_array($query, undef, @_);
38     $form->dberror($query . " (" . join(", ", @_) . ")") if ($dbh->err);
39     return @results;
40   }
41 }
42
43 sub dump_query {
44   my ($level, $msg, $query) = splice(@_, 0, 3);
45   while ($query =~ /\?/) {
46     my $value = shift(@_);
47     $value =~ s/\'/\\\'/g;
48     $value = "'${value}'";
49     $query =~ s/\?/$value/;
50   }
51
52   $msg .= " " if ($msg);
53
54   $main::lxdebug->message($level, $msg . $query);
55 }
56
57 1;