The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

sub drop_create {
  my($db,$table,$c,$sql,$dbh) = @_;
  my $rv = $dbh->do("DROP TABLE $table");

  ## init catalog
  if ( defined $c ) {
    my $c_sql = qq{
      DELETE FROM c_key
      WHERE db_name      = '$db'
      AND   ( table_name = '$table' )
    };
    my $sth = do_sql($c->dbh,$c_sql); $sth->finish;
    $c_sql = qq{
      DELETE FROM c_relationship
      WHERE db_name    = '$db'
      AND   ( fk_table = '$table' )
    };
    $sth = do_sql($c->dbh,$c_sql); $sth->finish;
  }

  return $dbh->do($sql) || die $dbh->errstr;
}

sub do_sql {
  my($dbh,$sql) = @_;
  #print STDERR "$sql\n";
  my $sth = $dbh->prepare($sql) || die($dbh->errstr);
  my $rv  = $sth->execute       || die($sth->errstr);
  return $sth;
}  

sub connect_args($$) {
  my %driver      = %t::Config::driver;
  my($driver,$db) = @_;
  my $catalog_db  = $DbFramework::Catalog::db;
  my($db_name,$dsn,$u,$p);

 SWITCH: {
    ($db eq 'catalog') && do {
      $db_name  = $catalog_db;
    };
    ($db eq 'test') && do {
      delete $driver{$driver}->{$catalog_db};
      ($db_name) = keys %{$driver{$driver}};
    };
  }
  $dsn = $driver{$driver}->{$db_name}->{dsn};
  $u   = $driver{$driver}->{$db_name}->{u};
  $p   = $driver{$driver}->{$db_name}->{p};
  return($db_name,$dsn,$u,$p);
}

sub yn($$) {
  my($prompt,$default) = @_;
  if ( $default ) {
    $answer = 'Y'; $prompt .= ': (Y/n) ';
  } else {
    $answer = 'N'; $prompt .= ': (y/N) ';
  }
  my $in = '';
  while ( 1 ) {
    print $prompt;
    $in = <STDIN>;
    last if $in =~ /^\n$/;
    chop $in;
    $in = uc($in);
    if ( $in =~ /^(Y|N)$/ ) {
      $answer = $in;
      last;
    }
  }
  return ($answer eq 'Y') ? 1 : 0;
}

1;