X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FTranslator%2FObject%2FColumn.pm;h=ea80e95c27c9a6c1d6bc050d6895acdcd0e9260e;hb=2850baeb2e26f3b7df5b285f9472dbf935d5b101;hp=dd659a3831909628fabf9945c487a360b45d1223;hpb=7aa485df58674f494ff946fc297e7d4de14e006f;p=dbsrgits%2FSQL-Translator-2.0-ish.git diff --git a/lib/SQL/Translator/Object/Column.pm b/lib/SQL/Translator/Object/Column.pm index dd659a3..ea80e95 100644 --- a/lib/SQL/Translator/Object/Column.pm +++ b/lib/SQL/Translator/Object/Column.pm @@ -1,68 +1,96 @@ -package SQL::Translator::Object::Column; -use Moose; -use MooseX::Types::Moose qw(Bool Int Maybe Str); -use SQL::Translator::Types qw(Trigger); -extends 'SQL::Translator::Object'; +use MooseX::Declare; +class SQL::Translator::Object::Column { + use MooseX::Types::Moose qw(ArrayRef Bool HashRef Int Maybe Str); + use MooseX::MultiMethods; + use SQL::Translator::Types qw(ColumnSize Constraint Table Trigger); + extends 'SQL::Translator::Object'; -has 'name' => ( - is => 'rw', - isa => Str, - required => 1 -); + has 'table' => ( + is => 'rw', + isa => Table, + required => 1, + weak_ref => 1, + ); + + has 'name' => ( + is => 'rw', + isa => Str, + required => 1 + ); + + has 'data_type' => ( + is => 'rw', + isa => Str, + required => 1 + ); -has 'data_type' => ( - is => 'rw', - isa => Str, - required => 1 -); + has 'sql_data_type' => ( + is => 'rw', + isa => Int, + required => 1 + ); + + has 'size' => ( + is => 'rw', + isa => ColumnSize, + coerce => 1, + auto_deref => 1, + ); + + has 'is_nullable' => ( + is => 'rw', + isa => Bool, + required => 1, + default => 1 + ); + + has 'default_value' => ( + is => 'rw', + isa => Maybe[Str], + ); -has 'size' => ( - is => 'rw', - isa => Maybe[Int], - required => 1 -); + has 'is_auto_increment' => ( + is => 'rw', + isa => Bool, + required => 1, + default => 0 + ); -has 'is_nullable' => ( - is => 'rw', - isa => Bool, - required => 1, - default => 1 -); + has 'is_primary_key' => ( + is => 'rw', + isa => Bool, + default => 0 + ); -has 'is_auto_increment' => ( - is => 'rw', - isa => Bool, - required => 1, - default => 0 -); + has 'is_foreign_key' => ( + is => 'rw', + isa => Bool, + default => 0 + ); -has 'default_value' => ( - is => 'rw', - isa => Maybe[Str], - required => 0 -); + has 'foreign_key_reference' => ( + is => 'rw', + isa => Constraint, + ); + + has 'trigger' => ( + is => 'rw', + isa => Trigger, + ); -=cut -has 'index' => ( - is => 'rw', - isa => Maybe[Int], - required => 1 -); -=cut + has 'extra' => ( + is => 'rw', + isa => HashRef, + auto_deref => 1, + ); -has 'remarks' => ( - is => 'rw', - isa => Maybe[Str], - required => 0 -); + around size(@args) { + $self->$orig(@args) if @args; + my @sizes = $self->$orig; + return wantarray ? @sizes + : join ',', @sizes; + } -has 'trigger' => ( - is => 'rw', - isa => Trigger, - required => 0 -); - -no Moose; -__PACKAGE__->meta->make_immutable; - -1; + method order { } + method is_unique { } +}