#!/usr/bin/perl

$NAMEDATABASE = "test";        		#Name database
$USERDATABASE = "postgres";    		#User database


$FILEPATCHED = "BackUpPatched.sql";	#File for patched backup 
$FILELOG = "RestoreLog.log";		#File for restore log




print "secondstep. Script restore from patched for postgresql\@etersoft 8.3.* backup\n";



NameFromConsole();
RetYesNo();



#readYESNO
print "Drop database '".$NAMEDATABASE."':\n";
$stringfordrop = "dropdb ".$NAMEDATABASE." -U ".$USERDATABASE."";
print "   ".$stringfordrop."\n";
system ($stringfordrop);

print "Create database '".$NAMEDATABASE."':\n";
$stringforcreate = "createdb -T template0 ".$NAMEDATABASE." -U ".$USERDATABASE."";
print "   ".$stringforcreate."\n";
system ($stringforcreate);


print "Restore database '".$NAMEDATABASE."' with parameters:\n";
	print " Name database:'".$NAMEDATABASE."'\n";
	print " User database:'".$USERDATABASE."'\n";
	print " File for backup:'".$FILEPATCHED."'\n";
	print " File log:'".$FILELOG."'\n";

$stringforrestore = "psql -o ".$FILELOG." -d ".$NAMEDATABASE." -f ". $FILEPATCHED." -U ".$USERDATABASE;
print "   ".$stringforrestore."\n";
system ($stringforrestore);









sub NameFromConsole
{
	$statusparam = false;
	$NAMEDATABASECON = shift or $statusparam = 1 ;
	if($NAMEDATABASECON eq "--help") 
	{
		PrintHelp();
		exit;
	}	

	if($statusparam)
	{
		PrintHelp();
		print "Now will use all parameters will used default.\n";
		return;
	}
	$NAMEDATABASE = $NAMEDATABASECON;
	$USERDATABASECON = shift or return;
	$USERDATABASE = $USERDATABASECON;
	$FILEPATCHEDCON = shift or return;
	$FILEPATCHED = $FILEPATCHEDCON;
	$FILELOGCON = shift or return;
	$FILELOG = $FILELOGCON;

}

sub PrintHelp
{
	print "You can use all defaul parameters from top of this file or write it on command line.\n";
	print "\$secondstep [name database] [user database] [name file patched backup] [name file log restore]\n";
	print "\$secondstep --help this help\n";
	
	print "For example:\n";
	print "   \$secondstep test postgres BackUpPatched.sql RestoreLog.log\n";
	print "or\n";
	print "   \$secondstep test postgres\n";
	print "Other parameters will used default.\n\n";
}


sub RetYesNo
{
	$stryes = "yes\n";
	$strno = "no\n";

	print "This script will drop database ".$NAMEDATABASE.". Continue? " ;
	while (($yesnostring ne $stryes) and ($yesnostring ne $strno)) 
	{
		print "[yes/no]:";
		$yesnostring = <>;
	}
	if ($yesnostring eq $strno)
		{exit;}
}
