podnitfix
[freeside.git] / bin / fs-setup
index b2000a5..c1e87c8 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/perl -Tw
 #
-# $Id: fs-setup,v 1.30 2000-12-01 18:33:32 ivan Exp $
+# $Id: fs-setup,v 1.37 2001-06-03 14:16:11 ivan Exp $
 #
 # ivan@sisd.com 97-nov-8,9
 #
 # fix radius attributes ivan@sisd.com 98-sep-27
 #
 # $Log: fs-setup,v $
-# Revision 1.30  2000-12-01 18:33:32  ivan
+# Revision 1.37  2001-06-03 14:16:11  ivan
+# allow empty refund reasons
+#
+# Revision 1.36  2001/04/15 12:56:31  ivan
+# s/dbdef/DBIx::DBSchema/
+#
+# Revision 1.35  2001/04/15 09:36:43  ivan
+# http://www.sisd.com/freeside/list-archive/msg01450.html
+#
+# Revision 1.34  2001/04/09 23:05:16  ivan
+# Transactions Part I!!!
+#
+# Revision 1.33  2001/02/03 14:03:50  ivan
+# time-based prepaid cards, session monitor.  woop!
+#
+# Revision 1.32  2000/12/04 00:13:02  ivan
+# fix nas.last type
+#
+# Revision 1.31  2000/12/01 18:34:53  ivan
+# another tyop
+#
+# Revision 1.30  2000/12/01 18:33:32  ivan
 # tyop
 #
 # Revision 1.29  2000/11/07 15:00:37  ivan
@@ -120,7 +141,11 @@ BEGIN { $FS::Record::setup_hack = 1; }
 
 use strict;
 use DBI;
-use FS::dbdef;
+use DBIx::DBSchema;
+use DBIx::DBSchema::Table;
+use DBIx::DBSchema::Column;
+use DBIx::DBSchema::ColGroup::Unique;
+use DBIx::DBSchema::ColGroup::Index;
 use FS::UID qw(adminsuidsetup datasrc checkeuid getsecrets);
 use FS::Record;
 use FS::cust_main_county;
@@ -174,19 +199,17 @@ my @money_type = ( 'decimal',   '', '10,2' );
 my(%tables)=&tables_hash_hack;
 
 #turn it into objects
-my($dbdef) = new FS::dbdef ( map {  
+my($dbdef) = new DBIx::DBSchema ( map {  
   my(@columns);
   while (@{$tables{$_}{'columns'}}) {
     my($name,$type,$null,$length)=splice @{$tables{$_}{'columns'}}, 0, 4;
-    push @columns, new FS::dbdef_column ( $name,$type,$null,$length );
+    push @columns, new DBIx::DBSchema::Column ( $name,$type,$null,$length );
   }
-  FS::dbdef_table->new(
+  DBIx::DBSchema::Table->new(
     $_,
     $tables{$_}{'primary_key'},
-    #FS::dbdef_unique->new(@{$tables{$_}{'unique'}}),
-    #FS::dbdef_index->new(@{$tables{$_}{'index'}}),
-    FS::dbdef_unique->new($tables{$_}{'unique'}),
-    FS::dbdef_index->new($tables{$_}{'index'}),
+    DBIx::DBSchema::ColGroup::Unique->new($tables{$_}{'unique'}),
+    DBIx::DBSchema::ColGroup::Index->new($tables{$_}{'index'}),
     @columns,
   );
 } (keys %tables) );
@@ -197,7 +220,7 @@ my($svc_acct)=$dbdef->table('svc_acct');
 
 my($attribute);
 foreach $attribute (@attributes) {
-  $svc_acct->addcolumn ( new FS::dbdef_column (
+  $svc_acct->addcolumn ( new DBIx::DBSchema::Column (
     'radius_'. $attribute,
     'varchar',
     'NULL',
@@ -206,7 +229,7 @@ foreach $attribute (@attributes) {
 }
 
 foreach $attribute (@check_attributes) {
-  $svc_acct->addcolumn( new FS::dbdef_column (
+  $svc_acct->addcolumn( new DBIx::DBSchema::Column (
     'rc_'. $attribute,
     'varchar',
     'NULL',
@@ -226,13 +249,13 @@ foreach (qw(svc_acct svc_acct_sm svc_domain svc_www)) {
   my($col);
   foreach $col ( $table->columns ) {
     next if $col =~ /^svcnum$/;
-    $part_svc->addcolumn( new FS::dbdef_column (
+    $part_svc->addcolumn( new DBIx::DBSchema::Column (
       $table->name. '__' . $table->column($col)->name,
       'varchar', #$table->column($col)->type, 
       'NULL',
       $char_d, #$table->column($col)->length,
     ));
-    $part_svc->addcolumn ( new FS::dbdef_column (
+    $part_svc->addcolumn ( new DBIx::DBSchema::Column (
       $table->name. '__'. $table->column($col)->name . "_flag",
       'char',
       'NULL',
@@ -254,21 +277,10 @@ my($dbh)=adminsuidsetup $user;
 #create tables
 $|=1;
 
-my($table);
-foreach  ($dbdef->tables) {
-  my($table)=$dbdef->table($_);
-  print "Creating $_...";
-
-  my($statement);
-
-  #create table
-  foreach $statement ($table->sql_create_table(datasrc)) {
-    #print $statement, "\n"; 
-    $dbh->do( $statement )
-      or die "CREATE error: ",$dbh->errstr, "\ndoing statement: $statement";
-  }
-
-  print "\n";
+my @sql = $dbdef->sql($dbh);
+foreach my $statement ( $dbdef->sql($dbh) ) {
+  $dbh->do( $statement )
+    or die "CREATE error: ",$dbh->errstr, "\ndoing statement: $statement";
 }
 
 #not really sample data (and shouldn't default to US)
@@ -329,6 +341,8 @@ YE YU ZR ZM ZW
 
 $dbh->disconnect or die $dbh->errstr;
 
+print "Freeside database initialized sucessfully\n";
+
 sub usage {
   die "Usage:\n  fs-setup user\n"; 
 }
@@ -383,7 +397,6 @@ sub tables_hash_hack {
         'custnum',   'int',  '', '',
         '_date',     @date_type,
         'charged',   @money_type,
-        'owed',      @money_type,
         'printed',   'int',  '', '',
       ],
       'primary_key' => 'invnum',
@@ -411,9 +424,8 @@ sub tables_hash_hack {
         'custnum',  'int', '', '',
         '_date',    @date_type,
         'amount',   @money_type,
-        'credited', @money_type,
         'otaker',   'varchar', '', 8,
-        'reason',   'varchar', '', 255,
+        'reason',   'varchar', 'NULL', 255,
       ],
       'primary_key' => 'crednum',
       'unique' => [ [] ],
@@ -560,7 +572,7 @@ sub tables_hash_hack {
     'cust_svc' => {
       'columns' => [
         'svcnum',    'int',    '',   '',
-        'pkgnum',    'int',    '',   '',
+        'pkgnum',    'int',    'NULL',   '',
         'svcpart',   'int',    '',   '',
       ],
       'primary_key' => 'svcnum',
@@ -652,6 +664,7 @@ sub tables_hash_hack {
         'shell',     'varchar',   'NULL',   $char_d,
         'quota',     'varchar',   'NULL',   $char_d,
         'slipip',    'varchar',   'NULL',   15, #four TINYINTs, bah.
+        'seconds',   'int', 'NULL',   '', #uhhhh
       ],
       'primary_key' => 'svcnum',
       'unique' => [ [] ],
@@ -733,6 +746,7 @@ sub tables_hash_hack {
         'prepaynum',   'int',     '',   '',
         'identifier',  'varchar', '', $char_d,
         'amount',      @money_type,
+        'seconds',     'int',     'NULL', '',
       ],
       'primary_key' => 'prepaynum',
       'unique'      => [ ['identifier'] ],
@@ -742,8 +756,8 @@ sub tables_hash_hack {
     'port' => {
       'columns' => [
         'portnum',  'int',     '',   '',
-        'ip',       'varchar', NULL, 15,
-        'nasport',  'int',     NULL, '',
+        'ip',       'varchar', 'NULL', 15,
+        'nasport',  'int',     'NULL', '',
         'nasnum',   'int',     '',   '',
       ],
       'primary_key' => 'portnum',
@@ -757,7 +771,7 @@ sub tables_hash_hack {
         'nas',      'varchar', '',    $char_d,
         'nasip',    'varchar', '',    15,
         'nasfqdn',  'varchar', '',    $char_d,
-        'last',     @date_type,
+        'last',     'int',     '',    '',
       ],
       'primary_key' => 'nasnum',
       'unique'      => [ [ 'nas' ], [ 'nasip' ] ],