[LON-CAPA-cvs] cvs: loncom /interface lonmysql.pm lonsearchcat.pm

matthew lon-capa-cvs@mail.lon-capa.org
Mon, 10 Mar 2003 21:22:36 -0000


matthew		Mon Mar 10 16:22:36 2003 EDT

  Modified files:              
    /loncom/interface	lonmysql.pm lonsearchcat.pm 
  Log:
  Modified data structure expected by lonmysql::create_table.  
  $table->{'columns'} is now an array ref instead of a hash ref.  
  
  Cleaned up POD in lonmysql.pm
  
  lonsearchcat.pm has been tested and does work.
  
  
Index: loncom/interface/lonmysql.pm
diff -u loncom/interface/lonmysql.pm:1.7 loncom/interface/lonmysql.pm:1.8
--- loncom/interface/lonmysql.pm:1.7	Wed Aug 21 17:29:51 2002
+++ loncom/interface/lonmysql.pm	Mon Mar 10 16:22:36 2003
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # MySQL utility functions
 #
-# $Id: lonmysql.pm,v 1.7 2002/08/21 21:29:51 matthew Exp $
+# $Id: lonmysql.pm,v 1.8 2003/03/10 21:22:36 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -427,7 +427,7 @@
 
 =pod
 
-=item &update_table_info($table_id)
+=item &update_table_info()
 
 Inputs: table id
 
@@ -507,7 +507,7 @@
 
 =pod
 
-=item &create_table
+=item &create_table()
 
 Inputs: 
     table description
@@ -516,17 +516,20 @@
 
     table description = {
         permanent  => 'yes' or 'no',
-        columns => {
-            colA => {
-                type         => mysql type,
-                restrictions => 'NOT NULL' or empty,
-                primary_key  => 'yes' or empty,
-                auto_inc     => 'yes' or empty,
-            }
-            colB  => { .. }
-            colZ  => { .. }
-        },
-        column_order => [ colA, colB, ..., colZ],
+        columns => [
+                    { name         => 'colA',
+                      type         => mysql type,
+                      restrictions => 'NOT NULL' or empty,
+                      primary_key  => 'yes' or empty,
+                      auto_inc     => 'yes' or empty,
+                  },
+                    { name => 'colB',
+                      ...
+                  },
+                    { name => 'colC',
+                      ...
+                  },
+        ],
     }
 
 Returns:
@@ -546,9 +549,10 @@
     my $table_id = &get_new_table_id();
     my $tablename = &translate_id($table_id);
     my $request = "CREATE TABLE IF NOT EXISTS ".$tablename." ";
-    foreach my $column (@{$table_des->{'column_order'}}) {
+    foreach my $coldata (@{$table_des->{'columns'}}) {
+        my $column = $coldata->{'name'};
+        next if (! defined($column));
         $col_des = '';
-        my $coldata = $table_des->{'columns'}->{$column};
         if (lc($coldata->{'type'}) =~ /(enum|set)/) { # 'enum' or 'set'
             $col_des.=$column." ".$coldata->{'type'}."('".
                 join("', '",@{$coldata->{'values'}})."')";
@@ -603,7 +607,7 @@
 
 =pod
 
-=item &get_new_table_id
+=item &get_new_table_id()
 
 Used internally to prevent table name collisions.
 
@@ -625,7 +629,7 @@
 
 =pod
 
-=item &get_rows
+=item &get_rows()
 
 Inputs: $table_id,$condition
 
@@ -666,7 +670,7 @@
 
 =pod
 
-=item &store_row
+=item &store_row()
 
 Inputs: table id, row data
 
@@ -725,7 +729,7 @@
 
 =pod
 
-=item tables_in_db
+=item &tables_in_db()
 
 Returns a list containing the names of all the tables in the database.
 Returns undef on error.
@@ -755,7 +759,7 @@
 
 =pod
 
-=item &translate_id
+=item &translate_id()
 
 Used internally to translate a numeric table id into a MySQL table name.
 If the input $id contains non-numeric characters it is assumed to have 
@@ -778,7 +782,9 @@
 
 =pod
 
-=item &check_table($id)
+=item &check_table()
+
+Input: table id
 
 Checks to see if the requested table exists.  Returns 0 (no), 1 (yes), or 
 undef (error).
@@ -809,7 +815,11 @@
 
 =pod
 
-=item &remove_from_table($table_id,$column,$value)
+=item &remove_from_table()
+
+Input: $table_id, $column, $value
+
+Returns: the number of rows deleted.  undef on error.
 
 Executes a "delete from $tableid where $column like binary '$value'".
 
Index: loncom/interface/lonsearchcat.pm
diff -u loncom/interface/lonsearchcat.pm:1.169 loncom/interface/lonsearchcat.pm:1.170
--- loncom/interface/lonsearchcat.pm:1.169	Mon Mar 10 09:20:07 2003
+++ loncom/interface/lonsearchcat.pm	Mon Mar 10 16:22:36 2003
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Search Catalog
 #
-# $Id: lonsearchcat.pm,v 1.169 2003/03/10 14:20:07 www Exp $
+# $Id: lonsearchcat.pm,v 1.170 2003/03/10 21:22:36 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1898,37 +1898,31 @@
 
 =cut
 
-##
-## Restrictions:
-##    columns of type 'text' and 'blob' cannot have defaults.
-##    columns of type 'enum' cannot be used for FULLTEXT.
-##
-my @DataOrder = qw/id title author subject url keywords version notes
-    abstract mime lang owner copyright creationdate lastrevisiondate hostname/;
-
-my %Datatypes = 
-    ( id        =>{ type         => 'MEDIUMINT',
-                    restrictions => 'UNSIGNED NOT NULL',
-                    primary_key  => 'yes',
-                    auto_inc     => 'yes'
-                    },
-      title     =>{ type=>'TEXT'},
-      author    =>{ type=>'TEXT'},
-      subject   =>{ type=>'TEXT'},
-      url       =>{ type=>'TEXT',
-                    restrictions => 'NOT NULL' },
-      keywords  =>{ type=>'TEXT'},
-      version   =>{ type=>'TEXT'},
-      notes     =>{ type=>'TEXT'},
-      abstract  =>{ type=>'TEXT'},
-      mime      =>{ type=>'TEXT'},
-      lang      =>{ type=>'TEXT'},
-      owner     =>{ type=>'TEXT'},
-      copyright =>{ type=>'TEXT'},
-      hostname  =>{ type=>'TEXT'},
+#####################################################################
+#####################################################################
+
+my @Datatypes = 
+    ( { name => 'id', 
+        type => 'MEDIUMINT',
+        restrictions => 'UNSIGNED NOT NULL',
+        primary_key  => 'yes',
+        auto_inc     => 'yes' },
+      { name => 'title',     type=>'TEXT'},
+      { name => 'author',    type=>'TEXT'},
+      { name => 'subject',   type=>'TEXT'},
+      { name => 'url',       type=>'TEXT', restrictions => 'NOT NULL' },
+      { name => 'keywords',  type=>'TEXT'},
+      { name => 'version',   type=>'TEXT'},
+      { name => 'notes',     type=>'TEXT'},
+      { name => 'abstract',  type=>'TEXT'},
+      { name => 'mime',      type=>'TEXT'},
+      { name => 'lang',      type=>'TEXT'},
+      { name => 'owner',     type=>'TEXT'},
+      { name => 'copyright', type=>'TEXT'},
+      { name => 'hostname',  type=>'TEXT'},
       #--------------------------------------------------
-      creationdate     =>{ type=>'DATETIME'},
-      lastrevisiondate =>{ type=>'DATETIME'},
+      { name => 'creationdate',     type=>'DATETIME'},
+      { name => 'lastrevisiondate', type=>'DATETIME'},
       #--------------------------------------------------
       );
 
@@ -1956,8 +1950,7 @@
 ######################################################################
 sub create_results_table {
     my $table = &Apache::lonmysql::create_table
-        ( { columns => \%Datatypes,
-            column_order => \@DataOrder,
+        ( { columns => \@Datatypes,
             fullindex => \@Fullindicies,
         } );
     if (defined($table)) {
@@ -2484,7 +2477,7 @@
     my @Row = @_;
     my %Fields;
     for (my $i=0;$i<=$#Row;$i++) {
-        $Fields{$DataOrder[$i]}=&Apache::lonnet::unescape($Row[$i]);
+        $Fields{$Datatypes[$i]->{'name'}}=&Apache::lonnet::unescape($Row[$i]);
     }
     $Fields{'language'} = 
         &Apache::loncommon::languagedescription($Fields{'lang'});