--- loncom/interface/lonmysql.pm 2002/08/21 21:29:51 1.7 +++ loncom/interface/lonmysql.pm 2003/03/10 21:22:36 1.8 @@ -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 @@ sub get_debug { =pod -=item &update_table_info($table_id) +=item &update_table_info() Inputs: table id @@ -507,7 +507,7 @@ sub update_table_info { =pod -=item &create_table +=item &create_table() Inputs: table description @@ -516,17 +516,20 @@ Input formats: 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 @@ sub create_table { 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 @@ sub create_table { =pod -=item &get_new_table_id +=item &get_new_table_id() Used internally to prevent table name collisions. @@ -625,7 +629,7 @@ sub get_new_table_id { =pod -=item &get_rows +=item &get_rows() Inputs: $table_id,$condition @@ -666,7 +670,7 @@ sub get_rows { =pod -=item &store_row +=item &store_row() Inputs: table id, row data @@ -725,7 +729,7 @@ sub store_row { =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 @@ sub tables_in_db { =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 @@ sub translate_id { =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 @@ sub check_table { =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'".