Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pterodactyl
GitHub Repository: pterodactyl/panel
Path: blob/1.0-develop/app/Services/Databases/Hosts/HostUpdateService.php
10263 views
1
<?php
2
3
namespace Pterodactyl\Services\Databases\Hosts;
4
5
use Pterodactyl\Models\DatabaseHost;
6
use Illuminate\Database\DatabaseManager;
7
use Illuminate\Database\ConnectionInterface;
8
use Illuminate\Contracts\Encryption\Encrypter;
9
use Pterodactyl\Extensions\DynamicDatabaseConnection;
10
use Pterodactyl\Contracts\Repository\DatabaseHostRepositoryInterface;
11
12
class HostUpdateService
13
{
14
/**
15
* HostUpdateService constructor.
16
*/
17
public function __construct(
18
private ConnectionInterface $connection,
19
private DatabaseManager $databaseManager,
20
private DynamicDatabaseConnection $dynamic,
21
private Encrypter $encrypter,
22
private DatabaseHostRepositoryInterface $repository,
23
) {
24
}
25
26
/**
27
* Update a database host and persist to the database.
28
*
29
* @throws \Throwable
30
*/
31
public function handle(int $hostId, array $data): DatabaseHost
32
{
33
if (!empty(array_get($data, 'password'))) {
34
$data['password'] = $this->encrypter->encrypt($data['password']);
35
} else {
36
unset($data['password']);
37
}
38
39
return $this->connection->transaction(function () use ($data, $hostId) {
40
$host = $this->repository->update($hostId, $data);
41
$this->dynamic->set('dynamic', $host);
42
$this->databaseManager->connection('dynamic')->select('SELECT 1 FROM dual');
43
44
return $host;
45
});
46
}
47
}
48
49