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;
$self->rebuild($tbl); # just forward to rebuild() - make decision there
}
sub convert_to_InnoDB {
my $self = shift;
my $tbl = shift; # warn $tbl;
if ($ENV{HOST} && $ENV{HOST} eq 'hmds-lth') {
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};
my $sql = $self->sql->{table}->{$tbl};
$sql =~ s/InnoDB/MyISAM/ if ($ENV{HOST} && $ENV{HOST} eq 'hmds-lth');
$dbh->do( qq!DROP TABLE IF EXISTS `$tbl`! );
$dbh->do( $sql );
}
sub clear_table {
my ($self, $table) = @_;
my $dbh = $self->db->{dbh4};
$dbh->do( qq!TRUNCATE TABLE $table!);
if ($ENV{HOST} && $ENV{HOST} eq 'hmds-lth') {
$dbh->do( qq!ALTER TABLE $table ENGINE="MyISAM"! );
}
}
1;