load(true)->getAll(); foreach ($definition as $name => $structure) { if (self::isView($name)) { DBA::e(sprintf("DROP VIEW IF EXISTS `%s`", DBA::escape($name))); } elseif (self::isTable($name)) { DBA::e(sprintf("DROP TABLE IF EXISTS `%s`", DBA::escape($name))); } DBA::e(ViewDefinitionSqlWriter::createView($name, $structure)); } } /** * Check if the given table/view is a view * * @param string $view * @return boolean "true" if it's a view */ private static function isView(string $view): bool { $status = DBA::selectFirst('INFORMATION_SCHEMA.TABLES', ['TABLE_TYPE'], ['TABLE_SCHEMA' => DBA::databaseName(), 'TABLE_NAME' => $view]); if (empty($status['TABLE_TYPE'])) { return false; } return $status['TABLE_TYPE'] == 'VIEW'; } /** * Check if the given table/view is a table * * @param string $table * @return boolean "true" if it's a table */ private static function isTable(string $table): bool { $status = DBA::selectFirst('INFORMATION_SCHEMA.TABLES', ['TABLE_TYPE'], ['TABLE_SCHEMA' => DBA::databaseName(), 'TABLE_NAME' => $table]); if (empty($status['TABLE_TYPE'])) { return false; } return $status['TABLE_TYPE'] == 'BASE TABLE'; } }