1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2025-12-12 22:14:03 +00:00

Add PostgreSQL DB driver (#52)

This commit is contained in:
Samuel Štancl 2019-07-12 23:09:29 +02:00 committed by GitHub
parent f2819adcd2
commit b2e2460c34
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 87 additions and 8 deletions

View file

@ -36,6 +36,14 @@ class DatabaseManager
$this->database->setDefaultConnection($default_connection);
}
/**
* Create a database.
* @todo Should this handle prefixes?
*
* @param string $name
* @param string $driver
* @return bool
*/
public function create(string $name, string $driver = null)
{
$this->createTenantConnection($name);
@ -50,10 +58,18 @@ class DatabaseManager
if (config('tenancy.queue_database_creation', false)) {
QueuedTenantDatabaseCreator::dispatch(app($databaseManagers[$driver]), $name, 'create');
} else {
app($databaseManagers[$driver])->createDatabase($name);
return app($databaseManagers[$driver])->createDatabase($name);
}
}
/**
* Delete a database.
* @todo Should this handle prefixes?
*
* @param string $name
* @param string $driver
* @return bool
*/
public function delete(string $name, string $driver = null)
{
$this->createTenantConnection($name);
@ -68,7 +84,7 @@ class DatabaseManager
if (config('tenancy.queue_database_deletion', false)) {
QueuedTenantDatabaseDeleter::dispatch(app($databaseManagers[$driver]), $name, 'delete');
} else {
app($databaseManagers[$driver])->deleteDatabase($name);
return app($databaseManagers[$driver])->deleteDatabase($name);
}
}

View file

@ -0,0 +1,19 @@
<?php
namespace Stancl\Tenancy\TenantDatabaseManagers;
use Illuminate\Support\Facades\DB;
use Stancl\Tenancy\Interfaces\TenantDatabaseManager;
class PostgreSQLDatabaseManager implements TenantDatabaseManager
{
public function createDatabase(string $name): bool
{
return DB::statement("CREATE DATABASE $name WITH TEMPLATE=template0");
}
public function deleteDatabase(string $name): bool
{
return DB::statement("DROP DATABASE $name");
}
}

View file

@ -39,6 +39,7 @@ return [
'database_managers' => [
'sqlite' => 'Stancl\Tenancy\TenantDatabaseManagers\SQLiteDatabaseManager',
'mysql' => 'Stancl\Tenancy\TenantDatabaseManagers\MySQLDatabaseManager',
'pgsql' => 'Stancl\Tenancy\TenantDatabaseManagers\PostgreSQLDatabaseManager',
],
'queue_database_creation' => false,
'queue_database_deletion' => false,