Add support for external_id on servers, closes #975
This commit is contained in:
parent
f655188c58
commit
633bba6d6e
11 changed files with 73 additions and 15 deletions
|
@ -406,7 +406,7 @@ class ServersController extends Controller
|
|||
public function setDetails(Request $request, Server $server)
|
||||
{
|
||||
$this->detailsModificationService->handle($server, $request->only([
|
||||
'owner_id', 'name', 'description',
|
||||
'owner_id', 'external_id', 'name', 'description',
|
||||
]));
|
||||
|
||||
$this->alert->success(trans('admin/server.alerts.details_updated'))->flash();
|
||||
|
|
|
@ -31,6 +31,7 @@ class StoreServerRequest extends ApplicationApiRequest
|
|||
$rules = Server::getCreateRules();
|
||||
|
||||
return [
|
||||
'external_id' => $rules['external_id'],
|
||||
'name' => $rules['name'],
|
||||
'description' => array_merge(['nullable'], $rules['description']),
|
||||
'user' => $rules['owner_id'],
|
||||
|
|
|
@ -53,6 +53,7 @@ class Server extends Model implements CleansAttributes, ValidableContract
|
|||
* @var array
|
||||
*/
|
||||
protected static $applicationRules = [
|
||||
'external_id' => 'sometimes',
|
||||
'owner_id' => 'required',
|
||||
'name' => 'required',
|
||||
'memory' => 'required',
|
||||
|
@ -74,6 +75,7 @@ class Server extends Model implements CleansAttributes, ValidableContract
|
|||
* @var array
|
||||
*/
|
||||
protected static $dataIntegrityRules = [
|
||||
'external_id' => 'nullable|string|between:1,191|unique:servers',
|
||||
'owner_id' => 'integer|exists:users,id',
|
||||
'name' => 'string|min:1|max:255',
|
||||
'node_id' => 'exists:nodes,id',
|
||||
|
@ -122,13 +124,14 @@ class Server extends Model implements CleansAttributes, ValidableContract
|
|||
* @var array
|
||||
*/
|
||||
protected $searchableColumns = [
|
||||
'name' => 50,
|
||||
'uuidShort' => 10,
|
||||
'uuid' => 10,
|
||||
'pack.name' => 5,
|
||||
'user.email' => 20,
|
||||
'user.username' => 20,
|
||||
'name' => 100,
|
||||
'uuid' => 80,
|
||||
'uuidShort' => 80,
|
||||
'external_id' => 50,
|
||||
'user.email' => 40,
|
||||
'user.username' => 30,
|
||||
'node.name' => 10,
|
||||
'pack.name' => 10,
|
||||
];
|
||||
|
||||
/**
|
||||
|
|
|
@ -69,6 +69,7 @@ class DetailsModificationService
|
|||
$this->connection->beginTransaction();
|
||||
|
||||
$response = $this->repository->setFreshModel($this->getUpdatedModel())->update($server->id, [
|
||||
'external_id' => array_get($data, 'external_id'),
|
||||
'owner_id' => array_get($data, 'owner_id'),
|
||||
'name' => array_get($data, 'name'),
|
||||
'description' => array_get($data, 'description') ?? '',
|
||||
|
|
|
@ -211,6 +211,7 @@ class ServerCreationService
|
|||
private function createModel(array $data): Server
|
||||
{
|
||||
return $this->repository->create([
|
||||
'external_id' => array_get($data, 'external_id'),
|
||||
'uuid' => Uuid::uuid4()->toString(),
|
||||
'uuidShort' => str_random(8),
|
||||
'node_id' => array_get($data, 'node_id'),
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
namespace Pterodactyl\Transformers\Api\Application;
|
||||
|
||||
use Cake\Chronos\Chronos;
|
||||
use Pterodactyl\Models\Server;
|
||||
use Pterodactyl\Services\Acl\Api\AdminAcl;
|
||||
use Pterodactyl\Services\Servers\EnvironmentService;
|
||||
|
@ -63,6 +62,7 @@ class ServerTransformer extends BaseTransformer
|
|||
{
|
||||
return [
|
||||
'id' => $server->getKey(),
|
||||
'external_id' => $server->external_id,
|
||||
'uuid' => $server->uuid,
|
||||
'identifier' => $server->uuidShort,
|
||||
'name' => $server->name,
|
||||
|
@ -87,8 +87,8 @@ class ServerTransformer extends BaseTransformer
|
|||
'installed' => (int) $server->installed === 1,
|
||||
'environment' => $this->environmentService->handle($server),
|
||||
],
|
||||
'created_at' => Chronos::createFromFormat(Chronos::DEFAULT_TO_STRING_FORMAT, $server->created_at)->setTimezone('UTC')->toIso8601String(),
|
||||
'updated_at' => Chronos::createFromFormat(Chronos::DEFAULT_TO_STRING_FORMAT, $server->updated_at)->setTimezone('UTC')->toIso8601String(),
|
||||
$server->getUpdatedAtColumn() => $this->formatTimestamp($server->updated_at),
|
||||
$server->getCreatedAtColumn() => $this->formatTimestamp($server->created_at),
|
||||
];
|
||||
}
|
||||
|
||||
|
|
Reference in a new issue