The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Class::AutoDB::Table - Schema information for one table

SYNOPSIS

This is a helper class for Class::AutoDB::Registry which represents the schema information for one table.

 use Class::AutoDB::Table;
 my $table=new Class::AutoDB::Table
   (-name=>'Person',
    -keys{name=>'string',dob=>'integer',grade_avg=>'float',friend=>'object'});
 my $name=$table->name; 
 my $keys=$table->keys;           # hash of key=>type pairs
 my @sql=$table->schema;          # SQL statements to create table
 my @sql=$table->schema('create');# same as above
 my @sql=$table->schema('drop');  # SQL statements to drop table
 my @sql=$table->schema('alter'); # SQL statements to add columns 
                                  #   of this table to another

DESCRIPTION

This class represents schema information for one table. This class is fed a HASH of key=>type pairs. Each turns into one column of the table. In addition, the table has an 'object' column which is a foreign key pointing to the AutoDB object table and which is the primary key here. Indexes are defined on all keys (unless index=>0 is passed as an AutoDB constructor argument). This class just creates SQL; it does not talk to the database.

At present, only our special data types ('string', 'integer', 'float', 'object') are supported. These can be abbreviated. These are translated into MySQL types as follows:

 ----------------------------------
 | AutoDB type    | MySQL type    |
 ----------------------------------
 |  string        |  longtext     |
 |  integer       |  int          |
 |  float         |  double       |
 |  object        |  bigint       |
 |                | (unsigned)    |
 ----------------------------------