}
}
- $sql = sprintf("DROP VIEW IF EXISTS `%s`", DBA::escape($name));
+ if (self::isView($name)) {
+ $sql = sprintf("DROP VIEW `%s`", DBA::escape($name));
+ } elseif (self::isTable($name)) {
+ $sql = sprintf("DROP TABLE `%s`", DBA::escape($name));
+ }
if ($verbose) {
echo $sql . ";\n";
return $r;
}
+
+ /**
+ * 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)
+ {
+ $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 view
+ *
+ * @param string $table
+ * @return boolean "true" if it's a table
+ */
+ private static function isTable(string $table)
+ {
+ $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';
+ }
}