[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'});