<?php namespace Pterodactyl\Transformers\Api\Application; use Pterodactyl\Models\DatabaseHost; use League\Fractal\Resource\Collection; use League\Fractal\Resource\NullResource; use Pterodactyl\Services\Acl\Api\AdminAcl; use Pterodactyl\Transformers\Api\Transformer; class DatabaseHostTransformer extends Transformer { protected array $availableIncludes = ['databases']; /** * Return the resource name for the JSONAPI output. */ public function getResourceName(): string { return DatabaseHost::RESOURCE_NAME; } /** * Transform database host into a representation for the application API. */ public function transform(DatabaseHost $model): array { return [ 'id' => $model->id, 'name' => $model->name, 'host' => $model->host, 'port' => $model->port, 'username' => $model->username, 'created_at' => self::formatTimestamp($model->created_at), 'updated_at' => self::formatTimestamp($model->updated_at), ]; } /** * Include the databases associated with this host. */ public function includeDatabases(DatabaseHost $model): Collection|NullResource { if (!$this->authorize(AdminAcl::RESOURCE_SERVER_DATABASES)) { return $this->null(); } // TODO return $this->collection($model->databases, new ServerDatabaseTransformer()); } }