summaryrefslogtreecommitdiff
path: root/rt/tools/initdb
diff options
context:
space:
mode:
Diffstat (limited to 'rt/tools/initdb')
-rw-r--r--rt/tools/initdb216
1 files changed, 0 insertions, 216 deletions
diff --git a/rt/tools/initdb b/rt/tools/initdb
deleted file mode 100644
index ffb1ae3b0..000000000
--- a/rt/tools/initdb
+++ /dev/null
@@ -1,216 +0,0 @@
-#!/usr/bin/perl -w
-# $Header: /home/cvs/cvsroot/freeside/rt/tools/Attic/initdb,v 1.1 2002-08-12 06:17:08 ivan Exp $
-
-use strict;
-use vars qw($PROMPT $SCHEMA_FILE $SCHEMA_DIR
- $ACTION $DEBUG $DB_TYPE $DB_HOME
- $DB_HOST $DB_PORT $DB_DBA $DB_DATABASE $DB_DBA_PASSWORD);
-
-use DBI;
-use DBIx::DataSource qw( create_database drop_database );
-
-
-$|=1; #unbuffer that output.
-
-$DEBUG=0;
-$PROMPT = 1; #by default, should at least *ask* before nuking databases
-$SCHEMA_DIR ="etc";
-$SCHEMA_FILE = "$SCHEMA_DIR/schema.pm"; #hmm
-
-($DB_TYPE, $DB_HOME, $DB_HOST, $DB_PORT, $DB_DBA, $DB_DATABASE, $ACTION) = @ARGV;
-
-
-if ($DEBUG) {
- print_config_params();
-}
-my $dsn = "dbi:$DB_TYPE:";
-
-if (($DB_TYPE eq 'Pg') or ($DB_TYPE eq 'mysql')) {
- $dsn .= "dbname=$DB_DATABASE";
- if ($DB_HOST) {
- $dsn .= ";host=$DB_HOST";
- }
- if ($DB_PORT) {
- $dsn .= ";port=$DB_PORT";
- }
-}
-elsif ($DB_TYPE eq 'Oracle') {
- $dsn .= "$DB_DATABASE";
-}
-
-
-if ($ACTION eq 'create') {
- unless ($DB_TYPE eq 'Oracle') {
- print "Now creating a database for RT.\n";
- prompt_for_dba_password();
- create_db();
- }
-}
-elsif ($ACTION eq 'drop' ) {
- unless ($DB_TYPE eq 'Oracle') {
- print "Now dropping the RT2 database.\n";
- prompt_for_dba_password();
- drop_db();
- }
-}
-elsif ($ACTION eq 'insert' ) {
- print "Now populating database schema.\n";
- prompt_for_dba_password();
- insert_schema();
-}
-elsif ($ACTION eq 'generate') {
- prompt_for_dba_password();
- generate_schema();
-}
-else {
- print STDERR '$ACTION unspecified. Makefile error. It was '.$ACTION ;
- exit(-1);
-}
-
-
-# {{{ sub prompt_for_dba_password
-
-sub prompt_for_dba_password {
- print "Enter the $DB_TYPE password for $DB_DBA: ";
-
- system "stty -echo";
- $DB_DBA_PASSWORD = scalar(<STDIN>); #keep off commandline
- system "stty echo";
- chomp $DB_DBA_PASSWORD;
-
-}
-# }}}
-
-# {{{ sub print_config_params
-sub print_config_params {
- print <<END;
-Database creation parameters:
-
-DB_TYPE = $DB_TYPE
-DB_HOME = $DB_HOME
-DB_HOST = $DB_HOST
-DB_DBA = $DB_DBA
-DB_DBA_PASSWORD = <hidden>
-DB_DATABASE = $DB_DATABASE
-END
-}
-# }}}
-
-# {{{ sub drop_db
-sub drop_db {
-
- if ( $PROMPT ) {
- print <<END;
-
-About to drop $DB_TYPE database $DB_DATABASE.
-WARNING: This will erase all data in $DB_DATABASE.
-If you have an existing RT 2.x installation, this will destroy all your data.
-i
-END
- exit unless _yesno();
-
- }
-
-
- print "\nDropping $DB_TYPE database $DB_DATABASE.\n";
- drop_database( $dsn, $DB_DBA, $DB_DBA_PASSWORD )
- or warn $DBIx::DataSource::errstr;
-
-
-}
-# }}}
-
-# {{{ sub generate_schema
-sub generate_schema {
- my @schema = generate_schema_from_hash();
- print "Generating schema for $DB_TYPE...";
-
- system('mv', "$SCHEMA_DIR/schema.$DB_TYPE", "$SCHEMA_DIR/schema.$DB_TYPE.bak")
- if (-f "$SCHEMA_DIR/schema.$DB_TYPE");
- open(SCHEMA, ">$SCHEMA_DIR/schema.$DB_TYPE");
- foreach my $line (@schema) {
- print SCHEMA "$line;\n";
- }
- close(SCHEMA);
- print "done.\n";
-}
-# }}}
-
-# {{{ sub insert_schema
-sub insert_schema {
- my (@schema);
- print "\nCreating database schema.\n";
-
- my $dbh = DBI->connect( $dsn, $DB_DBA, $DB_DBA_PASSWORD ) or die $DBI::errstr;
-
- if ( -f "$SCHEMA_DIR/schema.$DB_TYPE") {
- open (SCHEMA, "<$SCHEMA_DIR/schema.$DB_TYPE");
- my $statement = "";
- foreach my $line (<SCHEMA>) {
- $statement .= $line;
- if ($line =~ /;$/) {
- $statement =~ s/;$//g;
- push @schema, $statement;
- $statement = "";
- }
- }
- }
-
- else {
- @schema = generate_schema_from_hash();
- }
-
- foreach my $statement (@schema) {
- print STDERR $statement if $DEBUG;
- my $sth = $dbh->prepare($statement) or die $dbh->errstr;
- unless ($sth->execute) {
- print STDERR "Problem with statement:\n $statement\n";
- die $sth->errstr;
- }
- }
-
-
- $dbh->disconnect;
- print "schema sucessfully inserted\n";
-
-}
-# }}}
-
-# {{{ sub generate_schema_from_hash
-sub generate_schema_from_hash {
- my (@schema);
-
- require DBIx::DBSchema;
- my $schema_href = do "$SCHEMA_FILE" or die $@ || $!;
- my $schema = DBIx::DBSchema->pretty_read($schema_href);
-
-
- foreach my $statement ( $schema->sql($dsn, $DB_DBA, $DB_DBA_PASSWORD ) ) {
- print STDERR $statement if $DEBUG;
- chomp $statement;
- push @schema, $statement;
-
- }
- return (@schema);
-
-}
-# }}}
-
-# {{{ sub create_db
-sub create_db {
-
- print "\nCreating $DB_TYPE database $DB_DATABASE.\n";
- create_database( $dsn, $DB_DBA, $DB_DBA_PASSWORD )
- or die $DBIx::DataSource::errstr;
-
-}
-# }}}
-
-# {{{ sub _yesno
-sub _yesno {
- print "Proceed [y/N]:";
- my $x = scalar(<STDIN>);
- $x =~ /^y/i;
-}
-
-# }}}