--- nfo/perl/libs/Data/Storage/Handler/DBI.pm 2002/12/01 07:09:09 1.7 +++ nfo/perl/libs/Data/Storage/Handler/DBI.pm 2002/12/01 22:20:43 1.8 @@ -1,8 +1,11 @@ ################################# # -# $Id: DBI.pm,v 1.7 2002/12/01 07:09:09 joko Exp $ +# $Id: DBI.pm,v 1.8 2002/12/01 22:20:43 joko Exp $ # # $Log: DBI.pm,v $ +# Revision 1.8 2002/12/01 22:20:43 joko +# + sub createDb (from Storage.pm) +# # Revision 1.7 2002/12/01 07:09:09 joko # + sub getListFiltered (dummy redirecting to getListUnfiltered) # @@ -94,6 +97,8 @@ $logger->debug( __PACKAGE__ . "->configureCOREHANDLE" ); + return if !$self->{COREHANDLE}; + # apply configured modifications to DBI-handle if (exists $self->{locator}->{dbi}->{trace_level} && exists $self->{locator}->{dbi}->{trace_file}) { $self->{COREHANDLE}->trace($self->{locator}->{dbi}->{trace_level}, $self->{locator}->{dbi}->{trace_file}); @@ -202,4 +207,41 @@ return $self->getListUnfiltered($nodename); } +# TODO: do this via a parametrized "$self->connect()" +sub createDb { + + my $self = shift; + + # get dsn from Data::Storage::Locator instance + my $dsn = $self->{locator}->{dbi}->{dsn}; + + $logger->debug( __PACKAGE__ . "->createDb( dsn $dsn )" ); + + # remove database setting from dsn-string + $dsn =~ s/database=(.+?);//; + + # remember extracted database name to know what actually to create right now + my $database_name = $1; + + # flag to indicate goodness + my $ok; + + # connect to database server - don't select/use any specific database + #if ( my $dbh = DBI->connect($dsn, '', '', { PrintError => 0 } ) ) { + if ( my $dbh = DBI->connect($dsn, '', '', $self->{locator}->{dbi} ) ) { + + if ($database_name) { + if ($dbh->do("CREATE DATABASE $database_name")) { + $ok = 1; + } + } + + $dbh->disconnect(); + + } + + return $ok; + +} + 1;