use Friendica\Database\Definition\ViewDefinition;
+/**
+ * SQL writer utility for the db view definition
+ */
class ViewDefinitionSqlWriter
{
+ /**
+ * Creates a complete SQL definition bases on a give View Definition class
+ *
+ * @param ViewDefinition $definition The View definition class
+ *
+ * @return string The SQL definition as a string
+ */
public static function create(ViewDefinition $definition): string
{
$sqlString = '';
return $sqlString;
}
+ /**
+ * Creates the SQL definition to drop a view
+ *
+ * @param string $viewName the view name
+ *
+ * @return string The SQL definition
+ */
public static function dropView(string $viewName): string
{
return sprintf("DROP VIEW IF EXISTS `%s`", static::escape($viewName)) . ";\n";
}
+ /**
+ * Creates the SQL definition to create a new view
+ *
+ * @param string $viewName The view name
+ * @param array $viewStructure The structure information of the view
+ *
+ * @return string The SQL definition
+ */
public static function createView(string $viewName, array $viewStructure): string
{
$sql_rows = [];
implode(",\n\t", $sql_rows) . "\n\t" . $viewStructure['query'] . ";\n\n";
}
+ /**
+ * Standard escaping for SQL definitions
+ *
+ * @param string $sqlString the SQL string to escape
+ *
+ * @return string escaped SQL string
+ */
public static function escape(string $sqlString): string
{
return str_replace("'", "\\'", $sqlString);