mirror of
https://github.com/archtechx/tenancy.git
synced 2026-02-04 09:04:03 +00:00
Revert "fix: Refactor database management methods to use parameterized queries and add identifier quoting"
This reverts commit 712d7aabec.
This commit is contained in:
parent
9f0328f9ef
commit
ffd3678e64
3 changed files with 9 additions and 41 deletions
|
|
@ -17,28 +17,18 @@ trait ManagesRLSPolicies
|
|||
{
|
||||
return array_map(
|
||||
fn (stdClass $policy) => $policy->policyname,
|
||||
DB::select(
|
||||
"SELECT policyname FROM pg_policies WHERE tablename = ? AND policyname LIKE ?",
|
||||
[$table, '%_rls_policy%']
|
||||
)
|
||||
DB::select("SELECT policyname FROM pg_policies WHERE tablename = '{$table}' AND policyname LIKE '%_rls_policy%'")
|
||||
);
|
||||
}
|
||||
|
||||
public static function dropRLSPolicies(string $table): int
|
||||
{
|
||||
$policies = static::getRLSPolicies($table);
|
||||
$quotedTable = static::quoteIdentifier($table);
|
||||
|
||||
foreach ($policies as $policy) {
|
||||
$quotedPolicy = static::quoteIdentifier($policy);
|
||||
DB::statement("DROP POLICY {$quotedPolicy} ON {$quotedTable}");
|
||||
DB::statement('DROP POLICY ? ON ?', [$policy, $table]);
|
||||
}
|
||||
|
||||
return count($policies);
|
||||
}
|
||||
|
||||
protected static function quoteIdentifier(string $identifier): string
|
||||
{
|
||||
return '"' . str_replace('"', '""', $identifier) . '"';
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,30 +10,20 @@ class MySQLDatabaseManager extends TenantDatabaseManager
|
|||
{
|
||||
public function createDatabase(TenantWithDatabase $tenant): bool
|
||||
{
|
||||
$database = $this->quoteIdentifier($tenant->database()->getName());
|
||||
$database = $tenant->database()->getName();
|
||||
$charset = $this->connection()->getConfig('charset');
|
||||
$collation = $this->connection()->getConfig('collation');
|
||||
|
||||
return $this->connection()->statement("CREATE DATABASE {$database} CHARACTER SET `$charset` COLLATE `$collation`");
|
||||
return $this->connection()->statement("CREATE DATABASE `{$database}` CHARACTER SET `$charset` COLLATE `$collation`");
|
||||
}
|
||||
|
||||
public function deleteDatabase(TenantWithDatabase $tenant): bool
|
||||
{
|
||||
$database = $this->quoteIdentifier($tenant->database()->getName());
|
||||
|
||||
return $this->connection()->statement("DROP DATABASE {$database}");
|
||||
return $this->connection()->statement("DROP DATABASE `{$tenant->database()->getName()}`");
|
||||
}
|
||||
|
||||
public function databaseExists(string $name): bool
|
||||
{
|
||||
return (bool) $this->connection()->selectOne(
|
||||
'SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = ? LIMIT 1',
|
||||
[$name]
|
||||
);
|
||||
}
|
||||
|
||||
protected function quoteIdentifier(string $identifier): string
|
||||
{
|
||||
return '`' . str_replace('`', '``', $identifier) . '`';
|
||||
return (bool) $this->connection()->select("SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '$name'");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,28 +10,16 @@ class PostgreSQLDatabaseManager extends TenantDatabaseManager
|
|||
{
|
||||
public function createDatabase(TenantWithDatabase $tenant): bool
|
||||
{
|
||||
$database = $this->quoteIdentifier($tenant->database()->getName());
|
||||
|
||||
return $this->connection()->statement("CREATE DATABASE {$database} WITH TEMPLATE=template0");
|
||||
return $this->connection()->statement("CREATE DATABASE \"{$tenant->database()->getName()}\" WITH TEMPLATE=template0");
|
||||
}
|
||||
|
||||
public function deleteDatabase(TenantWithDatabase $tenant): bool
|
||||
{
|
||||
$database = $this->quoteIdentifier($tenant->database()->getName());
|
||||
|
||||
return $this->connection()->statement("DROP DATABASE {$database}");
|
||||
return $this->connection()->statement("DROP DATABASE \"{$tenant->database()->getName()}\"");
|
||||
}
|
||||
|
||||
public function databaseExists(string $name): bool
|
||||
{
|
||||
return (bool) $this->connection()->selectOne(
|
||||
'SELECT datname FROM pg_database WHERE datname = ? LIMIT 1',
|
||||
[$name]
|
||||
);
|
||||
}
|
||||
|
||||
protected function quoteIdentifier(string $identifier): string
|
||||
{
|
||||
return '"' . str_replace('"', '""', $identifier) . '"';
|
||||
return (bool) $this->connection()->selectOne("SELECT datname FROM pg_database WHERE datname = '$name'");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue