2 class SQL::Translator::Object::Index extends SQL::Translator::Object {
3 use MooseX::Types::Moose qw(HashRef Str);
4 use MooseX::MultiMethods;
5 use SQL::Translator::Types qw(Column Table);
23 isa => HashRef[Column],
25 exists_column => 'exists',
27 get_columns => 'values',
32 get_fields => 'values',
34 default => sub { my %hash = (); tie %hash, 'Tie::IxHash'; return \%hash },
44 around add_column(Column $column) { $self->$orig($column->name, $column) }
46 multi method fields(Str $columns) {
47 for (split /,/, $columns) { die "Column $_ does not exist!" unless $self->table->exists_column($_) }
48 $self->add_column($self->table->get_column($_)) for split /,/, $columns;
52 multi method fields(@columns) {
53 for (@columns) { die "Column $_ does not exist!" unless $self->table->exists_column($_) }
54 $self->add_column($self->table->get_column($_)) for @columns;
58 multi method fields(Any $) { $self->column_ids }
60 method is_valid { $self->table && scalar $self->get_columns ? 1 : undef }