X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=SL%2FDB.pm;h=60681c7e694d4a05e90731d54252ea679de15912;hb=644b730bf07a0187ea05439bfd36b4e75fad2a3d;hp=40c8a9596a06541fd37a30d55df6542545ab08cb;hpb=660c7e5312f7fae7766b731f7001e5e8197c6887;p=kivitendo-erp.git diff --git a/SL/DB.pm b/SL/DB.pm index 40c8a9596..60681c7e6 100644 --- a/SL/DB.pm +++ b/SL/DB.pm @@ -6,11 +6,12 @@ use Carp; use Data::Dumper; use English qw(-no_match_vars); use Rose::DB; -use Rose::DBx::Cache::Anywhere; +use SL::DB::Helper::Cache; +use Scalar::Util qw(blessed); use base qw(Rose::DB); -__PACKAGE__->db_cache_class('Rose::DBx::Cache::Anywhere'); +__PACKAGE__->db_cache_class('SL::DB::Helper::Cache'); __PACKAGE__->use_private_registry; my (%_db_registered); @@ -92,7 +93,7 @@ sub _register_db { my %flattened_settings = _flatten_settings(%connect_settings); $domain = 'KIVITENDO' if $type =~ m/^KIVITENDO/; - $type .= join($SUBSCRIPT_SEPARATOR, map { ($_, $flattened_settings{$_} || '') } sort grep { $_ ne 'dbpasswd' } keys %flattened_settings); + $type .= join($SUBSCRIPT_SEPARATOR, map { ($_, $flattened_settings{$_} || '') } sort grep { $_ ne 'password' } keys %flattened_settings); my $idx = "${domain}::${type}"; if (!$_db_registered{$idx}) { @@ -131,14 +132,14 @@ sub with_transaction { my $rv = 1; local $@; - + my $return_array = wantarray; eval { - wantarray + $return_array ? $self->do_transaction(sub { @result = $code->(@args) }) : $self->do_transaction(sub { $result = $code->(@args) }); } or do { my $error = $self->error; - if (ref $error) { + if (blessed $error) { if ($error->isa('SL::X::DBError')) { # gobble the exception } else { @@ -149,7 +150,7 @@ sub with_transaction { } }; - return wantarray ? @result : $result; + return $return_array ? @result : $result; } 1;