use strict;
use warnings;
use IO::Uncompress::Gunzip qw(gunzip $GunzipError);
use FindBin qw($Bin);
use Config::Auto;
use DBI;
####### WHICH DB TO WIPEOUT & RECREATE
# my $DB = 'tmp'; # 'lims_scratch'; # now need specifying on command-line
##############################
my $DB = $ARGV[0] or die 'ERROR: name of db to re-create is required';
use lib "$Bin/../lib"; # warn $Bin; exit;
require "$Bin/../setup/lims.sql";
#require "$Bin/../setup/data.sql"; # using core_data mysqldump now
use vars qw($SQL_FOR_TABLE $FOREIGN_KEYS $DATA);
my $cfg = Config::Auto::parse("$Bin/../config/lims_config.pl", format => 'perl');
my ($dsn, $userid, $pwd) = @{ $cfg->{dbh_params} }; # arrayref
my $dbh = DBI->connect(
$dsn, $userid, $pwd,
{RaiseError => 1, PrintError => 0}
);
map { $dbh->do($_) }
(
qq!DROP DATABASE IF EXISTS `$DB`!,
qq!CREATE DATABASE `$DB`!,
qq!USE `$DB`!,
);
foreach ( sort keys %$SQL_FOR_TABLE ) { print $_, "\n";
$dbh->do( qq!DROP TABLE IF EXISTS $_! );
$dbh->do( $SQL_FOR_TABLE->{$_} );
}
foreach my $fk( sort keys %$FOREIGN_KEYS ) { print $fk, "\n";
$dbh->do($FOREIGN_KEYS->{$fk});
}
# using core_data mysqldump now
#foreach ( @$DATA ) { print $_ . "\n";
# $dbh->do($_);
#}
$dbh->disconnect;
#system('./dump_core_data.sh'); # needs $DB passing
gunzip "$Bin/../setup/core_data.gz" => "$Bin/core_data" # retains original .gz file
or die "gunzip failed: $GunzipError\n";
system("mysql -u $userid -p$pwd $DB < $Bin/core_data");
unlink "$Bin/core_data";