s/dbdef/DBIx::DBSchema/
[freeside.git] / bin / dbdef-create
index fe7475b..902f7f1 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/perl -Tw
 #
-# $Id: dbdef-create,v 1.2 1998-11-19 11:17:44 ivan Exp $
+# $Id: dbdef-create,v 1.3 2001-04-15 12:56:31 ivan Exp $
 #
 # create dbdef file for existing mySQL database (needs SHOW|DESCRIBE command
 # not in Pg) based on fs-setup
@@ -8,14 +8,17 @@
 # ivan@sisd.com 98-jun-2
 #
 # $Log: dbdef-create,v $
-# Revision 1.2  1998-11-19 11:17:44  ivan
+# Revision 1.3  2001-04-15 12:56:31  ivan
+# s/dbdef/DBIx::DBSchema/
+#
+# Revision 1.2  1998/11/19 11:17:44  ivan
 # adminsuidsetup requires argument
 #
 
 use strict;
 use DBI;
-use FS::dbdef;
-use FS::UID qw(adminsuidsetup datasrc);
+use DBIx::DBSchema;
+use FS::UID qw(adminsuidsetup datasrc driver_name);
 
 my $user = shift or die &usage;
 
@@ -24,70 +27,7 @@ my($dbh)=adminsuidsetup $user;
 #needs to match FS::Record
 my($dbdef_file) = "/usr/local/etc/freeside/dbdef.". datasrc;
 
-my($tables_sth)=$dbh->prepare("SHOW TABLES");
-my($tables_rv)=$tables_sth->execute;
-
-my(@tables);
-foreach ( @{$tables_sth->fetchall_arrayref} ) {
-  my($table)=${$_}[0]; 
-  #print "TABLE\t$table\n";
-
-  my($index_sth)=$dbh->prepare("SHOW INDEX FROM $table");
-  my($primary_key)='';
-  my(%index,%unique);
-  for ( 1 .. $index_sth->execute ) {
-    my($row)=$index_sth->fetchrow_hashref;
-    if ( ${$row}{'Key_name'} eq "PRIMARY" ) {
-      $primary_key=${$row}{'Column_name'};
-      next;
-    }
-    if ( ${$row}{'Non_unique'} ) { #index
-      push @{$index{${$row}{'Key_name'}}}, ${$row}{'Column_name'};
-    } else { #unique
-      push @{$unique{${$row}{'Key_name'}}}, ${$row}{'Column_name'};
-    }
-  }
-
-  my(@index)=values %index;
-  my(@unique)=values %unique;
-  #print "\tPRIMARY KEY $primary_key\n";
-  foreach (@index) {
-    #print "\tINDEX\t", join(', ', @{$_}), "\n";
-  }
-  foreach (@unique) {
-    #print "\tUNIQUE\t", join(', ', @{$_}), "\n";
-  }
-
-  my($columns_sth)=$dbh->prepare("SHOW COLUMNS FROM $table");
-  my(@columns);
-  for ( 1 .. $columns_sth->execute ) {
-    my($row)=$columns_sth->fetchrow_hashref;
-    #print "\t", ${$row}{'Field'}, "\n";
-    ${$row}{'Type'} =~ /^(\w+)\(?([\d\,]+)?\)?( unsigned)?$/
-      or die "Illegal type ${$row}{'Type'}\n";
-    my($type,$length)=($1,$2);
-    my($null)=${$row}{'Null'};
-    $null =~ s/YES/NULL/;
-    push @columns, new FS::dbdef_column (
-      ${$row}{'Field'},
-      $type,
-      $null,
-      $length,
-    );
-  }
-
-  #print "\n";
-  push @tables, new FS::dbdef_table (
-    $table,
-    $primary_key,
-    new FS::dbdef_unique (\@unique),
-    new FS::dbdef_index (\@index),
-    @columns,
-  );
-
-}
-
-my($dbdef) = new FS::dbdef ( @tables );
+my $dbdef = new_native DBIx::DBSchema $dbh;
 
 #important
 $dbdef->save($dbdef_file);