add remove methods for the rest of the objects and add around methods for add_ ...
[dbsrgits/SQL-Translator-2.0-ish.git] / lib / SQL / Translator / Object / Compat.pm
CommitLineData
035b8503 1use MooseX::Declare;
2role SQL::Translator::Object::Compat {
bebe11d5 3 use MooseX::Types qw(Any ArrayRef Int Str);
4 use SQL::Translator::Types qw(Column Constraint Index Table);
5
035b8503 6 use MooseX::MultiMethods;
7
8 multi method fields(Str $columns) {
9 my @columns = split /\s*,\s*/, $columns;
10 for my $column (@columns) {
11 die "Column '$column' does not exist!" unless $self->table->exists_column($column);
12 $self->add_column($self->table->get_column($column));
13 }
14 $self->column_ids;
15 }
16
17 multi method fields(ArrayRef $columns) {
18 for my $column (@$columns) {
19 die "Column '$column' does not exist!" unless $self->table->exists_column($column);
20 $self->add_column($self->table->get_column($column));
21 }
22 $self->column_ids;
23 }
24
25 multi method fields(Any $) { $self->column_ids }
26
bebe11d5 27 method add_field(Column $column does coerce) { $self->add_column($column) }
28
29 method drop_table(Table|Str $table, Int :$cascade = 0) { $self->remove_table($table, cascade => $cascade) }
30 method drop_column(Column|Str $column, Int :$cascade = 0) { $self->remove_column($column, cascade => $cascade) }
31 method drop_index(Index|Str $index) { $self->remove_index($index) }
32 method drop_constraint(Constraint|Str $constraint) { $self->remove_constraint($constraint) }
33
035b8503 34 method get_fields { $self->get_columns }
35 method get_field { $self->get_column }
36 method field_names { $self->column_ids }
37 method reference_fields { $self->reference_columns }
38}