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);
22 isa => HashRef[Column],
24 exists_column => 'exists',
26 get_columns => 'values',
31 get_fields => 'values',
33 default => sub { my %hash = (); tie %hash, 'Tie::IxHash'; return \%hash },
43 around add_column(Column $column) { $self->$orig($column->name, $column) }
45 multi method fields(Str $columns) {
46 for (split /,/, $columns) { die "Column $_ does not exist!" unless $self->table->exists_column($_) }
47 $self->add_column($self->table->get_column($_)) for split /,/, $columns;
51 multi method fields(@columns) {
52 for (@columns) { die "Column $_ does not exist!" unless $self->table->exists_column($_) }
53 $self->add_column($self->table->get_column($_)) for @columns;
57 multi method fields(Any $) { $self->column_ids }
59 method is_valid { $self->table && scalar $self->get_columns ? 1 : undef }