package Role::RebuildTables; use Moose::Role; use Data::Dumper; sub rebuild_tables { my $self = shift; my $table = shift; # scalar or arrayref if ( ref $table eq 'ARRAY' ) { $self->rebuild($_) foreach @$table; } else { $self->rebuild($table); } } sub rebuild_tables_asMyISAM { my $self = shift; my $tbl = shift; # warn $tbl; my $dbh = $self->db->{dbh4}; $dbh->do( qq!DROP TABLE IF EXISTS `$tbl`! ); my $sql = $self->sql->{table}->{$tbl}; $sql =~ s/InnoDB/MyISAM/; $dbh->do( $sql ); } sub convert_to_InnoDB { my $self = shift; my $tbl = shift; # warn $tbl; my $dbh = $self->db->{dbh4}; $dbh->do( qq!ALTER TABLE $tbl ENGINE="InnoDB"! ); } sub rebuild { my $self = shift; my $tbl = shift; # warn $tbl; my $dbh = $self->db->{dbh4}; $dbh->do( qq!DROP TABLE IF EXISTS `$tbl`! ); $dbh->do( $self->sql->{table}->{$tbl} ); } sub clear_table { my ($self, $table) = @_; my $dbh = $self->db->{dbh4}; $dbh->do( qq!TRUNCATE TABLE $table!); $dbh->do( qq!ALTER TABLE $table ENGINE="MyISAM"! ); } 1;