Skip to content
6 changes: 6 additions & 0 deletions app/Client/Connector.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use App\Client\Resources\BucketKeysResource;
use App\Client\Resources\CachesResource;
use App\Client\Resources\CliAuthResource;
use App\Client\Resources\CodeExecutionsResource;
use App\Client\Resources\CommandsResource;
use App\Client\Resources\DatabaseClustersResource;
use App\Client\Resources\DatabaseRestoresResource;
Expand Down Expand Up @@ -127,6 +128,11 @@ public function instances(): InstancesResource
return new InstancesResource($this);
}

public function codeExecutions(): CodeExecutionsResource
{
return new CodeExecutionsResource($this);
}

public function commands(): CommandsResource
{
return new CommandsResource($this);
Expand Down
20 changes: 20 additions & 0 deletions app/Client/Requests/CodeExecutionRequestData.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php

namespace App\Client\Requests;

class CodeExecutionRequestData extends RequestData
{
public function __construct(
public readonly string $environmentId,
public readonly string $code,
) {
//
}

public function toRequestData(): array
{
return [
'code' => $this->code,
];
}
}
39 changes: 39 additions & 0 deletions app/Client/Resources/CodeExecutions/CreateCodeExecutionRequest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<?php

namespace App\Client\Resources\CodeExecutions;

use App\Client\Requests\CodeExecutionRequestData;
use App\Dto\CodeExecution;
use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
use Saloon\Http\Response;
use Saloon\Traits\Body\HasJsonBody;

class CreateCodeExecutionRequest extends Request implements HasBody
{
use HasJsonBody;

protected Method $method = Method::POST;

public function __construct(
protected CodeExecutionRequestData $data,
) {
//
}

public function resolveEndpoint(): string
{
return "/environments/{$this->data->environmentId}/code-executions";
}

protected function defaultBody(): array
{
return $this->data->toRequestData();
}

public function createDtoFromResponse(Response $response): mixed
{
return CodeExecution::createFromResponse($response->json());
}
}
29 changes: 29 additions & 0 deletions app/Client/Resources/CodeExecutions/GetCodeExecutionRequest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?php

namespace App\Client\Resources\CodeExecutions;

use App\Dto\CodeExecution;
use Saloon\Enums\Method;
use Saloon\Http\Request;
use Saloon\Http\Response;

class GetCodeExecutionRequest extends Request
{
protected Method $method = Method::GET;

public function __construct(
protected string $codeExecutionId,
) {
//
}

public function resolveEndpoint(): string
{
return "/code-executions/{$this->codeExecutionId}";
}

public function createDtoFromResponse(Response $response): mixed
{
return CodeExecution::createFromResponse($response->json());
}
}
27 changes: 27 additions & 0 deletions app/Client/Resources/CodeExecutionsResource.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?php

namespace App\Client\Resources;

use App\Client\Requests\CodeExecutionRequestData;
use App\Client\Resources\CodeExecutions\CreateCodeExecutionRequest;
use App\Client\Resources\CodeExecutions\GetCodeExecutionRequest;
use App\Dto\CodeExecution;

class CodeExecutionsResource extends Resource
{
public function create(CodeExecutionRequestData $data): CodeExecution
{
$request = new CreateCodeExecutionRequest($data);
$response = $this->send($request);

return $request->createDtoFromResponse($response);
}

public function get(string $codeExecutionId): CodeExecution
{
$request = new GetCodeExecutionRequest($codeExecutionId);
$response = $this->send($request);

return $request->createDtoFromResponse($response);
}
}
Loading
Loading