Skip to content

Commit

Permalink
Add server database management
Browse files Browse the repository at this point in the history
  • Loading branch information
TLingC committed Dec 11, 2019
1 parent 56d0355 commit 95391b8
Show file tree
Hide file tree
Showing 3 changed files with 185 additions and 0 deletions.
53 changes: 53 additions & 0 deletions src/Actions/ManagesServers.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use HCGCloud\Pterodactyl\Resources\Server;
use HCGCloud\Pterodactyl\Resources\Allocation;
use HCGCloud\Pterodactyl\Resources\ServerDatabase;

trait ManagesServers
{
Expand Down Expand Up @@ -182,4 +183,56 @@ public function rebuildServer($serverId)
{
return $this->post("api/application/servers/$serverId/rebuild");
}

/**
* Get a collection of databases of a server.
*
* @param integer $serverId
* @return ServerDatabase[]
*/
public function serverDatabases($serverId)
{
$data = $this->get("api/application/servers/$serverId/databases");
$transform = $this->transformCollection(
$data['data'],
ServerDatabase::class
);
return $transform;
}

/**
* Get a database instance of a server.
*
* @param integer $serverId
* @param integer $databaseId
* @return ServerDatabase
*/
public function serverDatabase($serverId, $databaseId)
{
return new ServerDatabase($this->get("api/application/servers/$serverId/databases/$databaseId"), $this);
}

/**
* Reset the password of a server's database.
*
* @param integer $serverId
* @param integer $databaseId
* @return void
*/
public function resetServerDatabasePassword($serverId, $databaseId)
{
return $this->post("api/application/servers/$serverId/databases/$databaseId/reset-password");
}

/**
* Delete the given database of a server.
*
* @param integer $serverId
* @param integer $databaseId
* @return void
*/
public function deleteServerDatabase($serverId, $databaseId)
{
return $this->delete("api/application/servers/$serverId/databases/$databaseId");
}
}
43 changes: 43 additions & 0 deletions src/Resources/Server.php
Original file line number Diff line number Diff line change
Expand Up @@ -211,4 +211,47 @@ public function command($command)
{
return $this->pterodactyl->commandServer($this->identifier, $command);
}

/**
* Get a collection of databases of the server.
*
* @return ServerDatabase[]
*/
public function databases()
{
return $this->pterodactyl->serverDatabases($this->id);
}

/**
* Get a database instance of the server.
*
* @param integer $databaseId
* @return ServerDatabase
*/
public function database($databaseId)
{
return $this->pterodactyl->serverDatabase($this->id, $databaseId);
}

/**
* Reset a database password of the server.
*
* @param integer $databaseId
* @return void
*/
public function resetDatabasePassword($databaseId)
{
return $this->pterodactyl->resetServerDatabasePassword($this->id, $databaseId);
}

/**
* Delete a database of the server.
*
* @param integer $databaseId
* @return void
*/
public function deleteDatabase($databaseId)
{
return $this->pterodactyl->deleteServerDatabase($this->id, $databaseId);
}
}
89 changes: 89 additions & 0 deletions src/Resources/ServerDatabase.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
<?php

namespace HCGCloud\Pterodactyl\Resources;

class ServerDatabase extends Resource
{
/**
* The id of the server's database.
*
* @var integer
*/
public $id;

/**
* The server id of the server's database.
*
* @var integer
*/
public $server;

/**
* The host id of the server's database.
*
* @var integer
*/
public $host;

/**
* The name of the server's database.
*
* @var string
*/
public $database;

/**
* The username of the server's database.
*
* @var string
*/
public $username;

/**
* The remote hostname of the server's database.
*
* @var string
*/
public $remote;

/**
* The date/time the server was created.
*
* @var string
*/
public $createdAt;

/**
* The date/time the server was updated.
*
* @var string
*/
public $updatedAt;

/**
* The attributes of the server.
*
* @var array
*/
public $attributes = [];

/**
* Reset password of the given server's database.
*
* @return void
*/
public function resetPassword()
{
return $this->pterodactyl->resetServerDatabasePassword($this->server, $this->id);
}

/**
* Delete the given database of a server.
*
* @return void
*/
public function delete()
{
return $this->pterodactyl->deleteServerDatabase($this->server, $this->id);
}
}

0 comments on commit 95391b8

Please sign in to comment.