package Alzabo::Runtime::Column; use strict; use vars qw($VERSION); use Alzabo::Runtime; use Params::Validate qw( :all ); Params::Validate::validation_options( on_fail => sub { Alzabo::Exception::Params->throw( error => join '', @_ ) } ); use base qw(Alzabo::Column); $VERSION = 2.0; sub alias_clone { my $self = shift; my %p = validate( @_, { table => { isa => 'Alzabo::Runtime::Table' }, } ); my $clone; %$clone = %$self; $clone->{table} = $p{table}; bless $clone, ref $self; return $clone; } sub alias { my $self = shift; my %p = validate( @_, { as => { type => SCALAR } } ); my $clone; %$clone = %$self; bless $clone, ref $self; $clone->{alias_name} = $p{as}; $clone->{real_column} = $self; return $clone; } sub alias_name { return $_[0]->{alias_name} || $_[0]->{name}; } 1; __END__ =head1 NAME Alzabo::Runtime::Column - Column objects =head1 SYNOPSIS use Alzabo::Runtime::Column; =head1 DESCRIPTION This object represents a column. It holds data specific to a column. =head1 INHERITS FROM C Note: all relevant documentation from the superclass has been merged into this document. =head1 METHODS =head2 table Returns the table object to which this column belongs. =head2 name Returns the column's name as a string. =head2 nullable Returns a boolean value indicating whether or not NULLs are allowed in this column. =head2 attributes 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. =head2 has_attribute 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: =over 4 =item * attribute => $attribute =item * case_sensitive => 0 or 1 (defaults to 0) =back It returns a boolean value indicating whether or not the column has this particular attribute. =head2 type Returns the column's type as a string. =head2 sequenced 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 Cinsert>. Returns a boolean value indicating whether or not this column is sequenced. =head2 default Returns the default value of the column as a string, or undef if there is no default. =head2 default_is_raw Returns true if the default is intended to be provided to the DBMS as-is, without quoting, fore example C or C. =head2 length Returns the length attribute of the column, or undef if there is none. =head2 precision Returns the precision attribute of the column, or undef if there is none. =head2 is_primary_key Returns a boolean value indicating whether or not this column is part of its table's primary key. =head2 is_numeric Returns a boolean value indicating whether the column is a numeric type column. =head2 is_integer Returns a boolean value indicating whether the column is a numeric type column. =head2 is_floating_point Returns a boolean value indicating whether the column is a numeric type column. =head2 is_character 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 I data, regardless of size. =head2 is_date Returns a boolean value indicating whether the column is a date type column. =head2 is_datetime Returns a boolean value indicating whether the column is a datetime type column. =head2 is_time Returns a boolean value indicating whether the column is a time type column. =head2 is_time_interval Returns a boolean value indicating whether the column is a time interval type column. =head2 is_blob 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. =head2 generic_type This methods returns one of the following strings: =over 4 =item integer =item floating_point =item character =item date =item datetime =item time =item blob =item unknown =back =head2 definition The definition object is very rarely of interest. Use the L|type> method if you are only interested in the column's type. This methods returns the L|Alzabo::Runtime::ColumnDefinition> object which holds this column's type information. =head2 comment Returns the comment associated with the column object, if any. =head2 alias Takes the following parameters: =over 4 =item * as => $name =back This method returns an object that can be used in calls to the table and schema C methods in order to change the name given to the column if C is called on the L|Alzabo::Driver/Alzabo::DriverStatment> returned by the aforementioned C method. =head1 AUTHOR Dave Rolsky, =cut