From 524abc80d70fbec15820b92763247c6cf0097499 Mon Sep 17 00:00:00 2001 From: Matej Baco Date: Thu, 2 Sep 2021 11:38:24 +0200 Subject: [PATCH] Rollback of services and providers sub-collections --- app/config/collections2.php | 4 +- app/controllers/api/projects.php | 71 ++++---------------------------- app/init.php | 39 ------------------ 3 files changed, 11 insertions(+), 103 deletions(-) diff --git a/app/config/collections2.php b/app/config/collections2.php index df2f2dbab7..29375bec5c 100644 --- a/app/config/collections2.php +++ b/app/config/collections2.php @@ -478,7 +478,7 @@ $collections = [ 'required' => false, 'default' => null, 'array' => false, - 'filters' => ['subQueryServices'], + 'filters' => ['json'], ], [ '$id' => 'auths', @@ -500,7 +500,7 @@ $collections = [ 'required' => false, 'default' => null, 'array' => false, - 'filters' => ['subQueryProviders'], + 'filters' => ['json'], ], [ '$id' => 'platforms', diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index 42cb3ebc1b..973df927d4 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -93,9 +93,9 @@ App::post('/v1/projects') 'legalCity' => $legalCity, 'legalAddress' => $legalAddress, 'legalTaxId' => $legalTaxId, - 'services' => null, + 'services' => new stdClass(), 'platforms' => null, - 'providers' => null, + 'providers' => [], 'webhooks' => null, 'keys' => null, 'domains' => null, @@ -484,37 +484,10 @@ App::patch('/v1/projects/:projectId/service') throw new Exception('Project not found', 404); } - $document = $dbForConsole->findOne('services', [ - new Query('projectId', Query::TYPE_EQUAL, [$project->getId()]), - new Query('key', Query::TYPE_EQUAL, [$service]), - ]); + $services = $project->getAttribute('services', []); + $services[$service] = $status; - if($document == false || $document->isEmpty()) { - $document = new Document([ - '$id' => $dbForConsole->getId(), - '$read' => ['role:all'], - '$write' => ['role:all'], - 'projectId' => $project->getId(), - 'key' => $service, - 'status' => $status, - ]); - - $dbForConsole->createDocument('services', $document); - - $project - ->setAttribute('services', $document, Document::SET_TYPE_APPEND); - - $dbForConsole->purgeDocument('projects', $project->getId()); - } else { - if($document->getAttribute('status') != $status) { - $document->setAttribute('status', $status); - $dbForConsole->updateDocument('services', $document->getId(), $document); - - $project->findAndReplace('$id', $document->getId(), $document, 'services'); - - $dbForConsole->purgeDocument('projects', $project->getId()); - } - } + $project = $dbForConsole->updateDocument('projects', $project->getId(), $project->setAttribute('services', $services)); $response->dynamic($project, Response::MODEL_PROJECT); }); @@ -550,37 +523,11 @@ App::patch('/v1/projects/:projectId/oauth2') new Query('projectId', Query::TYPE_EQUAL, [$project->getId()]), ]); - if($provider && !$provider->isEmpty()) { - // Provider exists + $providers = $project->getAttribute('providers', []); + $providers[$provider . 'Appid'] = $appId; + $providers[$provider . 'Secret'] = $secret; - $provider->setAttribute('appId', $appId) - ->setAttribute('appSecret', $secret); - - $dbForConsole->updateDocument('providers', $provider->getId(), $provider); - - $project->findAndReplace('$id', $provider->getId(), $provider, 'providers'); - - $dbForConsole->purgeDocument('projects', $project->getId()); - } else { - // Provider does not exist yet - - $provider = new Document([ - '$id' => $dbForConsole->getId(), - '$read' => ['role:all'], - '$write' => ['role:all'], - 'projectId' => $project->getId(), - 'key' => $providerKey, - 'appId' => $appId, - 'appSecret' => $secret - ]); - - $dbForConsole->createDocument('providers', $provider); - - $project - ->setAttribute('providers', $provider, Document::SET_TYPE_APPEND); - - $dbForConsole->purgeDocument('projects', $project->getId()); - } + $project = $dbForConsole->updateDocument('projects', $project->getId(), $project->setAttribute('providers', $providers)); $response->dynamic($project, Response::MODEL_PROJECT); }); diff --git a/app/init.php b/app/init.php index e30b7f696d..86c69ae599 100644 --- a/app/init.php +++ b/app/init.php @@ -251,45 +251,6 @@ Database::addFilter('subQueryWebhooks', } ); -Database::addFilter('subQueryServices', - function($value) { - return null; - }, - function($value, Document $document, Database $database) { - $services = $database - ->find('services', [ - new Query('projectId', Query::TYPE_EQUAL, [$document->getId()]) - ], 5000, 0, []); - - $responseJson = []; - foreach($services as $service) { - $responseJson[$service->getAttribute('key')] = $service->getAttribute('status', true); - } - - return $responseJson; - } -); - -Database::addFilter('subQueryProviders', - function($value) { - return null; - }, - function($value, Document $document, Database $database) { - $providers = $database - ->find('providers', [ - new Query('projectId', Query::TYPE_EQUAL, [$document->getId()]) - ], 5000, 0, []); - - $responseJson = []; - foreach($providers as $provider) { - $responseJson[$provider->getAttribute('key') . 'Appid'] = $provider->getAttribute('appId'); - $responseJson[$provider->getAttribute('key') . 'Secret'] = $provider->getAttribute('appSecret'); - } - - return $responseJson; - } -); - Database::addFilter('encrypt', function($value) { $key = App::getEnv('_APP_OPENSSL_KEY_V1');