X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FTranslator%2FObject%2FIndex.pm;h=828ee214b66e8f28382351e7273b05566fac15f8;hb=ef1b41c6a2e6326a60271b627226a7686f1382af;hp=d0251b910112c0f126e5aeab6506f7fc4d262d53;hpb=65061e1b4c84a0b469030a2e7265bbd1853e1594;p=dbsrgits%2FSQL-Translator-2.0-ish.git diff --git a/lib/SQL/Translator/Object/Index.pm b/lib/SQL/Translator/Object/Index.pm index d0251b9..828ee21 100644 --- a/lib/SQL/Translator/Object/Index.pm +++ b/lib/SQL/Translator/Object/Index.pm @@ -1,43 +1,43 @@ use MooseX::Declare; -class SQL::Translator::Object::Index { +class SQL::Translator::Object::Index extends SQL::Translator::Object { use MooseX::Types::Moose qw(HashRef Str); - use MooseX::AttributeHelpers; - use SQL::Translator::Types qw(Column); - extends 'SQL::Translator::Object'; + use MooseX::MultiMethods; + use SQL::Translator::Types qw(Column Table); + + has 'table' => ( + is => 'rw', + isa => Table, + weak_ref => 1, + ); has 'name' => ( is => 'rw', isa => Str, required => 1 ); - + has 'columns' => ( - metaclass => 'Collection::Hash', + traits => ['Hash'], is => 'rw', isa => HashRef[Column], - provides => { - exists => 'exists_column', - keys => 'column_ids', - values => 'get_columns', - get => 'get_column', - }, - curries => { - set => { - add_column => sub { - my ($self, $body, $column) = @_; - $self->$body($column->name, $column); - } - } + handles => { + exists_column => 'exists', + column_ids => 'keys', + get_columns => 'values', + get_column => 'get', + add_column => 'set', }, default => sub { my %hash = (); tie %hash, 'Tie::IxHash'; return \%hash }, ); - + has 'type' => ( is => 'rw', isa => Str, - required => 1 + required => 1, + default => 'NORMAL', ); - method get_fields { return $self->get_columns } - method fields { return $self->column_ids } + around add_column(Column $column) { $self->$orig($column->name, $column) } + + method is_valid { $self->table && scalar $self->get_columns ? 1 : undef } }