mirror of
https://github.com/appwrite/appwrite
synced 2026-05-22 16:38:32 +00:00
Simplify PR
This commit is contained in:
parent
31b8e3361d
commit
6b8a4a03c3
19 changed files with 63 additions and 82 deletions
|
|
@ -426,7 +426,7 @@ $http->on(Constant::EVENT_REQUEST, function (SwooleRequest $swooleRequest, Swool
|
|||
App::setResource('swooleResponse', fn () => $swooleResponse);
|
||||
|
||||
$request = new Request($swooleRequest);
|
||||
$response = new Response($swooleResponse, $request);
|
||||
$response = new Response($swooleResponse);
|
||||
|
||||
if (Files::isFileLoaded($request->getURI())) {
|
||||
$time = (60 * 60 * 24 * 365 * 2); // 45 days cache
|
||||
|
|
|
|||
|
|
@ -504,7 +504,7 @@ $server->onWorkerStart(function (int $workerId) use ($server, $register, $stats,
|
|||
$server->onOpen(function (int $connection, SwooleRequest $request) use ($server, $register, $stats, &$realtime, $logError) {
|
||||
$app = new App('UTC');
|
||||
$request = new Request($request);
|
||||
$response = new Response(new SwooleResponse(), $request);
|
||||
$response = new Response(new SwooleResponse());
|
||||
|
||||
Console::info("Connection open (user: {$connection})");
|
||||
|
||||
|
|
@ -625,8 +625,7 @@ $server->onOpen(function (int $connection, SwooleRequest $request) use ($server,
|
|||
|
||||
$server->onMessage(function (int $connection, string $message) use ($server, $register, $realtime, $containerId) {
|
||||
try {
|
||||
$request = new Request(new SwooleRequest());
|
||||
$response = new Response(new SwooleResponse(), $request);
|
||||
$response = new Response(new SwooleResponse());
|
||||
$projectId = $realtime->connections[$connection]['projectId'];
|
||||
$database = getConsoleDB();
|
||||
|
||||
|
|
|
|||
|
|
@ -4,12 +4,14 @@ namespace Appwrite\Platform\Modules\Compute;
|
|||
|
||||
use Appwrite\Event\Build;
|
||||
use Appwrite\Extend\Exception;
|
||||
use Appwrite\Utopia\Response;
|
||||
use Utopia\Database\Database;
|
||||
use Utopia\Database\Document;
|
||||
use Utopia\Database\Exception\Duplicate;
|
||||
use Utopia\Database\Helpers\ID;
|
||||
use Utopia\Database\Helpers\Permission;
|
||||
use Utopia\Database\Helpers\Role;
|
||||
use Utopia\Database\Query;
|
||||
use Utopia\Database\Validator\Authorization;
|
||||
use Utopia\Platform\Action;
|
||||
use Utopia\Swoole\Request;
|
||||
|
|
@ -19,6 +21,47 @@ use Utopia\VCS\Exception\RepositoryNotFound;
|
|||
|
||||
class Base extends Action
|
||||
{
|
||||
/**
|
||||
* Helper to apply select queries
|
||||
*
|
||||
* Method to respect request select queries in response format,
|
||||
* to prevent default rule values from being applied on not-selected attributes
|
||||
*
|
||||
* @param Request $request
|
||||
* @param Document $document
|
||||
* @return void
|
||||
*/
|
||||
public function applySelectQueries(Request $request, Response $response, Document $document): void
|
||||
{
|
||||
$queries = $request->getParam('queries', []);
|
||||
|
||||
$queries = Query::parseQueries($queries);
|
||||
$selectQueries = Query::groupByType($queries)['selections'] ?? [];
|
||||
|
||||
// No select queries means no filtering out
|
||||
if (empty($selectQueries)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$attributes = [];
|
||||
foreach ($selectQueries as $query) {
|
||||
foreach ($query->getValues() as $attribute) {
|
||||
$attributes[] = $attribute;
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Apply for all models? pass model as param?
|
||||
foreach ($response->getRules() as $ruleName => $rule) {
|
||||
if (\str_starts_with($ruleName, '$')) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!\in_array($ruleName, $attributes)) {
|
||||
$response->removeRule($ruleName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function redeployVcsFunction(Request $request, Document $function, Document $project, Document $installation, Database $dbForProject, Build $queueForBuilds, Document $template, GitHub $github, bool $activate, string $referenceType = 'branch', string $reference = ''): Document
|
||||
{
|
||||
$deploymentId = ID::unique();
|
||||
|
|
|
|||
|
|
@ -8,11 +8,9 @@ use Appwrite\Event\Func;
|
|||
use Appwrite\Event\Realtime;
|
||||
use Appwrite\Event\StatsUsage;
|
||||
use Appwrite\Event\Webhook;
|
||||
use Appwrite\Utopia\Request;
|
||||
use Appwrite\Utopia\Response\Model\Execution;
|
||||
use Exception;
|
||||
use Executor\Executor;
|
||||
use Swoole\Http\Request as SwooleRequest;
|
||||
use Utopia\CLI\Console;
|
||||
use Utopia\Config\Config;
|
||||
use Utopia\Database\Database;
|
||||
|
|
@ -617,7 +615,7 @@ class Functions extends Action
|
|||
$execution = $dbForProject->updateDocument('executions', $executionId, $execution);
|
||||
|
||||
$executionModel = new Execution();
|
||||
$realtimeExecution = $executionModel->filter(new Document($execution->getArrayCopy()), new Request(new SwooleRequest()));
|
||||
$realtimeExecution = $executionModel->filter(new Document($execution->getArrayCopy()));
|
||||
$realtimeExecution = $realtimeExecution->getArrayCopy(\array_keys($executionModel->getRules()));
|
||||
|
||||
$queueForEvents
|
||||
|
|
|
|||
|
|
@ -3,9 +3,7 @@
|
|||
namespace Appwrite\SDK;
|
||||
|
||||
use Appwrite\SDK\Response as SDKResponse;
|
||||
use Appwrite\Utopia\Request;
|
||||
use Appwrite\Utopia\Response;
|
||||
use Swoole\Http\Request as HttpRequest;
|
||||
use Swoole\Http\Response as HttpResponse;
|
||||
|
||||
class Method
|
||||
|
|
@ -103,8 +101,7 @@ class Method
|
|||
|
||||
protected function validateResponseModel(string|array $responseModel): void
|
||||
{
|
||||
$request = new Request(new HttpRequest());
|
||||
$response = new Response(new HttpResponse(), $request);
|
||||
$response = new Response(new HttpResponse());
|
||||
|
||||
if (!\is_array($responseModel)) {
|
||||
$responseModel = [$responseModel];
|
||||
|
|
|
|||
|
|
@ -403,9 +403,8 @@ class Response extends SwooleResponse
|
|||
* Response constructor.
|
||||
*
|
||||
* @param SwooleHTTPResponse $response Native response to be passed to parent constructor
|
||||
* @param Request $request Relevant request object, useful for some response filters
|
||||
*/
|
||||
public function __construct(SwooleHTTPResponse $response, protected Request $request)
|
||||
public function __construct(SwooleHTTPResponse $response)
|
||||
{
|
||||
$this
|
||||
// General
|
||||
|
|
@ -720,7 +719,7 @@ class Response extends SwooleResponse
|
|||
$model = $this->getModel($model);
|
||||
$output = [];
|
||||
|
||||
$data = $model->filter($data, $this->request);
|
||||
$data = $model->filter($data);
|
||||
|
||||
if ($model->isAny()) {
|
||||
$this->payload = $data->getArrayCopy();
|
||||
|
|
|
|||
|
|
@ -2,9 +2,7 @@
|
|||
|
||||
namespace Appwrite\Utopia\Response;
|
||||
|
||||
use Appwrite\Utopia\Request;
|
||||
use Utopia\Database\Document;
|
||||
use Utopia\Database\Query;
|
||||
|
||||
abstract class Model
|
||||
{
|
||||
|
|
@ -47,11 +45,10 @@ abstract class Model
|
|||
/**
|
||||
* Filter Document Structure
|
||||
* @param Document $document Document to apply filter on
|
||||
* @param Request $request Relevant request object, useful for select query filtering
|
||||
*
|
||||
* @return Document
|
||||
*/
|
||||
public function filter(Document $document, Request $request): Document
|
||||
public function filter(Document $document): Document
|
||||
{
|
||||
return $document;
|
||||
}
|
||||
|
|
@ -190,44 +187,4 @@ abstract class Model
|
|||
{
|
||||
return $this->public;
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply Select Queries
|
||||
*
|
||||
* Helper method to respect request select queries,
|
||||
* to prevent default rule values from being applied on not-selected attributes
|
||||
*
|
||||
* @param Document $document
|
||||
* @param Request $request
|
||||
* @return void
|
||||
*/
|
||||
public function applySelectQueries(Document $document, Request $request): void
|
||||
{
|
||||
$queries = $request->getParam('queries', []);
|
||||
|
||||
$queries = Query::parseQueries($queries);
|
||||
$selectQueries = Query::groupByType($queries)['selections'] ?? [];
|
||||
|
||||
// No select queries means no filtering out
|
||||
if (empty($selectQueries)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$attributes = [];
|
||||
foreach ($selectQueries as $query) {
|
||||
foreach ($query->getValues() as $attribute) {
|
||||
$attributes[] = $attribute;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($this->getRules() as $ruleName => $rule) {
|
||||
if (\str_starts_with($ruleName, '$')) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!\in_array($ruleName, $attributes)) {
|
||||
$this->removeRule($ruleName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
namespace Appwrite\Utopia\Response\Model;
|
||||
|
||||
use Appwrite\Utopia\Request;
|
||||
use Appwrite\Utopia\Response;
|
||||
use Utopia\Database\Document;
|
||||
|
||||
|
|
@ -81,7 +80,7 @@ class AttributeRelationship extends Attribute
|
|||
*
|
||||
* @return Document
|
||||
*/
|
||||
public function filter(Document $document, Request $request): Document
|
||||
public function filter(Document $document): Document
|
||||
{
|
||||
$options = $document->getAttribute('options');
|
||||
if (!\is_null($options)) {
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
namespace Appwrite\Utopia\Response\Model;
|
||||
|
||||
use Appwrite\Utopia\Request;
|
||||
use Appwrite\Utopia\Response;
|
||||
use Appwrite\Utopia\Response\Model;
|
||||
use Utopia\Database\Document;
|
||||
|
|
@ -94,7 +93,7 @@ class ColumnIndex extends Model
|
|||
return Response::MODEL_COLUMN_INDEX;
|
||||
}
|
||||
|
||||
public function filter(Document $document, Request $request): Document
|
||||
public function filter(Document $document): Document
|
||||
{
|
||||
$columns = $document->getAttribute('attributes', []);
|
||||
$document
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
namespace Appwrite\Utopia\Response\Model;
|
||||
|
||||
use Appwrite\Utopia\Request;
|
||||
use Appwrite\Utopia\Response;
|
||||
use Utopia\Database\Document;
|
||||
|
||||
|
|
@ -81,7 +80,7 @@ class ColumnRelationship extends Column
|
|||
*
|
||||
* @return Document
|
||||
*/
|
||||
public function filter(Document $document, Request $request): Document
|
||||
public function filter(Document $document): Document
|
||||
{
|
||||
$options = $document->getAttribute('options');
|
||||
if (!\is_null($options)) {
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
namespace Appwrite\Utopia\Response\Model;
|
||||
|
||||
use Appwrite\Utopia\Request;
|
||||
use Appwrite\Utopia\Response;
|
||||
use Appwrite\Utopia\Response\Model;
|
||||
use Utopia\Database\Document;
|
||||
|
|
@ -192,7 +191,7 @@ class Deployment extends Model
|
|||
return 'Deployment';
|
||||
}
|
||||
|
||||
public function filter(Document $document, Request $request): Document
|
||||
public function filter(Document $document): Document
|
||||
{
|
||||
$this->applySelectQueries($document, $request);
|
||||
return $document;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
namespace Appwrite\Utopia\Response\Model;
|
||||
|
||||
use Appwrite\Utopia\Request;
|
||||
use Appwrite\Utopia\Response;
|
||||
use Appwrite\Utopia\Response\Model;
|
||||
use Utopia\Database\DateTime;
|
||||
|
|
@ -157,7 +156,7 @@ class Execution extends Model
|
|||
*
|
||||
* @return Document
|
||||
*/
|
||||
public function filter(Document $document, Request $request): Document
|
||||
public function filter(Document $document): Document
|
||||
{
|
||||
$document->removeAttribute('resourceType');
|
||||
$document->setAttribute('functionId', $document->getAttribute('resourceId', ''));
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
namespace Appwrite\Utopia\Response\Model;
|
||||
|
||||
use Appwrite\Utopia\Request;
|
||||
use Appwrite\Utopia\Response;
|
||||
use Appwrite\Utopia\Response\Model;
|
||||
use Utopia\Database\Document;
|
||||
|
|
@ -110,7 +109,7 @@ class Migration extends Model
|
|||
return Response::MODEL_MIGRATION;
|
||||
}
|
||||
|
||||
public function filter(Document $document, Request $request): Document
|
||||
public function filter(Document $document): Document
|
||||
{
|
||||
$errors = $document->getAttribute('errors', []);
|
||||
if (empty($errors)) {
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@
|
|||
namespace Appwrite\Utopia\Response\Model;
|
||||
|
||||
use Appwrite\Auth\Auth;
|
||||
use Appwrite\Utopia\Request;
|
||||
use Appwrite\Utopia\Response;
|
||||
use Appwrite\Utopia\Response\Model;
|
||||
use Utopia\Config\Config;
|
||||
|
|
@ -341,7 +340,7 @@ class Project extends Model
|
|||
*
|
||||
* @return Document
|
||||
*/
|
||||
public function filter(Document $document, Request $request): Document
|
||||
public function filter(Document $document): Document
|
||||
{
|
||||
// SMTP
|
||||
$smtp = $document->getAttribute('smtp', []);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@
|
|||
namespace Appwrite\Utopia\Response\Model;
|
||||
|
||||
use Ahc\Jwt\JWT;
|
||||
use Appwrite\Utopia\Request;
|
||||
use Appwrite\Utopia\Response;
|
||||
use Appwrite\Utopia\Response\Model;
|
||||
use Utopia\Database\Document;
|
||||
|
|
@ -60,7 +59,7 @@ class ResourceToken extends Model
|
|||
;
|
||||
}
|
||||
|
||||
public function filter(Document $document, Request $request): Document
|
||||
public function filter(Document $document): Document
|
||||
{
|
||||
$expire = $document->getAttribute('expire');
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
namespace Appwrite\Utopia\Response\Model;
|
||||
|
||||
use Appwrite\Utopia\Request;
|
||||
use Appwrite\Utopia\Response;
|
||||
use Appwrite\Utopia\Response\Model;
|
||||
use Utopia\Database\Document;
|
||||
|
|
@ -112,7 +111,7 @@ class Table extends Model
|
|||
/**
|
||||
* Process Document before returning it to the client for backwards compatibility!
|
||||
*/
|
||||
public function filter(Document $document, Request $request): Document
|
||||
public function filter(Document $document): Document
|
||||
{
|
||||
$columns = $document->getAttribute('attributes', []);
|
||||
if (!empty($columns) && \is_array($columns)) {
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
namespace Appwrite\Utopia\Response\Model;
|
||||
|
||||
use Appwrite\Utopia\Request;
|
||||
use Appwrite\Utopia\Response;
|
||||
use Appwrite\Utopia\Response\Model;
|
||||
use Utopia\Database\Document;
|
||||
|
|
@ -56,7 +55,7 @@ class Team extends Model
|
|||
*
|
||||
* @return Document
|
||||
*/
|
||||
public function filter(Document $document, Request $request): Document
|
||||
public function filter(Document $document): Document
|
||||
{
|
||||
$prefs = $document->getAttribute('prefs');
|
||||
if ($prefs instanceof Document) {
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
namespace Appwrite\Utopia\Response\Model;
|
||||
|
||||
use Appwrite\Utopia\Request;
|
||||
use Appwrite\Utopia\Response;
|
||||
use Appwrite\Utopia\Response\Model;
|
||||
use Utopia\Database\Document;
|
||||
|
|
@ -148,7 +147,7 @@ class User extends Model
|
|||
*
|
||||
* @return string
|
||||
*/
|
||||
public function filter(Document $document, Request $request): Document
|
||||
public function filter(Document $document): Document
|
||||
{
|
||||
$prefs = $document->getAttribute('prefs');
|
||||
if ($prefs instanceof Document) {
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
namespace Appwrite\Utopia\Response\Model;
|
||||
|
||||
use Appwrite\Utopia\Request;
|
||||
use Appwrite\Utopia\Response;
|
||||
use Appwrite\Utopia\Response\Model;
|
||||
use Utopia\Database\Document;
|
||||
|
|
@ -70,7 +69,7 @@ class Variable extends Model
|
|||
* @param Document $document
|
||||
* @return Document
|
||||
*/
|
||||
public function filter(Document $document, Request $request): Document
|
||||
public function filter(Document $document): Document
|
||||
{
|
||||
$secret = $document->getAttribute('secret');
|
||||
if ($secret === true) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue