|
package SL::DB;
|
|
|
|
use strict;
|
|
|
|
use Carp;
|
|
use Data::Dumper;
|
|
use English qw(-no_match_vars);
|
|
use Rose::DB;
|
|
use SL::DB::Helper::Cache;
|
|
use Scalar::Util qw(blessed);
|
|
|
|
use base qw(Rose::DB);
|
|
|
|
__PACKAGE__->db_cache_class('SL::DB::Helper::Cache');
|
|
__PACKAGE__->use_private_registry;
|
|
|
|
my (%_db_registered);
|
|
|
|
sub dbi_connect {
|
|
shift;
|
|
|
|
# runtime require to break circular include
|
|
require SL::DBConnect;
|
|
return SL::DBConnect->connect(@_);
|
|
}
|
|
|
|
sub create {
|
|
my $domain = shift || SL::DB->default_domain;
|
|
my $type = shift || SL::DB->default_type;
|
|
|
|
($domain, $type) = _register_db($domain, $type);
|
|
|
|
my $db = __PACKAGE__->new_or_cached(domain => $domain, type => $type);
|
|
|
|
return $db;
|
|
}
|
|
|
|
sub client {
|
|
create(undef, 'KIVITENDO');
|
|
}
|
|
|
|
sub auth {
|
|
create(undef, 'KIVITENDO_AUTH');
|
|
}
|
|
|
|
sub _register_db {
|
|
my $domain = shift;
|
|
|