Alzabo
view release on metacpan or search on metacpan
lib/Alzabo/Create/Column.pm view on Meta::CPAN
package Alzabo::Create::Column;
use strict;
use vars qw($VERSION);
use Alzabo::Create;
use Alzabo::Exceptions ( abbr => 'params_exception' );
use Params::Validate qw( :all );
Params::Validate::validation_options
( on_fail => sub { params_exception join '', @_ } );
use base qw(Alzabo::Column);
$VERSION = 2.0;
1;
sub new
{
my $proto = shift;
my $class = ref $proto || $proto;
my $self = bless {}, $class;
$self->_init(@_);
return $self;
}
sub _init
{
my $self = shift;
my %p =
validate( @_, { table => { isa => 'Alzabo::Table' },
name => { type => SCALAR },
null => { optional => 1 },
nullable => { optional => 1 },
type => { type => SCALAR,
optional => 1 },
attributes => { type => ARRAYREF,
default => [] },
default => { type => BOOLEAN,
optional => 1 },
default_is_raw => { type => BOOLEAN,
default => 0 },
sequenced => { optional => 1 },
length => { type => BOOLEAN,
optional => 1 },
precision => { type => BOOLEAN,
optional => 1 },
definition => { isa => 'Alzabo::Create::ColumnDefinition',
optional => 1 },
comment => { type => BOOLEAN,
default => '' },
} );
$self->set_table( $p{table} );
$self->set_name( $p{name} );
$self->{nullable} = $p{nullable} || $p{null} || 0;
if ($p{definition})
{
$self->set_definition( $p{definition} );
}
else
{
$self->set_definition
( Alzabo::Create::ColumnDefinition->new
( owner => $self,
type => $p{type},
)
);
}
my %attr;
tie %{ $self->{attributes} }, 'Tie::IxHash';
$self->set_attributes( @{ $p{attributes} } );
$self->set_sequenced( $p{sequenced} || 0 );
( run in 1.962 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )