webdemo bugfix
[freeside.git] / bin / fs-setup
index 602dc72..545c6a4 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/perl -Tw
 #
-# $Id: fs-setup,v 1.29 2000-11-07 15:00:37 ivan Exp $
+# $Id: fs-setup,v 1.36 2001-04-15 12:56:31 ivan Exp $
 #
 # ivan@sisd.com 97-nov-8,9
 #
 # fix radius attributes ivan@sisd.com 98-sep-27
 #
 # $Log: fs-setup,v $
-# Revision 1.29  2000-11-07 15:00:37  ivan
+# 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
 # session monitor
 #
 # Revision 1.28  2000/10/30 10:47:26  ivan
@@ -117,7 +138,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;
@@ -171,19 +196,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) );
@@ -194,7 +217,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',
@@ -203,7 +226,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',
@@ -223,13 +246,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',
@@ -251,21 +274,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)
@@ -326,6 +338,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"; 
 }
@@ -380,7 +394,6 @@ sub tables_hash_hack {
         'custnum',   'int',  '', '',
         '_date',     @date_type,
         'charged',   @money_type,
-        'owed',      @money_type,
         'printed',   'int',  '', '',
       ],
       'primary_key' => 'invnum',
@@ -408,7 +421,6 @@ sub tables_hash_hack {
         'custnum',  'int', '', '',
         '_date',    @date_type,
         'amount',   @money_type,
-        'credited', @money_type,
         'otaker',   'varchar', '', 8,
         'reason',   'varchar', '', 255,
       ],
@@ -557,7 +569,7 @@ sub tables_hash_hack {
     'cust_svc' => {
       'columns' => [
         'svcnum',    'int',    '',   '',
-        'pkgnum',    'int',    '',   '',
+        'pkgnum',    'int',    'NULL',   '',
         'svcpart',   'int',    '',   '',
       ],
       'primary_key' => 'svcnum',
@@ -649,6 +661,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' => [ [] ],
@@ -730,6 +743,7 @@ sub tables_hash_hack {
         'prepaynum',   'int',     '',   '',
         'identifier',  'varchar', '', $char_d,
         'amount',      @money_type,
+        'seconds',     'int',     'NULL', '',
       ],
       'primary_key' => 'prepaynum',
       'unique'      => [ ['identifier'] ],
@@ -739,8 +753,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',
@@ -754,7 +768,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' ] ],