mirror of
https://github.com/vitodeploy/vito.git
synced 2025-07-02 22:46:16 +00:00
Add database and database users sync (#537)
* Add database and database users sync * get mysl users * add mariadb and postgres * fix phpstan
This commit is contained in:
50
app/Actions/Database/SyncDatabaseUsers.php
Normal file
50
app/Actions/Database/SyncDatabaseUsers.php
Normal file
@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace App\Actions\Database;
|
||||
|
||||
use App\Enums\DatabaseUserStatus;
|
||||
use App\Models\DatabaseUser;
|
||||
use App\Models\Server;
|
||||
use App\SSH\Services\Database\Database;
|
||||
|
||||
class SyncDatabaseUsers
|
||||
{
|
||||
public function sync(Server $server): void
|
||||
{
|
||||
$service = $server->database();
|
||||
if (! $service) {
|
||||
return;
|
||||
}
|
||||
/** @var Database $handler */
|
||||
$handler = $service->handler();
|
||||
|
||||
$this->updateUsers($server, $handler);
|
||||
}
|
||||
|
||||
private function updateUsers(Server $server, Database $handler): void
|
||||
{
|
||||
$users = $handler->getUsers();
|
||||
foreach ($users as $user) {
|
||||
$databases = $user[2] != 'NULL' ? explode(',', $user[2]) : [];
|
||||
|
||||
/** @var ?DatabaseUser $databaseUser */
|
||||
$databaseUser = $server->databaseUsers()
|
||||
->where('username', $user[0])
|
||||
->first();
|
||||
|
||||
if ($databaseUser === null) {
|
||||
$server->databaseUsers()->create([
|
||||
'username' => $user[0],
|
||||
'host' => $user[1],
|
||||
'databases' => $databases,
|
||||
'status' => DatabaseUserStatus::READY,
|
||||
]);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
$databaseUser->databases = $databases;
|
||||
$databaseUser->save();
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user