From 1a6530fb577f98154adbd94fe201605b9e14dca2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Tue, 5 Sep 2023 10:21:36 +0200 Subject: [PATCH] Fix project variables --- app/config/collections.php | 11 +++++++++++ app/controllers/api/functions.php | 13 ++++++------- app/init.php | 1 - app/workers/builds.php | 18 ++++++------------ app/workers/functions.php | 15 ++++++--------- src/Appwrite/Migration/Version/V19.php | 1 + 6 files changed, 30 insertions(+), 29 deletions(-) diff --git a/app/config/collections.php b/app/config/collections.php index 1d452f4b3a..db229ce87a 100644 --- a/app/config/collections.php +++ b/app/config/collections.php @@ -1944,6 +1944,17 @@ $projectCollections = array_merge([ 'array' => false, 'filters' => ['subQueryVariables'], ], + [ + '$id' => ID::custom('varsProject'), + 'type' => Database::VAR_STRING, + 'format' => '', + 'size' => 16384, + 'signed' => true, + 'required' => false, + 'default' => null, + 'array' => false, + 'filters' => ['subQueryProjectVariables'], + ], [ '$id' => ID::custom('events'), 'type' => Database::VAR_STRING, diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index 5c8499cdf3..bde5b6bf51 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -1661,15 +1661,14 @@ App::post('/v1/functions/:functionId/executions') $vars = []; // Shared vars - foreach ($project->getAttribute('variables', []) as $var) { + foreach ($function->getAttribute('varsProject', []) as $var) { $vars[$var->getAttribute('key')] = $var->getAttribute('value', ''); } // Function vars - $vars = \array_merge($vars, array_reduce($function->getAttribute('vars', []), function (array $carry, Document $var) { - $carry[$var->getAttribute('key')] = $var->getAttribute('value') ?? ''; - return $carry; - }, [])); + foreach ($function->getAttribute('vars', []) as $var) { + $vars[$var->getAttribute('key')] = $var->getAttribute('value', ''); + } // Appwrite vars $vars = \array_merge($vars, [ @@ -1976,8 +1975,8 @@ App::get('/v1/functions/:functionId/variables') } $response->dynamic(new Document([ - 'variables' => $function->getAttribute('vars'), - 'total' => \count($function->getAttribute('vars')), + 'variables' => $function->getAttribute('vars', []), + 'total' => \count($function->getAttribute('vars', [])), ]), Response::MODEL_VARIABLE_LIST); }); diff --git a/app/init.php b/app/init.php index 439cef7a80..6a2ce67f53 100644 --- a/app/init.php +++ b/app/init.php @@ -492,7 +492,6 @@ Database::addFilter( } ); -// READ-ONLY! TO update, write directly to 'variables' collection. After update to vars, make sure to deleteCachedDocument() Database::addFilter( 'subQueryProjectVariables', function (mixed $value) { diff --git a/app/workers/builds.php b/app/workers/builds.php index 41867a5dd3..0bad5ae72d 100644 --- a/app/workers/builds.php +++ b/app/workers/builds.php @@ -320,21 +320,15 @@ class BuildsV1 extends Worker $vars = []; - // Global vars - $varsFromProject = $dbForProject->find('variables', [ - Query::equal('resourceType', ['project']), - Query::limit(APP_LIMIT_SUBQUERY) - ]); - - foreach ($varsFromProject as $var) { - $vars[$var->getAttribute('key')] = $var->getAttribute('value') ?? ''; + // Shared vars + foreach ($function->getAttribute('varsProject', []) as $var) { + $vars[$var->getAttribute('key')] = $var->getAttribute('value', ''); } // Function vars - $vars = \array_merge($vars, array_reduce($function->getAttribute('vars', []), function (array $carry, Document $var) { - $carry[$var->getAttribute('key')] = $var->getAttribute('value'); - return $carry; - }, [])); + foreach ($function->getAttribute('vars', []) as $var) { + $vars[$var->getAttribute('key')] = $var->getAttribute('value', ''); + } // Appwrite vars $vars = \array_merge($vars, [ diff --git a/app/workers/functions.php b/app/workers/functions.php index 38923b5129..303b574e23 100644 --- a/app/workers/functions.php +++ b/app/workers/functions.php @@ -142,17 +142,14 @@ Server::setResource('execute', function () { $vars = []; // Shared vars - $varsShared = $project->getAttribute('variables', []); - $vars = \array_merge($vars, \array_reduce($varsShared, function (array $carry, Document $var) { - $carry[$var->getAttribute('key')] = $var->getAttribute('value') ?? ''; - return $carry; - }, [])); + foreach ($function->getAttribute('varsProject', []) as $var) { + $vars[$var->getAttribute('key')] = $var->getAttribute('value', ''); + } // Function vars - $vars = \array_merge($vars, array_reduce($function->getAttribute('vars', []), function (array $carry, Document $var) { - $carry[$var->getAttribute('key')] = $var->getAttribute('value'); - return $carry; - }, [])); + foreach ($function->getAttribute('vars', []) as $var) { + $vars[$var->getAttribute('key')] = $var->getAttribute('value', ''); + } // Appwrite vars $vars = \array_merge($vars, [ diff --git a/src/Appwrite/Migration/Version/V19.php b/src/Appwrite/Migration/Version/V19.php index 33c0fceb9f..601f122ad9 100644 --- a/src/Appwrite/Migration/Version/V19.php +++ b/src/Appwrite/Migration/Version/V19.php @@ -408,6 +408,7 @@ class V19 extends Migration 'version', 'entrypoint', 'commands', + 'varsProject' ]; foreach ($attributesToCreate as $attribute) { try {