<%args> $schema $table $unique => 0 $fulltext => 0 $function => '' @columns @prefixes => () <%init> my ($s, $t); eval { $s = Alzabo::Create::Schema->load_from_file( name => $schema ); $t = $s->table($table); my @cols = ( map { { column => $t->column( $columns[$_] ), $prefixes[$_] ? ( prefix => $prefixes[$_] ) : () } } 0..$#columns ); @cols = sort { $ARGS{ $a->{column}->name . '_order' } <=> $ARGS{ $b->{column}->name . '_order' } } @cols; undef $function unless length $function; $t->make_index( columns => \@cols, unique => $unique, fulltext => $fulltext, Alzabo::Index->can('function') ? ( function => $function ) : (), ); $s->save_to_file; }; my $e = $@; $m->comp( 'handle_rules_exception', e => $e, comp => 'add_index_1', %ARGS ); $m->comp( 'exception', $e ) if $e; $m->redirect( uri( path => 'view_table_other' . Alzabo::GUI::Mason::Config::mason_extension(), query => { schema => $s->name, table => $t->name, }, ), ); <%flags> inherit => 'syshandler'