| Alzabo documentation | Contained in the Alzabo distribution. |
Alzabo::Column - Column objects
use Alzabo::Column;
foreach my $c ($table->columns)
{
print $c->name;
}
This object represents a column. It holds data specific to a column.
Returns the table object to which this column belongs.
Returns the column's name as a string.
Returns a boolean value indicating whether or not NULLs are allowed in this column.
A column's attributes are strings describing the column (for example, valid attributes in MySQL are 'UNSIGNED' or 'ZEROFILL'.
This method returns a list of strings of such strings.
This method can be used to test whether or not a column has a particular attribute. By default, the check is case-insensitive.
It takes the following parameters:
It returns a boolean value indicating whether or not the column has this particular attribute.
Returns the column's type as a string.
The meaning of a sequenced column varies from one RDBMS to another. In those with sequences, it means that a sequence is created and that values for this column will be drawn from it for inserts into this table. In databases without sequences, the nearest analog for a sequence is used (in MySQL the column is given the AUTO_INCREMENT attribute, in Sybase the identity attribute).
In general, this only has meaning for the primary key column of a
table with a single column primary key. Setting the column as
sequenced means its value never has to be provided to when calling
Alzabo::Runtime::Table->insert.
Returns a boolean value indicating whether or not this column is sequenced.
Returns the default value of the column as a string, or undef if there is no default.
Returns true if the default is intended to be provided to the DBMS
as-is, without quoting, fore example NOW() or current_timestamp.
Returns the length attribute of the column, or undef if there is none.
Returns the precision attribute of the column, or undef if there is none.
Returns a boolean value indicating whether or not this column is part of its table's primary key.
Returns a boolean value indicating whether the column is a numeric type column.
Returns a boolean value indicating whether the column is a numeric type column.
Returns a boolean value indicating whether the column is a numeric type column.
Returns a boolean value indicating whether the column is a character type column.
This is true only for any columns which are defined to hold text data, regardless of size.
Returns a boolean value indicating whether the column is a date type column.
Returns a boolean value indicating whether the column is a datetime type column.
Returns a boolean value indicating whether the column is a time type column.
Returns a boolean value indicating whether the column is a time interval type column.
Returns a boolean value indicating whether the column is a blob column.
This is true for any columns defined to hold binary data, regardless of size.
This methods returns one of the following strings:
The definition object is very rarely of interest. Use the
type()|type method if you are only interested in the column's
type.
This methods returns the
Alzabo::ColumnDefinition|Alzabo::ColumnDefinition object which
holds this column's type information.
Returns the comment associated with the column object, if any.
Dave Rolsky, <autarch@urth.org>
| Alzabo documentation | Contained in the Alzabo distribution. |
package Alzabo::Column; use strict; use vars qw($VERSION); use Alzabo; use Tie::IxHash; use Params::Validate qw( :all ); Params::Validate::validation_options( on_fail => sub { Alzabo::Exception::Params->throw( error => join '', @_ ) } ); $VERSION = 2.0; 1; sub table { $_[0]->{table}; } sub name { $_[0]->{name}; } sub nullable { $_[0]->{nullable}; } sub attributes { return keys %{ $_[0]->{attributes} }; } sub has_attribute { my $self = shift; my %p = validate( @_, { attribute => { type => SCALAR }, case_sensitive => { type => SCALAR, default => 0 } } ); if ( $p{case_sensitive} ) { return exists $self->{attributes}{ $p{attribute} }; } else { return 1 if grep { lc $p{attribute} eq lc $_ } keys %{ $self->{attributes} }; } } sub type { $_[0]->definition->type; } sub sequenced { $_[0]->{sequenced}; } sub default { $_[0]->{default}; } sub default_is_raw { $_[0]->{default_is_raw}; } sub length { $_[0]->definition->length; } sub precision { $_[0]->definition->precision; } sub definition { $_[0]->{definition}; } sub is_primary_key { $_[0]->table->column_is_primary_key($_[0]); } sub is_numeric { $_[0]->table->schema->rules->type_is_numeric($_[0]); } sub is_integer { $_[0]->table->schema->rules->type_is_integer($_[0]); } sub is_floating_point { $_[0]->table->schema->rules->type_is_floating_point($_[0]); } sub is_character { $_[0]->table->schema->rules->type_is_char($_[0]); } sub is_date { $_[0]->table->schema->rules->type_is_date($_[0]); } sub is_datetime { $_[0]->table->schema->rules->type_is_datetime($_[0]); } sub is_time { $_[0]->table->schema->rules->type_is_time($_[0]); } sub is_time_interval { $_[0]->table->schema->rules->type_is_time_interval($_[0]); } sub is_blob { $_[0]->table->schema->rules->type_is_blob($_[0]); } sub generic_type { my $self = shift; foreach my $type ( qw( integer floating_point character date datetime time blob ) ) { my $method = "is_$type"; return $type if $self->$method(); } return 'unknown'; } sub comment { $_[0]->{comment} } __END__