#!/usr/bin/perl
#
# destroy-db
#
# Copyright 1999 -- 2001, onShore Development Inc. <URL:http://www.onshore-devel.com/>
#
#
# This program is free software under the terms of the GNU General Public
# License (GPL). A copy of the GPL, "COPYING", should have been made
# available with this software.  If not, a copy may be obtained at 
# http://www.fsf.org/copyleft/gpl.html
#
# $Id: destroy-db,v 1.2 2001/08/29 22:22:59 adam Exp $
#
$|=1; 
use Getopt::Long; 

sub usage { 
    print "Usage:\n\tdestroy-db -db database-type -dbowner database-owner -dbuser database_user_account -sql_interpreter sql_interpreter\n";
}

$usergroup = 'appserver';	# hardcoded for now

&GetOptions ( 
	      "db=s" => \$db,
	      "dbowner=s" => \$dbowner,
	      "dbuser=s" => \$dbuser,
	      "sql_interpreter=s" => \$sql_interpreter,
	      "dbname=s" =>  \$dbname,
); 

# required args
if ( ! ( $db & $sql_interpreter ) ) {
    usage();
    exit 1;
}

if ( $db eq "postgres" ) {
    # set our sql intepreter options
    @sql_interp_list = ( $sql_interpreter, '-d', 'template1', '-t', '-q' );

    print "Checking postgres version...\n";
    $pgver = 0;
    open(DB_SHELL, 
	join(" ", './install/check-pg-version', '-sql_interpreter', $sql_interpreter)
	 . "|")
	or die "ERROR: 'check-pg-version' exited with error\n";
    local $SIG{PIPE} = sub { die "ERROR: 'check-pg-version' pipe broke\n" };
    $pgver = <DB_SHELL>;
    close DB_SHELL;
    print "  done.\n";

    if ( $dbuser ) {
        print "Destroying database user...\n";
        if ( $pgver < 7 ) {
            system('destroyuser', $dbuser) == 0
                or warn "WARNING: destroydb $dbname failed";
        } else {
            system('dropuser', $dbuser) == 0
                or warn "WARNING: dropuser $dbname failed";
        }
        print "  done.\n";
    }

    print "Destroying application database group...\n";
    open(DB_SHELL, 
         join(" ", @sql_interp_list, '-c', 
              "\"delete from pg_group where groname = 'appserver';\"")
         . "|")
        or warn "WARNING: '$sql_interpreter' exited with error\n";
    $_ = <DB_SHELL>;
    close DB_SHELL
	or die "WARNING: '$sql_interpreter' exited with error\n";
    print "  done.\n";

    if ( $dbname ) {
        print "Destroying postgres database '$dbname'...\n"; 
        if ( $pgver < 7 ) {
            system('destroydb', $dbname) == 0
                or warn "WARNING: destroydb $dbname failed";
        } else {
            system('dropdb', $dbname) == 0
                or warn "WARNING: dropdb $dbname failed";
        }
        print "  done.\n";
    }

} else {
    die "ERROR: database '$db' not supported\n";
}


