public function run($request) { $db = DB::getConn(); if (!$db instanceof MySQLDatabase) { echo '<h3>This task only appies to MySQL databases. This installation is using a ' . get_class($db) . '</h3>'; return; } $oldschema = array(); $newschema = array(); $renamed = 0; $current = DB::getConn()->currentDatabase(); foreach (DB::getConn()->tableList() as $lowercase => $dbtablename) { $oldschema[] = $dbtablename; } DB::getConn()->selectDatabase('tmpdb'); $test = new SapphireTest(); $test->create_temp_db(); foreach (DB::getConn()->tableList() as $lowercase => $dbtablename) { $newschema[] = $dbtablename; } $test->kill_temp_db(); DB::getConn()->selectDatabase($current); echo "<ul>\n"; foreach ($newschema as $table) { if (in_array(strtolower($table), $oldschema)) { echo "<li>renaming {$table}</li>"; $db->renameTable(strtolower($table), $table); $renamed++; } } echo "</ul>\n"; echo "<p>{$renamed} tables renamed.</p>\n"; }
/** * @return array */ private function artefacts() { $oldschema = []; $newschema = []; $current = DB::get_conn()->getSelectedDatabase(); foreach (DB::table_list() as $lowercase => $dbtablename) { $oldschema[$dbtablename] = DB::field_list($dbtablename); } $test = new SapphireTest(); $test->create_temp_db(); foreach (DB::table_list() as $lowercase => $dbtablename) { $newschema[$lowercase] = DB::field_list($dbtablename); } $test->kill_temp_db(); DB::get_conn()->selectDatabase($current); $artefacts = []; foreach ($oldschema as $table => $fields) { if (!isset($newschema[strtolower($table)])) { $artefacts[$table] = $table; continue; } foreach ($fields as $field => $spec) { if (!isset($newschema[strtolower($table)][$field])) { $artefacts[$table][$field] = $field; } } } return $artefacts; }
function Artefacts() { $oldschema = array(); $newschema = array(); $current = DB::getConn()->currentDatabase(); foreach (DB::getConn()->tableList() as $lowercase => $dbtablename) { $oldschema[$dbtablename] = DB::getConn()->fieldList($dbtablename); } DB::getConn()->selectDatabase('tmpdb'); $test = new SapphireTest(); $test->create_temp_db(); foreach (DB::getConn()->tableList() as $lowercase => $dbtablename) { $newschema[$lowercase] = DB::getConn()->fieldList($dbtablename); } $test->kill_temp_db(); DB::getConn()->selectDatabase($current); $artefacts = array(); foreach ($oldschema as $table => $fields) { if (!isset($newschema[strtolower($table)])) { $artefacts[$table] = $table; continue; } foreach ($fields as $field => $spec) { if (!isset($newschema[strtolower($table)][$field])) { $artefacts[$table][$field] = $field; } } } return $artefacts; }
function tearDown() { SapphireTest::kill_temp_db(); DB::set_alternative_database_name(null); }
public function tearDown() { SapphireTest::kill_temp_db(); }