From c0daed36443b4ee6a7af68002dde2b7aad91e0c8 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Tue, 20 Dec 2022 16:11:30 +0000 Subject: [PATCH] Refactor names and cleanup code --- app/cli.php | 19 +-- app/controllers/api/account.php | 160 +++++++++--------- app/controllers/api/databases.php | 172 ++++++++++---------- app/controllers/api/functions.php | 64 ++++---- app/controllers/api/health.php | 18 +- app/controllers/api/projects.php | 14 +- app/controllers/api/storage.php | 48 +++--- app/controllers/api/teams.php | 52 +++--- app/controllers/api/users.php | 128 +++++++-------- app/controllers/general.php | 2 +- app/controllers/shared/api.php | 80 ++++----- app/init.php | 19 +-- app/worker.php | 52 +----- src/Appwrite/Event/Func.php | 4 +- src/Appwrite/Platform/Tasks/Maintenance.php | 60 +++---- 15 files changed, 426 insertions(+), 466 deletions(-) diff --git a/app/cli.php b/app/cli.php index 4106ae35b5..b327acce28 100644 --- a/app/cli.php +++ b/app/cli.php @@ -153,34 +153,31 @@ CLI::setResource('influxdb', function (Registry $register) { CLI::setResource('queue', function (Group $pools) { return $pools->get('queue')->pop()->getResource(); }, ['pools']); -CLI::setResource('messaging', function (Connection $queue) { +CLI::setResource('queueForMessaging', function (Connection $queue) { return new Phone($queue); }, ['queue']); -CLI::setResource('mails', function (Connection $queue) { +CLI::setResource('queueForMail', function (Connection $queue) { return new Mail($queue); }, ['queue']); -CLI::setResource('builds', function (Connection $queue) { +CLI::setResource('queueForBuilds', function (Connection $queue) { return new Build($queue); }, ['queue']); -CLI::setResource('database', function (Connection $queue) { +CLI::setResource('queueForDatabase', function (Connection $queue) { return new EventDatabase($queue); }, ['queue']); -CLI::setResource('deletes', function (Connection $queue) { +CLI::setResource('queueForDeletes', function (Connection $queue) { return new Delete($queue); }, ['queue']); -CLI::setResource('events', function (Connection $queue) { +CLI::setResource('queueForEvents', function (Connection $queue) { return new Event('', '', $queue); }, ['queue']); -CLI::setResource('audits', function (Connection $queue) { +CLI::setResource('queueForAudits', function (Connection $queue) { return new Audit($queue); }, ['queue']); -CLI::setResource('events', function (Connection $queue) { - return new Event('', '', $queue); -}, ['queue']); CLI::setResource('queueForFunctions', function (Connection $queue) { return new Func($queue); }, ['queue']); -CLI::setResource('certificates', function (Connection $queue) { +CLI::setResource('queueForCertificates', function (Connection $queue) { return new Certificate($queue); }, ['queue']); CLI::setResource('logError', function (Registry $register) { diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index 3d6e7bf762..2680b530b9 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -70,8 +70,8 @@ App::post('/v1/account') ->inject('response') ->inject('project') ->inject('dbForProject') - ->inject('events') - ->action(function (string $userId, string $email, string $password, string $name, Request $request, Response $response, Document $project, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $userId, string $email, string $password, string $name, Request $request, Response $response, Document $project, Database $dbForProject, Event $queueForEvents) { $email = \strtolower($email); if ('console' === $project->getId()) { @@ -130,7 +130,7 @@ App::post('/v1/account') Authorization::setRole(Role::user($user->getId())->toString()); Authorization::setRole(Role::users()->toString()); - $events->setParam('userId', $user->getId()); + $queueForEvents->setParam('userId', $user->getId()); $response ->setStatusCode(Response::STATUS_CODE_CREATED) @@ -166,8 +166,8 @@ App::post('/v1/account/sessions/email') ->inject('project') ->inject('locale') ->inject('geodb') - ->inject('events') - ->action(function (string $email, string $password, Request $request, Response $response, Database $dbForProject, Document $project, Locale $locale, Reader $geodb, Event $events) { + ->inject('queueForEvents') + ->action(function (string $email, string $password, Request $request, Response $response, Database $dbForProject, Document $project, Locale $locale, Reader $geodb, Event $queueForEvents) { $email = \strtolower($email); $protocol = $request->getProtocol(); @@ -247,7 +247,7 @@ App::post('/v1/account/sessions/email') ->setAttribute('expire', $expire) ; - $events + $queueForEvents ->setParam('userId', $profile->getId()) ->setParam('sessionId', $session->getId()) ; @@ -386,8 +386,8 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect') ->inject('user') ->inject('dbForProject') ->inject('geodb') - ->inject('events') - ->action(function (string $provider, string $code, string $state, Request $request, Response $response, Document $project, Document $user, Database $dbForProject, Reader $geodb, Event $events) use ($oauthDefaultSuccess) { + ->inject('queueForEvents') + ->action(function (string $provider, string $code, string $state, Request $request, Response $response, Document $project, Document $user, Database $dbForProject, Reader $geodb, Event $queueForEvents) use ($oauthDefaultSuccess) { $protocol = $request->getProtocol(); $callback = $protocol . '://' . $request->getHostname() . '/v1/account/sessions/oauth2/callback/' . $provider . '/' . $project->getId(); @@ -574,7 +574,7 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect') $session->setAttribute('expire', $expire); - $events + $queueForEvents ->setParam('userId', $user->getId()) ->setParam('sessionId', $session->getId()) ->setPayload($response->output($session, Response::MODEL_SESSION)) @@ -630,9 +630,9 @@ App::post('/v1/account/sessions/magic-url') ->inject('project') ->inject('dbForProject') ->inject('locale') - ->inject('events') - ->inject('mails') - ->action(function (string $userId, string $email, string $url, Request $request, Response $response, Document $project, Database $dbForProject, Locale $locale, Event $events, Mail $mails) { + ->inject('queueForEvents') + ->inject('queueForMail') + ->action(function (string $userId, string $email, string $url, Request $request, Response $response, Document $project, Database $dbForProject, Locale $locale, Event $queueForEvents, Mail $queueForMail) { if (empty(App::getEnv('_APP_SMTP_HOST'))) { throw new Exception(Exception::GENERAL_SMTP_DISABLED, 'SMTP disabled'); @@ -714,7 +714,7 @@ App::post('/v1/account/sessions/magic-url') $url['query'] = Template::mergeQuery(((isset($url['query'])) ? $url['query'] : ''), ['userId' => $user->getId(), 'secret' => $loginSecret, 'expire' => $expire, 'project' => $project->getId()]); $url = Template::unParseURL($url); - $mails + $queueForMail ->setType(MAIL_TYPE_MAGIC_SESSION) ->setRecipient($user->getAttribute('email')) ->setUrl($url) @@ -722,7 +722,7 @@ App::post('/v1/account/sessions/magic-url') ->trigger() ; - $events->setPayload( + $queueForEvents->setPayload( $response->output( $token->setAttribute('secret', $loginSecret), Response::MODEL_TOKEN @@ -765,8 +765,8 @@ App::put('/v1/account/sessions/magic-url') ->inject('project') ->inject('locale') ->inject('geodb') - ->inject('events') - ->action(function (string $userId, string $secret, Request $request, Response $response, Database $dbForProject, Document $project, Locale $locale, Reader $geodb, Event $events) { + ->inject('queueForEvents') + ->action(function (string $userId, string $secret, Request $request, Response $response, Database $dbForProject, Document $project, Locale $locale, Reader $geodb, Event $queueForEvents) { /** @var Utopia\Database\Document $user */ @@ -832,7 +832,7 @@ App::put('/v1/account/sessions/magic-url') throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Failed saving user to DB'); } - $events + $queueForEvents ->setParam('userId', $user->getId()) ->setParam('sessionId', $session->getId()) ; @@ -883,9 +883,9 @@ App::post('/v1/account/sessions/phone') ->inject('response') ->inject('project') ->inject('dbForProject') - ->inject('events') - ->inject('messaging') - ->action(function (string $userId, string $phone, Request $request, Response $response, Document $project, Database $dbForProject, Event $events, EventPhone $messaging) { + ->inject('queueForEvents') + ->inject('queueForMessaging') + ->action(function (string $userId, string $phone, Request $request, Response $response, Document $project, Database $dbForProject, Event $queueForEvents, EventPhone $queueForMessaging) { if (empty(App::getEnv('_APP_SMS_PROVIDER'))) { throw new Exception(Exception::GENERAL_PHONE_DISABLED, 'Phone provider not configured'); @@ -959,12 +959,12 @@ App::post('/v1/account/sessions/phone') $dbForProject->deleteCachedDocument('users', $user->getId()); - $messaging + $queueForMessaging ->setRecipient($phone) ->setMessage($secret) ->trigger(); - $events->setPayload( + $queueForEvents->setPayload( $response->output( $token->setAttribute('secret', $secret), Response::MODEL_TOKEN @@ -1004,8 +1004,8 @@ App::put('/v1/account/sessions/phone') ->inject('project') ->inject('locale') ->inject('geodb') - ->inject('events') - ->action(function (string $userId, string $secret, Request $request, Response $response, Database $dbForProject, Document $project, Locale $locale, Reader $geodb, Event $events) { + ->inject('queueForEvents') + ->action(function (string $userId, string $secret, Request $request, Response $response, Database $dbForProject, Document $project, Locale $locale, Reader $geodb, Event $queueForEvents) { $user = Authorization::skip(fn() => $dbForProject->getDocument('users', $userId)); @@ -1067,7 +1067,7 @@ App::put('/v1/account/sessions/phone') throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Failed saving user to DB'); } - $events + $queueForEvents ->setParam('userId', $user->getId()) ->setParam('sessionId', $session->getId()) ; @@ -1122,8 +1122,8 @@ App::post('/v1/account/sessions/anonymous') ->inject('project') ->inject('dbForProject') ->inject('geodb') - ->inject('events') - ->action(function (Request $request, Response $response, Locale $locale, Document $user, Document $project, Database $dbForProject, Reader $geodb, Event $events) { + ->inject('queueForEvents') + ->action(function (Request $request, Response $response, Locale $locale, Document $user, Document $project, Database $dbForProject, Reader $geodb, Event $queueForEvents) { $protocol = $request->getProtocol(); @@ -1203,7 +1203,7 @@ App::post('/v1/account/sessions/anonymous') $dbForProject->deleteCachedDocument('users', $user->getId()); - $events + $queueForEvents ->setParam('userId', $user->getId()) ->setParam('sessionId', $session->getId()) ; @@ -1475,14 +1475,14 @@ App::patch('/v1/account/name') ->inject('response') ->inject('user') ->inject('dbForProject') - ->inject('events') - ->action(function (string $name, Response $response, Document $user, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $name, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) { $user = $dbForProject->updateDocument('users', $user->getId(), $user ->setAttribute('name', $name) ->setAttribute('search', implode(' ', [$user->getId(), $name, $user->getAttribute('email', ''), $user->getAttribute('phone', '')]))); - $events->setParam('userId', $user->getId()); + $queueForEvents->setParam('userId', $user->getId()); $response->dynamic($user, Response::MODEL_ACCOUNT); }); @@ -1508,8 +1508,8 @@ App::patch('/v1/account/password') ->inject('response') ->inject('user') ->inject('dbForProject') - ->inject('events') - ->action(function (string $password, string $oldPassword, Response $response, Document $user, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $password, string $oldPassword, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) { // Check old password only if its an existing user. if (!empty($user->getAttribute('passwordUpdate')) && !Auth::passwordVerify($oldPassword, $user->getAttribute('password'), $user->getAttribute('hash'), $user->getAttribute('hashOptions'))) { // Double check user password @@ -1522,7 +1522,7 @@ App::patch('/v1/account/password') ->setAttribute('hashOptions', Auth::DEFAULT_ALGO_OPTIONS) ->setAttribute('passwordUpdate', DateTime::now())); - $events->setParam('userId', $user->getId()); + $queueForEvents->setParam('userId', $user->getId()); $response->dynamic($user, Response::MODEL_ACCOUNT); }); @@ -1547,8 +1547,8 @@ App::patch('/v1/account/email') ->inject('response') ->inject('user') ->inject('dbForProject') - ->inject('events') - ->action(function (string $email, string $password, Response $response, Document $user, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $email, string $password, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) { $isAnonymousUser = Auth::isAnonymousUser($user); // Check if request is from an anonymous account for converting if ( @@ -1574,7 +1574,7 @@ App::patch('/v1/account/email') throw new Exception(Exception::USER_EMAIL_ALREADY_EXISTS); } - $events->setParam('userId', $user->getId()); + $queueForEvents->setParam('userId', $user->getId()); $response->dynamic($user, Response::MODEL_ACCOUNT); }); @@ -1599,8 +1599,8 @@ App::patch('/v1/account/phone') ->inject('response') ->inject('user') ->inject('dbForProject') - ->inject('events') - ->action(function (string $phone, string $password, Response $response, Document $user, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $phone, string $password, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) { $isAnonymousUser = Auth::isAnonymousUser($user); // Check if request is from an anonymous account for converting @@ -1622,7 +1622,7 @@ App::patch('/v1/account/phone') throw new Exception(Exception::USER_PHONE_ALREADY_EXISTS); } - $events->setParam('userId', $user->getId()); + $queueForEvents->setParam('userId', $user->getId()); $response->dynamic($user, Response::MODEL_ACCOUNT); }); @@ -1646,12 +1646,12 @@ App::patch('/v1/account/prefs') ->inject('response') ->inject('user') ->inject('dbForProject') - ->inject('events') - ->action(function (array $prefs, Response $response, Document $user, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (array $prefs, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) { $user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('prefs', $prefs)); - $events->setParam('userId', $user->getId()); + $queueForEvents->setParam('userId', $user->getId()); $response->dynamic($user, Response::MODEL_ACCOUNT); }); @@ -1675,12 +1675,12 @@ App::patch('/v1/account/status') ->inject('response') ->inject('user') ->inject('dbForProject') - ->inject('events') - ->action(function (Request $request, Response $response, Document $user, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (Request $request, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) { $user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('status', false)); - $events + $queueForEvents ->setParam('userId', $user->getId()) ->setPayload($response->output($user, Response::MODEL_ACCOUNT)); @@ -1712,9 +1712,9 @@ App::delete('/v1/account/sessions/:sessionId') ->inject('user') ->inject('dbForProject') ->inject('locale') - ->inject('events') + ->inject('queueForEvents') ->inject('project') - ->action(function (?string $sessionId, Request $request, Response $response, Document $user, Database $dbForProject, Locale $locale, Event $events, Document $project) { + ->action(function (?string $sessionId, Request $request, Response $response, Document $user, Database $dbForProject, Locale $locale, Event $queueForEvents, Document $project) { $protocol = $request->getProtocol(); $authDuration = $project->getAttribute('auths', [])['duration'] ?? Auth::TOKEN_EXPIRATION_LOGIN_LONG; @@ -1752,7 +1752,7 @@ App::delete('/v1/account/sessions/:sessionId') $dbForProject->deleteCachedDocument('users', $user->getId()); - $events + $queueForEvents ->setParam('userId', $user->getId()) ->setParam('sessionId', $session->getId()) ->setPayload($response->output($session, Response::MODEL_SESSION)) @@ -1788,8 +1788,8 @@ App::patch('/v1/account/sessions/:sessionId') ->inject('dbForProject') ->inject('project') ->inject('locale') - ->inject('events') - ->action(function (?string $sessionId, Request $request, Response $response, Document $user, Database $dbForProject, Document $project, Locale $locale, Event $events) { + ->inject('queueForEvents') + ->action(function (?string $sessionId, Request $request, Response $response, Document $user, Database $dbForProject, Document $project, Locale $locale, Event $queueForEvents) { $authDuration = $project->getAttribute('auths', [])['duration'] ?? Auth::TOKEN_EXPIRATION_LOGIN_LONG; $sessionId = ($sessionId === 'current') ? Auth::sessionVerify($user->getAttribute('sessions'), Auth::$secret, $authDuration) @@ -1837,7 +1837,7 @@ App::patch('/v1/account/sessions/:sessionId') $session->setAttribute('expire', DateTime::addSeconds(new \DateTime($session->getCreatedAt()), $authDuration)); - $events + $queueForEvents ->setParam('userId', $user->getId()) ->setParam('sessionId', $session->getId()) ->setPayload($response->output($session, Response::MODEL_SESSION)) @@ -1870,8 +1870,8 @@ App::delete('/v1/account/sessions') ->inject('user') ->inject('dbForProject') ->inject('locale') - ->inject('events') - ->action(function (Request $request, Response $response, Document $user, Database $dbForProject, Locale $locale, Event $events) { + ->inject('queueForEvents') + ->action(function (Request $request, Response $response, Document $user, Database $dbForProject, Locale $locale, Event $queueForEvents) { $protocol = $request->getProtocol(); $sessions = $user->getAttribute('sessions', []); @@ -1898,13 +1898,13 @@ App::delete('/v1/account/sessions') ->addCookie(Auth::$cookieName, '', \time() - 3600, '/', Config::getParam('cookieDomain'), ('https' == $protocol), true, Config::getParam('cookieSamesite')); // Use current session for events. - $events->setPayload($response->output($session, Response::MODEL_SESSION)); + $queueForEvents->setPayload($response->output($session, Response::MODEL_SESSION)); } } $dbForProject->deleteCachedDocument('users', $user->getId()); - $events + $queueForEvents ->setParam('userId', $user->getId()) ->setParam('sessionId', $session->getId()); @@ -1936,9 +1936,9 @@ App::post('/v1/account/recovery') ->inject('dbForProject') ->inject('project') ->inject('locale') - ->inject('mails') - ->inject('events') - ->action(function (string $email, string $url, Request $request, Response $response, Database $dbForProject, Document $project, Locale $locale, Mail $mails, Event $events) { + ->inject('queueForMail') + ->inject('queueForEvents') + ->action(function (string $email, string $url, Request $request, Response $response, Database $dbForProject, Document $project, Locale $locale, Mail $queueForMail, Event $queueForEvents) { if (empty(App::getEnv('_APP_SMTP_HOST'))) { throw new Exception(Exception::GENERAL_SMTP_DISABLED, 'SMTP Disabled'); @@ -1991,7 +1991,7 @@ App::post('/v1/account/recovery') $url['query'] = Template::mergeQuery(((isset($url['query'])) ? $url['query'] : ''), ['userId' => $profile->getId(), 'secret' => $secret, 'expire' => $expire]); $url = Template::unParseURL($url); - $mails + $queueForMail ->setType(MAIL_TYPE_RECOVERY) ->setRecipient($profile->getAttribute('email', '')) ->setUrl($url) @@ -2000,7 +2000,7 @@ App::post('/v1/account/recovery') ->trigger(); ; - $events + $queueForEvents ->setParam('userId', $profile->getId()) ->setParam('tokenId', $recovery->getId()) ->setUser($profile) @@ -2042,8 +2042,8 @@ App::put('/v1/account/recovery') ->param('passwordAgain', '', new Password(), 'Repeat new user password. Must be at least 8 chars.') ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $userId, string $secret, string $password, string $passwordAgain, Response $response, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $userId, string $secret, string $password, string $passwordAgain, Response $response, Database $dbForProject, Event $queueForEvents) { if ($password !== $passwordAgain) { throw new Exception(Exception::USER_PASSWORD_MISMATCH); } @@ -2079,7 +2079,7 @@ App::put('/v1/account/recovery') $dbForProject->deleteDocument('tokens', $recovery); $dbForProject->deleteCachedDocument('users', $profile->getId()); - $events + $queueForEvents ->setParam('userId', $profile->getId()) ->setParam('tokenId', $recoveryDocument->getId()) ; @@ -2111,9 +2111,9 @@ App::post('/v1/account/verification') ->inject('user') ->inject('dbForProject') ->inject('locale') - ->inject('events') - ->inject('mails') - ->action(function (string $url, Request $request, Response $response, Document $project, Document $user, Database $dbForProject, Locale $locale, Event $events, Mail $mails) { + ->inject('queueForEvents') + ->inject('queueForMail') + ->action(function (string $url, Request $request, Response $response, Document $project, Document $user, Database $dbForProject, Locale $locale, Event $queueForEvents, Mail $queueForMail) { if (empty(App::getEnv('_APP_SMTP_HOST'))) { throw new Exception(Exception::GENERAL_SMTP_DISABLED, 'SMTP Disabled'); @@ -2151,7 +2151,7 @@ App::post('/v1/account/verification') $url['query'] = Template::mergeQuery(((isset($url['query'])) ? $url['query'] : ''), ['userId' => $user->getId(), 'secret' => $verificationSecret, 'expire' => $expire]); $url = Template::unParseURL($url); - $mails + $queueForMail ->setType(MAIL_TYPE_VERIFICATION) ->setRecipient($user->getAttribute('email')) ->setUrl($url) @@ -2160,7 +2160,7 @@ App::post('/v1/account/verification') ->trigger() ; - $events + $queueForEvents ->setParam('userId', $user->getId()) ->setParam('tokenId', $verification->getId()) ->setPayload($response->output( @@ -2199,8 +2199,8 @@ App::put('/v1/account/verification') ->inject('response') ->inject('user') ->inject('dbForProject') - ->inject('events') - ->action(function (string $userId, string $secret, Response $response, Document $user, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $userId, string $secret, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) { $profile = Authorization::skip(fn() => $dbForProject->getDocument('users', $userId)); @@ -2228,7 +2228,7 @@ App::put('/v1/account/verification') $dbForProject->deleteDocument('tokens', $verification); $dbForProject->deleteCachedDocument('users', $profile->getId()); - $events + $queueForEvents ->setParam('userId', $user->getId()) ->setParam('tokenId', $verificationDocument->getId()) ; @@ -2257,9 +2257,9 @@ App::post('/v1/account/verification/phone') ->inject('response') ->inject('user') ->inject('dbForProject') - ->inject('events') - ->inject('messaging') - ->action(function (Request $request, Response $response, Document $user, Database $dbForProject, Event $events, EventPhone $messaging) { + ->inject('queueForEvents') + ->inject('queueForMessaging') + ->action(function (Request $request, Response $response, Document $user, Database $dbForProject, Event $queueForEvents, EventPhone $queueForMessaging) { if (empty(App::getEnv('_APP_SMS_PROVIDER'))) { throw new Exception(Exception::GENERAL_PHONE_DISABLED); @@ -2298,13 +2298,13 @@ App::post('/v1/account/verification/phone') $dbForProject->deleteCachedDocument('users', $user->getId()); - $messaging + $queueForMessaging ->setRecipient($user->getAttribute('phone')) ->setMessage($secret) ->trigger() ; - $events + $queueForEvents ->setParam('userId', $user->getId()) ->setParam('tokenId', $verification->getId()) ->setPayload($response->output( @@ -2343,8 +2343,8 @@ App::put('/v1/account/verification/phone') ->inject('response') ->inject('user') ->inject('dbForProject') - ->inject('events') - ->action(function (string $userId, string $secret, Response $response, Document $user, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $userId, string $secret, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) { $profile = Authorization::skip(fn() => $dbForProject->getDocument('users', $userId)); @@ -2370,7 +2370,7 @@ App::put('/v1/account/verification/phone') $dbForProject->deleteDocument('tokens', $verification); $dbForProject->deleteCachedDocument('users', $profile->getId()); - $events + $queueForEvents ->setParam('userId', $user->getId()) ->setParam('tokenId', $verificationDocument->getId()) ; diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index 5022681d87..d7465f6730 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -55,7 +55,7 @@ use MaxMind\Db\Reader; * @return Document Newly created attribute document * @throws Exception */ -function createAttribute(string $databaseId, string $collectionId, Document $attribute, Response $response, Database $dbForProject, EventDatabase $database, Event $events): Document +function createAttribute(string $databaseId, string $collectionId, Document $attribute, Response $response, Database $dbForProject, EventDatabase $database, Event $queueForEvents): Document { $key = $attribute->getAttribute('key'); $type = $attribute->getAttribute('type', ''); @@ -134,7 +134,7 @@ function createAttribute(string $databaseId, string $collectionId, Document $att ->setDocument($attribute) ; - $events + $queueForEvents ->setContext('collection', $collection) ->setContext('database', $db) ->setParam('databaseId', $databaseId) @@ -166,8 +166,8 @@ App::post('/v1/databases') ->param('name', '', new Text(128), 'Collection name. Max length: 128 chars.') ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $databaseId, string $name, Response $response, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $databaseId, string $name, Response $response, Database $dbForProject, Event $queueForEvents) { $databaseId = $databaseId == 'unique()' ? ID::unique() : $databaseId; @@ -215,7 +215,7 @@ App::post('/v1/databases') throw new Exception(Exception::DATABASE_ALREADY_EXISTS); } - $events->setParam('databaseId', $database->getId()); + $queueForEvents->setParam('databaseId', $database->getId()); $response ->setStatusCode(Response::STATUS_CODE_CREATED) @@ -400,8 +400,8 @@ App::put('/v1/databases/:databaseId') ->param('name', null, new Text(128), 'Collection name. Max length: 128 chars.') ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $databaseId, string $name, Response $response, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $databaseId, string $name, Response $response, Database $dbForProject, Event $queueForEvents) { $database = $dbForProject->getDocument('databases', $databaseId); @@ -419,7 +419,7 @@ App::put('/v1/databases/:databaseId') throw new Exception(Exception::DOCUMENT_INVALID_STRUCTURE, 'Bad structure. ' . $exception->getMessage()); } - $events->setParam('databaseId', $database->getId()); + $queueForEvents->setParam('databaseId', $database->getId()); $response->dynamic($database, Response::MODEL_DATABASE); }); @@ -441,9 +441,9 @@ App::delete('/v1/databases/:databaseId') ->param('databaseId', '', new UID(), 'Database ID.') ->inject('response') ->inject('dbForProject') - ->inject('events') - ->inject('deletes') - ->action(function (string $databaseId, Response $response, Database $dbForProject, Event $events, Delete $deletes) { + ->inject('queueForEvents') + ->inject('queueForDeletes') + ->action(function (string $databaseId, Response $response, Database $dbForProject, Event $queueForEvents, Delete $queueForDeletes) { $database = $dbForProject->getDocument('databases', $databaseId); @@ -457,12 +457,12 @@ App::delete('/v1/databases/:databaseId') $dbForProject->deleteCachedCollection('databases' . $database->getInternalId()); - $deletes + $queueForDeletes ->setType(DELETE_TYPE_DOCUMENT) ->setDocument($database) ; - $events + $queueForEvents ->setParam('databaseId', $database->getId()) ->setPayload($response->output($database, Response::MODEL_DATABASE)) ; @@ -494,8 +494,8 @@ App::post('/v1/databases/:databaseId/collections') ->param('documentSecurity', false, new Boolean(true), 'Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](/docs/permissions).', true) ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $databaseId, string $collectionId, string $name, ?array $permissions, bool $documentSecurity, Response $response, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $databaseId, string $collectionId, string $name, ?array $permissions, bool $documentSecurity, Response $response, Database $dbForProject, Event $queueForEvents) { $database = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId)); @@ -528,7 +528,7 @@ App::post('/v1/databases/:databaseId/collections') throw new Exception(Exception::COLLECTION_LIMIT_EXCEEDED); } - $events + $queueForEvents ->setContext('database', $database) ->setParam('databaseId', $databaseId) ->setParam('collectionId', $collection->getId()); @@ -750,8 +750,8 @@ App::put('/v1/databases/:databaseId/collections/:collectionId') ->param('enabled', true, new Boolean(), 'Is collection enabled?', true) ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $databaseId, string $collectionId, string $name, ?array $permissions, bool $documentSecurity, bool $enabled, Response $response, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $databaseId, string $collectionId, string $name, ?array $permissions, bool $documentSecurity, bool $enabled, Response $response, Database $dbForProject, Event $queueForEvents) { $database = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId)); @@ -785,7 +785,7 @@ App::put('/v1/databases/:databaseId/collections/:collectionId') throw new Exception(Exception::DOCUMENT_INVALID_STRUCTURE, 'Bad structure. ' . $exception->getMessage()); } - $events + $queueForEvents ->setContext('database', $database) ->setParam('databaseId', $databaseId) ->setParam('collectionId', $collection->getId()); @@ -813,9 +813,9 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId') ->param('collectionId', '', new UID(), 'Collection ID.') ->inject('response') ->inject('dbForProject') - ->inject('events') - ->inject('deletes') - ->action(function (string $databaseId, string $collectionId, Response $response, Database $dbForProject, Event $events, Delete $deletes) { + ->inject('queueForEvents') + ->inject('queueForDeletes') + ->action(function (string $databaseId, string $collectionId, Response $response, Database $dbForProject, Event $queueForEvents, Delete $queueForDeletes) { $database = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId)); @@ -835,12 +835,12 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId') $dbForProject->deleteCachedCollection('database_' . $database->getInternalId() . '_collection_' . $collection->getInternalId()); - $deletes + $queueForDeletes ->setType(DELETE_TYPE_DOCUMENT) ->setDocument($collection) ; - $events + $queueForEvents ->setContext('database', $database) ->setParam('databaseId', $databaseId) ->setParam('collectionId', $collection->getId()) @@ -876,9 +876,9 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/string ->param('array', false, new Boolean(), 'Is attribute an array?', true) ->inject('response') ->inject('dbForProject') - ->inject('database') - ->inject('events') - ->action(function (string $databaseId, string $collectionId, string $key, ?int $size, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $database, Event $events) { + ->inject('queueForDatabase') + ->inject('queueForEvents') + ->action(function (string $databaseId, string $collectionId, string $key, ?int $size, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents) { // Ensure attribute default is within required size $validator = new Text($size); @@ -893,7 +893,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/string 'required' => $required, 'default' => $default, 'array' => $array, - ]), $response, $dbForProject, $database, $events); + ]), $response, $dbForProject, $queueForDatabase, $queueForEvents); $response ->setStatusCode(Response::STATUS_CODE_ACCEPTED) @@ -925,9 +925,9 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/email' ->param('array', false, new Boolean(), 'Is attribute an array?', true) ->inject('response') ->inject('dbForProject') - ->inject('database') - ->inject('events') - ->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $database, Event $events) { + ->inject('queueForDatabase') + ->inject('queueForEvents') + ->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents) { $attribute = createAttribute($databaseId, $collectionId, new Document([ 'key' => $key, @@ -937,7 +937,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/email' 'default' => $default, 'array' => $array, 'format' => APP_DATABASE_ATTRIBUTE_EMAIL, - ]), $response, $dbForProject, $database, $events); + ]), $response, $dbForProject, $queueForDatabase, $queueForEvents); $response ->setStatusCode(Response::STATUS_CODE_ACCEPTED) @@ -970,9 +970,9 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/enum') ->param('array', false, new Boolean(), 'Is attribute an array?', true) ->inject('response') ->inject('dbForProject') - ->inject('database') - ->inject('events') - ->action(function (string $databaseId, string $collectionId, string $key, array $elements, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $database, Event $events) { + ->inject('queueForDatabase') + ->inject('queueForEvents') + ->action(function (string $databaseId, string $collectionId, string $key, array $elements, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents) { // use length of longest string as attribute size $size = 0; @@ -997,7 +997,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/enum') 'array' => $array, 'format' => APP_DATABASE_ATTRIBUTE_ENUM, 'formatOptions' => ['elements' => $elements], - ]), $response, $dbForProject, $database, $events); + ]), $response, $dbForProject, $queueForDatabase, $queueForEvents); $response ->setStatusCode(Response::STATUS_CODE_ACCEPTED) @@ -1029,9 +1029,9 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/ip') ->param('array', false, new Boolean(), 'Is attribute an array?', true) ->inject('response') ->inject('dbForProject') - ->inject('database') - ->inject('events') - ->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $database, Event $events) { + ->inject('queueForDatabase') + ->inject('queueForEvents') + ->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents) { $attribute = createAttribute($databaseId, $collectionId, new Document([ 'key' => $key, @@ -1041,7 +1041,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/ip') 'default' => $default, 'array' => $array, 'format' => APP_DATABASE_ATTRIBUTE_IP, - ]), $response, $dbForProject, $database, $events); + ]), $response, $dbForProject, $queueForDatabase, $queueForEvents); $response ->setStatusCode(Response::STATUS_CODE_ACCEPTED) @@ -1073,9 +1073,9 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/url') ->param('array', false, new Boolean(), 'Is attribute an array?', true) ->inject('response') ->inject('dbForProject') - ->inject('database') - ->inject('events') - ->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $database, Event $events) { + ->inject('queueForDatabase') + ->inject('queueForEvents') + ->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents) { $attribute = createAttribute($databaseId, $collectionId, new Document([ 'key' => $key, @@ -1085,7 +1085,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/url') 'default' => $default, 'array' => $array, 'format' => APP_DATABASE_ATTRIBUTE_URL, - ]), $response, $dbForProject, $database, $events); + ]), $response, $dbForProject, $queueForDatabase, $queueForEvents); $response ->setStatusCode(Response::STATUS_CODE_ACCEPTED) @@ -1119,9 +1119,9 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/intege ->param('array', false, new Boolean(), 'Is attribute an array?', true) ->inject('response') ->inject('dbForProject') - ->inject('database') - ->inject('events') - ->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?int $min, ?int $max, ?int $default, bool $array, Response $response, Database $dbForProject, EventDatabase $database, Event $events) { + ->inject('queueForDatabase') + ->inject('queueForEvents') + ->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?int $min, ?int $max, ?int $default, bool $array, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents) { // Ensure attribute default is within range $min = (is_null($min)) ? PHP_INT_MIN : \intval($min); @@ -1151,7 +1151,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/intege 'min' => $min, 'max' => $max, ], - ]), $response, $dbForProject, $database, $events); + ]), $response, $dbForProject, $queueForDatabase, $queueForEvents); $formatOptions = $attribute->getAttribute('formatOptions', []); @@ -1192,9 +1192,9 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/float' ->param('array', false, new Boolean(), 'Is attribute an array?', true) ->inject('response') ->inject('dbForProject') - ->inject('database') - ->inject('events') - ->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?float $min, ?float $max, ?float $default, bool $array, Response $response, Database $dbForProject, EventDatabase $database, Event $events) { + ->inject('queueForDatabase') + ->inject('queueForEvents') + ->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?float $min, ?float $max, ?float $default, bool $array, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents) { // Ensure attribute default is within range $min = (is_null($min)) ? -PHP_FLOAT_MAX : \floatval($min); @@ -1227,7 +1227,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/float' 'min' => $min, 'max' => $max, ], - ]), $response, $dbForProject, $database, $events); + ]), $response, $dbForProject, $queueForDatabase, $queueForEvents); $formatOptions = $attribute->getAttribute('formatOptions', []); @@ -1266,9 +1266,9 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/boolea ->param('array', false, new Boolean(), 'Is attribute an array?', true) ->inject('response') ->inject('dbForProject') - ->inject('database') - ->inject('events') - ->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?bool $default, bool $array, Response $response, Database $dbForProject, EventDatabase $database, Event $events) { + ->inject('queueForDatabase') + ->inject('queueForEvents') + ->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?bool $default, bool $array, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents) { $attribute = createAttribute($databaseId, $collectionId, new Document([ 'key' => $key, @@ -1277,7 +1277,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/boolea 'required' => $required, 'default' => $default, 'array' => $array, - ]), $response, $dbForProject, $database, $events); + ]), $response, $dbForProject, $queueForDatabase, $queueForEvents); $response ->setStatusCode(Response::STATUS_CODE_ACCEPTED) @@ -1310,9 +1310,9 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/dateti ->param('array', false, new Boolean(), 'Is attribute an array?', true) ->inject('response') ->inject('dbForProject') - ->inject('database') - ->inject('events') - ->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $database, Event $events) { + ->inject('queueForDatabase') + ->inject('queueForEvents') + ->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents) { $attribute = createAttribute($databaseId, $collectionId, new Document([ 'key' => $key, @@ -1322,7 +1322,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/dateti 'default' => $default, 'array' => $array, 'filters' => ['datetime'] - ]), $response, $dbForProject, $database, $events); + ]), $response, $dbForProject, $queueForDatabase, $queueForEvents); $response ->setStatusCode(Response::STATUS_CODE_ACCEPTED) @@ -1461,9 +1461,9 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/attributes/:key ->param('key', '', new Key(), 'Attribute Key.') ->inject('response') ->inject('dbForProject') - ->inject('database') - ->inject('events') - ->action(function (string $databaseId, string $collectionId, string $key, Response $response, Database $dbForProject, EventDatabase $database, Event $events) { + ->inject('queueForDatabase') + ->inject('queueForEvents') + ->action(function (string $databaseId, string $collectionId, string $key, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents) { $db = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId)); @@ -1490,7 +1490,7 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/attributes/:key $dbForProject->deleteCachedDocument('database_' . $db->getInternalId(), $collectionId); $dbForProject->deleteCachedCollection('database_' . $db->getInternalId() . '_collection_' . $collection->getInternalId()); - $database + $queueForDatabase ->setType(DATABASE_TYPE_DELETE_ATTRIBUTE) ->setCollection($collection) ->setDatabase($db) @@ -1516,7 +1516,7 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/attributes/:key default => Response::MODEL_ATTRIBUTE, }; - $events + $queueForEvents ->setParam('databaseId', $databaseId) ->setParam('collectionId', $collection->getId()) ->setParam('attributeId', $attribute->getId()) @@ -1553,9 +1553,9 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/indexes') ->param('orders', [], new ArrayList(new WhiteList(['ASC', 'DESC'], false, Database::VAR_STRING), APP_LIMIT_ARRAY_PARAMS_SIZE), 'Array of index orders. Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' orders are allowed.', true) ->inject('response') ->inject('dbForProject') - ->inject('database') - ->inject('events') - ->action(function (string $databaseId, string $collectionId, string $key, string $type, array $attributes, array $orders, Response $response, Database $dbForProject, EventDatabase $database, Event $events) { + ->inject('queueForDatabase') + ->inject('queueForEvents') + ->action(function (string $databaseId, string $collectionId, string $key, string $type, array $attributes, array $orders, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents) { $db = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId)); @@ -1658,14 +1658,14 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/indexes') $dbForProject->deleteCachedDocument('database_' . $db->getInternalId(), $collectionId); - $database + $queueForDatabase ->setType(DATABASE_TYPE_CREATE_INDEX) ->setDatabase($db) ->setCollection($collection) ->setDocument($index) ; - $events + $queueForEvents ->setParam('databaseId', $databaseId) ->setParam('collectionId', $collection->getId()) ->setParam('indexId', $index->getId()) @@ -1786,9 +1786,9 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/indexes/:key') ->param('key', '', new Key(), 'Index Key.') ->inject('response') ->inject('dbForProject') - ->inject('database') - ->inject('events') - ->action(function (string $databaseId, string $collectionId, string $key, Response $response, Database $dbForProject, EventDatabase $database, Event $events) { + ->inject('queueForDatabase') + ->inject('queueForEvents') + ->action(function (string $databaseId, string $collectionId, string $key, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents) { $db = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId)); @@ -1814,14 +1814,14 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/indexes/:key') $dbForProject->deleteCachedDocument('database_' . $db->getInternalId(), $collectionId); - $database + $queueForDatabase ->setType(DATABASE_TYPE_DELETE_INDEX) ->setDatabase($db) ->setCollection($collection) ->setDocument($index) ; - $events + $queueForEvents ->setParam('databaseId', $databaseId) ->setParam('collectionId', $collection->getId()) ->setParam('indexId', $index->getId()) @@ -1861,9 +1861,9 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/documents') ->inject('response') ->inject('dbForProject') ->inject('user') - ->inject('events') + ->inject('queueForEvents') ->inject('mode') - ->action(function (string $databaseId, string $documentId, string $collectionId, string|array $data, ?array $permissions, Response $response, Database $dbForProject, Document $user, Event $events, string $mode) { + ->action(function (string $databaseId, string $documentId, string $collectionId, string|array $data, ?array $permissions, Response $response, Database $dbForProject, Document $user, Event $queueForEvents, string $mode) { $data = (\is_string($data)) ? \json_decode($data, true) : $data; // Cast to JSON array @@ -1948,7 +1948,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/documents') throw new Exception(Exception::DOCUMENT_ALREADY_EXISTS); } - $events + $queueForEvents ->setParam('databaseId', $databaseId) ->setParam('collectionId', $collection->getId()) ->setParam('documentId', $document->getId()) @@ -2248,9 +2248,9 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents/:docum ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE, [Database::PERMISSION_READ, Database::PERMISSION_UPDATE, Database::PERMISSION_DELETE, Database::PERMISSION_WRITE]), 'An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](/docs/permissions).', true) ->inject('response') ->inject('dbForProject') - ->inject('events') + ->inject('queueForEvents') ->inject('mode') - ->action(function (string $databaseId, string $collectionId, string $documentId, string|array $data, ?array $permissions, Response $response, Database $dbForProject, Event $events, string $mode) { + ->action(function (string $databaseId, string $collectionId, string $documentId, string|array $data, ?array $permissions, Response $response, Database $dbForProject, Event $queueForEvents, string $mode) { $data = (\is_string($data)) ? \json_decode($data, true) : $data; // Cast to JSON array @@ -2344,7 +2344,7 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents/:docum throw new Exception(Exception::DOCUMENT_INVALID_STRUCTURE, $exception->getMessage()); } - $events + $queueForEvents ->setParam('databaseId', $databaseId) ->setParam('collectionId', $collection->getId()) ->setParam('documentId', $document->getId()) @@ -2379,10 +2379,10 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/documents/:docu ->param('documentId', '', new UID(), 'Document ID.') ->inject('response') ->inject('dbForProject') - ->inject('events') - ->inject('deletes') + ->inject('queueForEvents') + ->inject('queueForDeletes') ->inject('mode') - ->action(function (string $databaseId, string $collectionId, string $documentId, Response $response, Database $dbForProject, Event $events, Delete $deletes, string $mode) { + ->action(function (string $databaseId, string $collectionId, string $documentId, Response $response, Database $dbForProject, Event $queueForEvents, Delete $queueForDeletes, string $mode) { $database = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId)); @@ -2430,12 +2430,12 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/documents/:docu $document->setAttribute('$collectionId', $collectionId); $document->setAttribute('$databaseId', $databaseId); - $deletes + $queueForDeletes ->setType(DELETE_TYPE_AUDIT) ->setDocument($document) ; - $events + $queueForEvents ->setParam('databaseId', $databaseId) ->setParam('collectionId', $collection->getId()) ->setParam('documentId', $document->getId()) diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index 17ca300de1..d44c7082fe 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -70,9 +70,9 @@ App::post('/v1/functions') ->inject('dbForProject') ->inject('project') ->inject('user') - ->inject('events') + ->inject('queueForEvents') ->inject('dbForConsole') - ->action(function (string $functionId, string $name, array $execute, string $runtime, array $events, string $schedule, int $timeout, bool $enabled, Response $response, Database $dbForProject, Document $project, Document $user, Event $eventsInstance, Database $dbForConsole) { + ->action(function (string $functionId, string $name, array $execute, string $runtime, array $events, string $schedule, int $timeout, bool $enabled, Response $response, Database $dbForProject, Document $project, Document $user, Event $queueForEvents, Database $dbForConsole) { $functionId = ($functionId == 'unique()') ? ID::unique() : $functionId; $function = $dbForProject->createDocument('functions', new Document([ @@ -104,7 +104,7 @@ App::post('/v1/functions') $function->setAttribute('scheduleId', $schedule->getId()); $dbForProject->updateDocument('functions', $function->getId(), $function); - $eventsInstance->setParam('functionId', $function->getId()); + $queueForEvents->setParam('functionId', $function->getId()); $response ->setStatusCode(Response::STATUS_CODE_CREATED) @@ -446,9 +446,9 @@ App::put('/v1/functions/:functionId') ->inject('dbForProject') ->inject('project') ->inject('user') - ->inject('events') + ->inject('queueForEvents') ->inject('dbForConsole') - ->action(function (string $functionId, string $name, array $execute, array $events, string $schedule, int $timeout, bool $enabled, Response $response, Database $dbForProject, Document $project, Document $user, Event $eventsInstance, Database $dbForConsole) { + ->action(function (string $functionId, string $name, array $execute, array $events, string $schedule, int $timeout, bool $enabled, Response $response, Database $dbForProject, Document $project, Document $user, Event $queueForEvents, Database $dbForConsole) { $function = $dbForProject->getDocument('functions', $functionId); @@ -485,7 +485,7 @@ App::put('/v1/functions/:functionId') Authorization::skip(fn () => $dbForConsole->updateDocument('schedules', $schedule->getId(), $schedule)); - $eventsInstance->setParam('functionId', $function->getId()); + $queueForEvents->setParam('functionId', $function->getId()); $response->dynamic($function, Response::MODEL_FUNCTION); }); @@ -509,9 +509,9 @@ App::patch('/v1/functions/:functionId/deployments/:deploymentId') ->inject('response') ->inject('dbForProject') ->inject('project') - ->inject('events') + ->inject('queueForEvents') ->inject('dbForConsole') - ->action(function (string $functionId, string $deploymentId, Response $response, Database $dbForProject, Document $project, Event $events, Database $dbForConsole) { + ->action(function (string $functionId, string $deploymentId, Response $response, Database $dbForProject, Document $project, Event $queueForEvents, Database $dbForConsole) { $function = $dbForProject->getDocument('functions', $functionId); $deployment = $dbForProject->getDocument('deployments', $deploymentId); @@ -549,7 +549,7 @@ App::patch('/v1/functions/:functionId/deployments/:deploymentId') Authorization::skip(fn () => $dbForConsole->updateDocument('schedules', $schedule->getId(), $schedule)); - $events + $queueForEvents ->setParam('functionId', $function->getId()) ->setParam('deploymentId', $deployment->getId()); @@ -572,11 +572,11 @@ App::delete('/v1/functions/:functionId') ->param('functionId', '', new UID(), 'Function ID.') ->inject('response') ->inject('dbForProject') - ->inject('deletes') - ->inject('events') + ->inject('queueForDeletes') + ->inject('queueForEvents') ->inject('project') ->inject('dbForConsole') - ->action(function (string $functionId, Response $response, Database $dbForProject, Delete $deletes, Event $events, Document $project, Database $dbForConsole) { + ->action(function (string $functionId, Response $response, Database $dbForProject, Delete $queueForDeletes, Event $queueForEvents, Document $project, Database $dbForConsole) { $function = $dbForProject->getDocument('functions', $functionId); @@ -597,11 +597,11 @@ App::delete('/v1/functions/:functionId') Authorization::skip(fn () => $dbForConsole->updateDocument('schedules', $schedule->getId(), $schedule)); - $deletes + $queueForDeletes ->setType(DELETE_TYPE_DOCUMENT) ->setDocument($function); - $events->setParam('functionId', $function->getId()); + $queueForEvents->setParam('functionId', $function->getId()); $response->noContent(); }); @@ -629,13 +629,13 @@ App::post('/v1/functions/:functionId/deployments') ->inject('request') ->inject('response') ->inject('dbForProject') - ->inject('events') + ->inject('queueForEvents') ->inject('project') ->inject('deviceFunctions') ->inject('deviceLocal') ->inject('dbForConsole') - ->inject('builds') - ->action(function (string $functionId, string $entrypoint, mixed $code, bool $activate, Request $request, Response $response, Database $dbForProject, Event $events, Document $project, Device $deviceFunctions, Device $deviceLocal, Database $dbForConsole, Build $builds) { + ->inject('queueForBuilds') + ->action(function (string $functionId, string $entrypoint, mixed $code, bool $activate, Request $request, Response $response, Database $dbForProject, Event $queueForEvents, Document $project, Device $deviceFunctions, Device $deviceLocal, Database $dbForConsole, Build $queueForBuilds) { $function = $dbForProject->getDocument('functions', $functionId); @@ -755,7 +755,7 @@ App::post('/v1/functions/:functionId/deployments') } // Start the build - $builds + $queueForBuilds ->setType(BUILD_TYPE_DEPLOYMENT) ->setResource($function) ->setDeployment($deployment) @@ -804,7 +804,7 @@ App::post('/v1/functions/:functionId/deployments') $metadata = null; - $events + $queueForEvents ->setParam('functionId', $function->getId()) ->setParam('deploymentId', $deployment->getId()); @@ -939,10 +939,10 @@ App::delete('/v1/functions/:functionId/deployments/:deploymentId') ->param('deploymentId', '', new UID(), 'Deployment ID.') ->inject('response') ->inject('dbForProject') - ->inject('deletes') - ->inject('events') + ->inject('queueForDeletes') + ->inject('queueForEvents') ->inject('deviceFunctions') - ->action(function (string $functionId, string $deploymentId, Response $response, Database $dbForProject, Delete $deletes, Event $events, Device $deviceFunctions) { + ->action(function (string $functionId, string $deploymentId, Response $response, Database $dbForProject, Delete $queueForDeletes, Event $queueForEvents, Device $deviceFunctions) { $function = $dbForProject->getDocument('functions', $functionId); if ($function->isEmpty()) { @@ -970,11 +970,11 @@ App::delete('/v1/functions/:functionId/deployments/:deploymentId') ]))); } - $events + $queueForEvents ->setParam('functionId', $function->getId()) ->setParam('deploymentId', $deployment->getId()); - $deletes + $queueForDeletes ->setType(DELETE_TYPE_DOCUMENT) ->setDocument($deployment); @@ -1000,9 +1000,9 @@ App::post('/v1/functions/:functionId/deployments/:deploymentId/builds/:buildId') ->inject('response') ->inject('dbForProject') ->inject('project') - ->inject('events') - ->inject('builds') - ->action(function (string $functionId, string $deploymentId, string $buildId, Response $response, Database $dbForProject, Document $project, Event $events, Build $builds) { + ->inject('queueForEvents') + ->inject('queueForBuilds') + ->action(function (string $functionId, string $deploymentId, string $buildId, Response $response, Database $dbForProject, Document $project, Event $queueForEvents, Build $queueForBuilds) { $function = $dbForProject->getDocument('functions', $functionId); $deployment = $dbForProject->getDocument('deployments', $deploymentId); @@ -1025,12 +1025,12 @@ App::post('/v1/functions/:functionId/deployments/:deploymentId/builds/:buildId') throw new Exception(Exception::BUILD_IN_PROGRESS, 'Build not failed'); } - $events + $queueForEvents ->setParam('functionId', $function->getId()) ->setParam('deploymentId', $deployment->getId()); // Retry the build - $builds + $queueForBuilds ->setType(BUILD_TYPE_RETRY) ->setResource($function) ->setDeployment($deployment) @@ -1062,11 +1062,11 @@ App::post('/v1/functions/:functionId/executions') ->inject('project') ->inject('dbForProject') ->inject('user') - ->inject('events') + ->inject('queueForEvents') ->inject('usage') ->inject('mode') ->inject('queueForFunctions') - ->action(function (string $functionId, string $data, bool $async, Response $response, Document $project, Database $dbForProject, Document $user, Event $events, Stats $usage, string $mode, Func $queueForFunctions) { + ->action(function (string $functionId, string $data, bool $async, Response $response, Document $project, Database $dbForProject, Document $user, Event $queueForEvents, Stats $usage, string $mode, Func $queueForFunctions) { $function = Authorization::skip(fn () => $dbForProject->getDocument('functions', $functionId)); @@ -1148,7 +1148,7 @@ App::post('/v1/functions/:functionId/executions') } } - $events + $queueForEvents ->setParam('functionId', $function->getId()) ->setParam('executionId', $execution->getId()) ->setContext('function', $function); diff --git a/app/controllers/api/health.php b/app/controllers/api/health.php index 4c40953f9b..0110635052 100644 --- a/app/controllers/api/health.php +++ b/app/controllers/api/health.php @@ -349,11 +349,11 @@ App::get('/v1/health/queue/webhooks') ->label('sdk.response.code', Response::STATUS_CODE_OK) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_HEALTH_QUEUE) - ->inject('events') + ->inject('queueForEvents') ->inject('response') - ->action(function (Event $events, Response $response) { + ->action(function (Event $queueForEvents, Response $response) { - $response->dynamic(new Document([ 'size' => $events->getQueueSize() ]), Response::MODEL_HEALTH_QUEUE); + $response->dynamic(new Document([ 'size' => $queueForEvents->getQueueSize() ]), Response::MODEL_HEALTH_QUEUE); }, ['response']); App::get('/v1/health/queue/logs') @@ -367,11 +367,11 @@ App::get('/v1/health/queue/logs') ->label('sdk.response.code', Response::STATUS_CODE_OK) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_HEALTH_QUEUE) - ->inject('audits') + ->inject('queueForAudits') ->inject('response') - ->action(function (Audit $audits, Response $response) { + ->action(function (Audit $queueForAudits, Response $response) { - $response->dynamic(new Document([ 'size' => $audits->getQueueSize() ]), Response::MODEL_HEALTH_QUEUE); + $response->dynamic(new Document([ 'size' => $queueForAudits->getQueueSize() ]), Response::MODEL_HEALTH_QUEUE); }, ['response']); App::get('/v1/health/queue/certificates') @@ -385,11 +385,11 @@ App::get('/v1/health/queue/certificates') ->label('sdk.response.code', Response::STATUS_CODE_OK) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_HEALTH_QUEUE) - ->inject('certificates') + ->inject('queueForCertificates') ->inject('response') - ->action(function (Certificate $certificates, Response $response) { + ->action(function (Certificate $queueForCertificates, Response $response) { - $response->dynamic(new Document([ 'size' => $certificates->getQueueSize() ]), Response::MODEL_HEALTH_QUEUE); + $response->dynamic(new Document([ 'size' => $queueForCertificates->getQueueSize() ]), Response::MODEL_HEALTH_QUEUE); }, ['response']); App::get('/v1/health/queue/functions') diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index d307c41dbc..4c4e84467c 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -483,8 +483,8 @@ App::delete('/v1/projects/:projectId') ->inject('response') ->inject('user') ->inject('dbForConsole') - ->inject('deletes') - ->action(function (string $projectId, string $password, Response $response, Document $user, Database $dbForConsole, Delete $deletes) { + ->inject('queueForDeletes') + ->action(function (string $projectId, string $password, Response $response, Document $user, Database $dbForConsole, Delete $queueForDeletes) { if (!Auth::passwordVerify($password, $user->getAttribute('password'), $user->getAttribute('hash'), $user->getAttribute('hashOptions'))) { // Double check user password throw new Exception(Exception::USER_INVALID_CREDENTIALS); @@ -496,7 +496,7 @@ App::delete('/v1/projects/:projectId') throw new Exception(Exception::PROJECT_NOT_FOUND); } - $deletes + $queueForDeletes ->setType(DELETE_TYPE_DOCUMENT) ->setDocument($project) ; @@ -1314,7 +1314,7 @@ App::patch('/v1/projects/:projectId/domains/:domainId/verification') ->param('domainId', '', new UID(), 'Domain unique ID.') ->inject('response') ->inject('dbForConsole') - ->inject('certificates') + ->inject('queueForCertificates') ->action(function (string $projectId, string $domainId, Response $response, Database $dbForConsole, Certificate $queueForCertificates) { $project = $dbForConsole->getDocument('projects', $projectId); @@ -1373,8 +1373,8 @@ App::delete('/v1/projects/:projectId/domains/:domainId') ->param('domainId', '', new UID(), 'Domain unique ID.') ->inject('response') ->inject('dbForConsole') - ->inject('deletes') - ->action(function (string $projectId, string $domainId, Response $response, Database $dbForConsole, Delete $deletes) { + ->inject('queueForDeletes') + ->action(function (string $projectId, string $domainId, Response $response, Database $dbForConsole, Delete $queueForDeletes) { $project = $dbForConsole->getDocument('projects', $projectId); @@ -1395,7 +1395,7 @@ App::delete('/v1/projects/:projectId/domains/:domainId') $dbForConsole->deleteCachedDocument('projects', $project->getId()); - $deletes + $queueForDeletes ->setType(DELETE_TYPE_CERTIFICATES) ->setDocument($domain); diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index 71979cca55..ddad15d520 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -71,8 +71,8 @@ App::post('/v1/storage/buckets') ->param('antivirus', true, new Boolean(true), 'Is virus scanning enabled? For file size above ' . Storage::human(APP_LIMIT_ANTIVIRUS, 0) . ' AntiVirus scanning is skipped even if it\'s enabled', true) ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $bucketId, string $name, ?array $permissions, bool $fileSecurity, bool $enabled, int $maximumFileSize, array $allowedFileExtensions, string $compression, bool $encryption, bool $antivirus, Response $response, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $bucketId, string $name, ?array $permissions, bool $fileSecurity, bool $enabled, int $maximumFileSize, array $allowedFileExtensions, string $compression, bool $encryption, bool $antivirus, Response $response, Database $dbForProject, Event $queueForEvents) { $bucketId = $bucketId === 'unique()' ? ID::unique() : $bucketId; @@ -134,7 +134,7 @@ App::post('/v1/storage/buckets') throw new Exception(Exception::STORAGE_BUCKET_ALREADY_EXISTS); } - $events + $queueForEvents ->setParam('bucketId', $bucket->getId()) ; @@ -243,8 +243,8 @@ App::put('/v1/storage/buckets/:bucketId') ->param('antivirus', true, new Boolean(true), 'Is virus scanning enabled? For file size above ' . Storage::human(APP_LIMIT_ANTIVIRUS, 0) . ' AntiVirus scanning is skipped even if it\'s enabled', true) ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $bucketId, string $name, ?array $permissions, bool $fileSecurity, bool $enabled, ?int $maximumFileSize, array $allowedFileExtensions, string $compression, bool $encryption, bool $antivirus, Response $response, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $bucketId, string $name, ?array $permissions, bool $fileSecurity, bool $enabled, ?int $maximumFileSize, array $allowedFileExtensions, string $compression, bool $encryption, bool $antivirus, Response $response, Database $dbForProject, Event $queueForEvents) { $bucket = $dbForProject->getDocument('buckets', $bucketId); if ($bucket->isEmpty()) { @@ -276,7 +276,7 @@ App::put('/v1/storage/buckets/:bucketId') ->setAttribute('compression', $compression) ->setAttribute('antivirus', $antivirus)); - $events + $queueForEvents ->setParam('bucketId', $bucket->getId()) ; @@ -300,9 +300,9 @@ App::delete('/v1/storage/buckets/:bucketId') ->param('bucketId', '', new UID(), 'Bucket unique ID.') ->inject('response') ->inject('dbForProject') - ->inject('deletes') - ->inject('events') - ->action(function (string $bucketId, Response $response, Database $dbForProject, Delete $deletes, Event $events) { + ->inject('queueForDeletes') + ->inject('queueForEvents') + ->action(function (string $bucketId, Response $response, Database $dbForProject, Delete $queueForDeletes, Event $queueForEvents) { $bucket = $dbForProject->getDocument('buckets', $bucketId); if ($bucket->isEmpty()) { @@ -313,11 +313,11 @@ App::delete('/v1/storage/buckets/:bucketId') throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Failed to remove bucket from DB'); } - $deletes + $queueForDeletes ->setType(DELETE_TYPE_DOCUMENT) ->setDocument($bucket); - $events + $queueForEvents ->setParam('bucketId', $bucket->getId()) ->setPayload($response->output($bucket, Response::MODEL_BUCKET)) ; @@ -355,12 +355,12 @@ App::post('/v1/storage/buckets/:bucketId/files') ->inject('response') ->inject('dbForProject') ->inject('user') - ->inject('events') + ->inject('queueForEvents') ->inject('mode') ->inject('deviceFiles') ->inject('deviceLocal') - ->inject('deletes') - ->action(function (string $bucketId, string $fileId, mixed $file, ?array $permissions, Request $request, Response $response, Database $dbForProject, Document $user, Event $events, string $mode, Device $deviceFiles, Device $deviceLocal, Delete $deletes) { + ->inject('queueForDeletes') + ->action(function (string $bucketId, string $fileId, mixed $file, ?array $permissions, Request $request, Response $response, Database $dbForProject, Document $user, Event $queueForEvents, string $mode, Device $deviceFiles, Device $deviceLocal, Delete $queueForDeletes) { $bucket = Authorization::skip(fn () => $dbForProject->getDocument('buckets', $bucketId)); @@ -636,13 +636,13 @@ App::post('/v1/storage/buckets/:bucketId/files') } } - $events + $queueForEvents ->setParam('bucketId', $bucket->getId()) ->setParam('fileId', $file->getId()) ->setContext('bucket', $bucket) ; - $deletes + $queueForDeletes ->setType(DELETE_TYPE_CACHE_BY_RESOURCE) ->setResource('file/' . $file->getId()) ; @@ -1262,8 +1262,8 @@ App::put('/v1/storage/buckets/:bucketId/files/:fileId') ->inject('dbForProject') ->inject('user') ->inject('mode') - ->inject('events') - ->action(function (string $bucketId, string $fileId, ?array $permissions, Response $response, Database $dbForProject, Document $user, string $mode, Event $events) { + ->inject('queueForEvents') + ->action(function (string $bucketId, string $fileId, ?array $permissions, Response $response, Database $dbForProject, Document $user, string $mode, Event $queueForEvents) { $bucket = Authorization::skip(fn () => $dbForProject->getDocument('buckets', $bucketId)); @@ -1329,7 +1329,7 @@ App::put('/v1/storage/buckets/:bucketId/files/:fileId') $file = Authorization::skip(fn() => $dbForProject->updateDocument('bucket_' . $bucket->getInternalId(), $fileId, $file)); } - $events + $queueForEvents ->setParam('bucketId', $bucket->getId()) ->setParam('fileId', $file->getId()) ->setContext('bucket', $bucket) @@ -1361,11 +1361,11 @@ App::delete('/v1/storage/buckets/:bucketId/files/:fileId') ->param('fileId', '', new UID(), 'File ID.') ->inject('response') ->inject('dbForProject') - ->inject('events') + ->inject('queueForEvents') ->inject('mode') ->inject('deviceFiles') - ->inject('deletes') - ->action(function (string $bucketId, string $fileId, Response $response, Database $dbForProject, Event $events, string $mode, Device $deviceFiles, Delete $deletes) { + ->inject('queueForDeletes') + ->action(function (string $bucketId, string $fileId, Response $response, Database $dbForProject, Event $queueForEvents, string $mode, Device $deviceFiles, Delete $queueForDeletes) { $bucket = Authorization::skip(fn () => $dbForProject->getDocument('buckets', $bucketId)); if ($bucket->isEmpty() || (!$bucket->getAttribute('enabled') && $mode !== APP_MODE_ADMIN)) { @@ -1402,7 +1402,7 @@ App::delete('/v1/storage/buckets/:bucketId/files/:fileId') } if ($deviceDeleted) { - $deletes + $queueForDeletes ->setType(DELETE_TYPE_CACHE_BY_RESOURCE) ->setResource('file/' . $fileId) ; @@ -1424,7 +1424,7 @@ App::delete('/v1/storage/buckets/:bucketId/files/:fileId') throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Failed to delete file from device'); } - $events + $queueForEvents ->setParam('bucketId', $bucket->getId()) ->setParam('fileId', $file->getId()) ->setContext('bucket', $bucket) diff --git a/app/controllers/api/teams.php b/app/controllers/api/teams.php index 572b6f02a8..b4e59a1f6b 100644 --- a/app/controllers/api/teams.php +++ b/app/controllers/api/teams.php @@ -57,8 +57,8 @@ App::post('/v1/teams') ->inject('response') ->inject('user') ->inject('dbForProject') - ->inject('events') - ->action(function (string $teamId, string $name, array $roles, Response $response, Document $user, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $teamId, string $name, array $roles, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) { $isPrivilegedUser = Auth::isPrivilegedUser(Authorization::getRoles()); $isAppUser = Auth::isAppUser(Authorization::getRoles()); @@ -108,10 +108,10 @@ App::post('/v1/teams') $dbForProject->deleteCachedDocument('users', $user->getId()); } - $events->setParam('teamId', $team->getId()); + $queueForEvents->setParam('teamId', $team->getId()); if (!empty($user->getId())) { - $events->setParam('userId', $user->getId()); + $queueForEvents->setParam('userId', $user->getId()); } $response @@ -211,8 +211,8 @@ App::put('/v1/teams/:teamId') ->param('name', null, new Text(128), 'New team name. Max length: 128 chars.') ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $teamId, string $name, Response $response, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $teamId, string $name, Response $response, Database $dbForProject, Event $queueForEvents) { $team = $dbForProject->getDocument('teams', $teamId); @@ -224,7 +224,7 @@ App::put('/v1/teams/:teamId') ->setAttribute('name', $name) ->setAttribute('search', implode(' ', [$teamId, $name]))); - $events->setParam('teamId', $team->getId()); + $queueForEvents->setParam('teamId', $team->getId()); $response->dynamic($team, Response::MODEL_TEAM); }); @@ -245,9 +245,9 @@ App::delete('/v1/teams/:teamId') ->param('teamId', '', new UID(), 'Team ID.') ->inject('response') ->inject('dbForProject') - ->inject('events') - ->inject('deletes') - ->action(function (string $teamId, Response $response, Database $dbForProject, Event $events, Delete $deletes) { + ->inject('queueForEvents') + ->inject('queueForDeletes') + ->action(function (string $teamId, Response $response, Database $dbForProject, Event $queueForEvents, Delete $queueForDeletes) { $team = $dbForProject->getDocument('teams', $teamId); @@ -271,11 +271,11 @@ App::delete('/v1/teams/:teamId') throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Failed to remove team from DB'); } - $deletes + $queueForDeletes ->setType(DELETE_TYPE_DOCUMENT) ->setDocument($team); - $events + $queueForEvents ->setParam('teamId', $team->getId()) ->setPayload($response->output($team, Response::MODEL_TEAM)) ; @@ -310,9 +310,9 @@ App::post('/v1/teams/:teamId/memberships') ->inject('user') ->inject('dbForProject') ->inject('locale') - ->inject('mails') - ->inject('events') - ->action(function (string $teamId, string $email, array $roles, string $url, string $name, Response $response, Document $project, Document $user, Database $dbForProject, Locale $locale, Mail $mails, Event $events) { + ->inject('queueForMail') + ->inject('queueForEvents') + ->action(function (string $teamId, string $email, array $roles, string $url, string $name, Response $response, Document $project, Document $user, Database $dbForProject, Locale $locale, Mail $queueForMail, Event $queueForEvents) { $isPrivilegedUser = Auth::isPrivilegedUser(Authorization::getRoles()); $isAppUser = Auth::isAppUser(Authorization::getRoles()); @@ -431,7 +431,7 @@ App::post('/v1/teams/:teamId/memberships') $url = Template::unParseURL($url); if (!$isPrivilegedUser && !$isAppUser) { // No need of confirmation when in admin or app mode - $mails + $queueForMail ->setType(MAIL_TYPE_INVITATION) ->setRecipient($email) ->setUrl($url) @@ -443,7 +443,7 @@ App::post('/v1/teams/:teamId/memberships') ; } - $events + $queueForEvents ->setParam('teamId', $team->getId()) ->setParam('membershipId', $membership->getId()) ; @@ -601,8 +601,8 @@ App::patch('/v1/teams/:teamId/memberships/:membershipId') ->inject('response') ->inject('user') ->inject('dbForProject') - ->inject('events') - ->action(function (string $teamId, string $membershipId, array $roles, Request $request, Response $response, Document $user, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $teamId, string $membershipId, array $roles, Request $request, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) { $team = $dbForProject->getDocument('teams', $teamId); if ($team->isEmpty()) { @@ -638,7 +638,7 @@ App::patch('/v1/teams/:teamId/memberships/:membershipId') */ $dbForProject->deleteCachedDocument('users', $profile->getId()); - $events + $queueForEvents ->setParam('teamId', $team->getId()) ->setParam('membershipId', $membership->getId()); @@ -676,8 +676,8 @@ App::patch('/v1/teams/:teamId/memberships/:membershipId/status') ->inject('dbForProject') ->inject('project') ->inject('geodb') - ->inject('events') - ->action(function (string $teamId, string $membershipId, string $userId, string $secret, Request $request, Response $response, Document $user, Database $dbForProject, Document $project, Reader $geodb, Event $events) { + ->inject('queueForEvents') + ->action(function (string $teamId, string $membershipId, string $userId, string $secret, Request $request, Response $response, Document $user, Database $dbForProject, Document $project, Reader $geodb, Event $queueForEvents) { $protocol = $request->getProtocol(); $membership = $dbForProject->getDocument('memberships', $membershipId); @@ -761,7 +761,7 @@ App::patch('/v1/teams/:teamId/memberships/:membershipId/status') $team = Authorization::skip(fn() => $dbForProject->updateDocument('teams', $team->getId(), $team->setAttribute('total', $team->getAttribute('total', 0) + 1))); - $events + $queueForEvents ->setParam('teamId', $team->getId()) ->setParam('membershipId', $membership->getId()) ; @@ -803,8 +803,8 @@ App::delete('/v1/teams/:teamId/memberships/:membershipId') ->param('membershipId', '', new UID(), 'Membership ID.') ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $teamId, string $membershipId, Response $response, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $teamId, string $membershipId, Response $response, Database $dbForProject, Event $queueForEvents) { $membership = $dbForProject->getDocument('memberships', $membershipId); @@ -843,7 +843,7 @@ App::delete('/v1/teams/:teamId/memberships/:membershipId') Authorization::skip(fn() => $dbForProject->updateDocument('teams', $team->getId(), $team)); } - $events + $queueForEvents ->setParam('teamId', $team->getId()) ->setParam('membershipId', $membership->getId()) ->setPayload($response->output($membership, Response::MODEL_MEMBERSHIP)) diff --git a/app/controllers/api/users.php b/app/controllers/api/users.php index dce493b024..bb3433e207 100644 --- a/app/controllers/api/users.php +++ b/app/controllers/api/users.php @@ -36,7 +36,7 @@ use MaxMind\Db\Reader; use Utopia\Validator\Integer; /** TODO: Remove function when we move to using utopia/platform */ -function createUser(string $hash, mixed $hashOptions, string $userId, ?string $email, ?string $password, ?string $phone, string $name, Database $dbForProject, Event $events): Document +function createUser(string $hash, mixed $hashOptions, string $userId, ?string $email, ?string $password, ?string $phone, string $name, Database $dbForProject, Event $queueForEvents): Document { $hashOptionsObject = (\is_string($hashOptions)) ? \json_decode($hashOptions, true) : $hashOptions; // Cast to JSON array @@ -78,7 +78,7 @@ function createUser(string $hash, mixed $hashOptions, string $userId, ?string $e throw new Exception(Exception::USER_ALREADY_EXISTS); } - $events->setParam('userId', $user->getId()); + $queueForEvents->setParam('userId', $user->getId()); return $user; } @@ -105,9 +105,9 @@ App::post('/v1/users') ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true) ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $userId, ?string $email, ?string $phone, ?string $password, string $name, Response $response, Database $dbForProject, Event $events) { - $user = createUser('plaintext', '{}', $userId, $email, $password, $phone, $name, $dbForProject, $events); + ->inject('queueForEvents') + ->action(function (string $userId, ?string $email, ?string $phone, ?string $password, string $name, Response $response, Database $dbForProject, Event $queueForEvents) { + $user = createUser('plaintext', '{}', $userId, $email, $password, $phone, $name, $dbForProject, $queueForEvents); $response ->setStatusCode(Response::STATUS_CODE_CREATED) @@ -135,9 +135,9 @@ App::post('/v1/users/bcrypt') ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true) ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $userId, string $email, string $password, string $name, Response $response, Database $dbForProject, Event $events) { - $user = createUser('bcrypt', '{}', $userId, $email, $password, null, $name, $dbForProject, $events); + ->inject('queueForEvents') + ->action(function (string $userId, string $email, string $password, string $name, Response $response, Database $dbForProject, Event $queueForEvents) { + $user = createUser('bcrypt', '{}', $userId, $email, $password, null, $name, $dbForProject, $queueForEvents); $response ->setStatusCode(Response::STATUS_CODE_CREATED) @@ -165,9 +165,9 @@ App::post('/v1/users/md5') ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true) ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $userId, string $email, string $password, string $name, Response $response, Database $dbForProject, Event $events) { - $user = createUser('md5', '{}', $userId, $email, $password, null, $name, $dbForProject, $events); + ->inject('queueForEvents') + ->action(function (string $userId, string $email, string $password, string $name, Response $response, Database $dbForProject, Event $queueForEvents) { + $user = createUser('md5', '{}', $userId, $email, $password, null, $name, $dbForProject, $queueForEvents); $response ->setStatusCode(Response::STATUS_CODE_CREATED) @@ -195,9 +195,9 @@ App::post('/v1/users/argon2') ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true) ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $userId, string $email, string $password, string $name, Response $response, Database $dbForProject, Event $events) { - $user = createUser('argon2', '{}', $userId, $email, $password, null, $name, $dbForProject, $events); + ->inject('queueForEvents') + ->action(function (string $userId, string $email, string $password, string $name, Response $response, Database $dbForProject, Event $queueForEvents) { + $user = createUser('argon2', '{}', $userId, $email, $password, null, $name, $dbForProject, $queueForEvents); $response ->setStatusCode(Response::STATUS_CODE_CREATED) @@ -226,15 +226,15 @@ App::post('/v1/users/sha') ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true) ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $userId, string $email, string $password, string $passwordVersion, string $name, Response $response, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $userId, string $email, string $password, string $passwordVersion, string $name, Response $response, Database $dbForProject, Event $queueForEvents) { $options = '{}'; if (!empty($passwordVersion)) { $options = '{"version":"' . $passwordVersion . '"}'; } - $user = createUser('sha', $options, $userId, $email, $password, null, $name, $dbForProject, $events); + $user = createUser('sha', $options, $userId, $email, $password, null, $name, $dbForProject, $queueForEvents); $response ->setStatusCode(Response::STATUS_CODE_CREATED) @@ -262,9 +262,9 @@ App::post('/v1/users/phpass') ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true) ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $userId, string $email, string $password, string $name, Response $response, Database $dbForProject, Event $events) { - $user = createUser('phpass', '{}', $userId, $email, $password, null, $name, $dbForProject, $events); + ->inject('queueForEvents') + ->action(function (string $userId, string $email, string $password, string $name, Response $response, Database $dbForProject, Event $queueForEvents) { + $user = createUser('phpass', '{}', $userId, $email, $password, null, $name, $dbForProject, $queueForEvents); $response ->setStatusCode(Response::STATUS_CODE_CREATED) @@ -297,8 +297,8 @@ App::post('/v1/users/scrypt') ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true) ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $userId, string $email, string $password, string $passwordSalt, int $passwordCpu, int $passwordMemory, int $passwordParallel, int $passwordLength, string $name, Response $response, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $userId, string $email, string $password, string $passwordSalt, int $passwordCpu, int $passwordMemory, int $passwordParallel, int $passwordLength, string $name, Response $response, Database $dbForProject, Event $queueForEvents) { $options = [ 'salt' => $passwordSalt, 'costCpu' => $passwordCpu, @@ -307,7 +307,7 @@ App::post('/v1/users/scrypt') 'length' => $passwordLength ]; - $user = createUser('scrypt', \json_encode($options), $userId, $email, $password, null, $name, $dbForProject, $events); + $user = createUser('scrypt', \json_encode($options), $userId, $email, $password, null, $name, $dbForProject, $queueForEvents); $response ->setStatusCode(Response::STATUS_CODE_CREATED) @@ -338,9 +338,9 @@ App::post('/v1/users/scrypt-modified') ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true) ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $userId, string $email, string $password, string $passwordSalt, string $passwordSaltSeparator, string $passwordSignerKey, string $name, Response $response, Database $dbForProject, Event $events) { - $user = createUser('scryptMod', '{"signerKey":"' . $passwordSignerKey . '","saltSeparator":"' . $passwordSaltSeparator . '","salt":"' . $passwordSalt . '"}', $userId, $email, $password, null, $name, $dbForProject, $events); + ->inject('queueForEvents') + ->action(function (string $userId, string $email, string $password, string $passwordSalt, string $passwordSaltSeparator, string $passwordSignerKey, string $name, Response $response, Database $dbForProject, Event $queueForEvents) { + $user = createUser('scryptMod', '{"signerKey":"' . $passwordSignerKey . '","saltSeparator":"' . $passwordSaltSeparator . '","salt":"' . $passwordSalt . '"}', $userId, $email, $password, null, $name, $dbForProject, $queueForEvents); $response ->setStatusCode(Response::STATUS_CODE_CREATED) @@ -632,8 +632,8 @@ App::patch('/v1/users/:userId/status') ->param('status', null, new Boolean(true), 'User Status. To activate the user pass `true` and to block the user pass `false`.') ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $userId, bool $status, Response $response, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $userId, bool $status, Response $response, Database $dbForProject, Event $queueForEvents) { $user = $dbForProject->getDocument('users', $userId); @@ -643,7 +643,7 @@ App::patch('/v1/users/:userId/status') $user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('status', (bool) $status)); - $events + $queueForEvents ->setParam('userId', $user->getId()); $response->dynamic($user, Response::MODEL_USER); @@ -668,8 +668,8 @@ App::patch('/v1/users/:userId/verification') ->param('emailVerification', false, new Boolean(), 'User email verification status.') ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $userId, bool $emailVerification, Response $response, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $userId, bool $emailVerification, Response $response, Database $dbForProject, Event $queueForEvents) { $user = $dbForProject->getDocument('users', $userId); @@ -679,7 +679,7 @@ App::patch('/v1/users/:userId/verification') $user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('emailVerification', $emailVerification)); - $events + $queueForEvents ->setParam('userId', $user->getId()); $response->dynamic($user, Response::MODEL_USER); @@ -704,8 +704,8 @@ App::patch('/v1/users/:userId/verification/phone') ->param('phoneVerification', false, new Boolean(), 'User phone verification status.') ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $userId, bool $phoneVerification, Response $response, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $userId, bool $phoneVerification, Response $response, Database $dbForProject, Event $queueForEvents) { $user = $dbForProject->getDocument('users', $userId); @@ -715,7 +715,7 @@ App::patch('/v1/users/:userId/verification/phone') $user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('phoneVerification', $phoneVerification)); - $events + $queueForEvents ->setParam('userId', $user->getId()); $response->dynamic($user, Response::MODEL_USER); @@ -741,8 +741,8 @@ App::patch('/v1/users/:userId/name') ->param('name', '', new Text(128), 'User name. Max length: 128 chars.') ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $userId, string $name, Response $response, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $userId, string $name, Response $response, Database $dbForProject, Event $queueForEvents) { $user = $dbForProject->getDocument('users', $userId); @@ -757,7 +757,7 @@ App::patch('/v1/users/:userId/name') $user = $dbForProject->updateDocument('users', $user->getId(), $user); - $events->setParam('userId', $user->getId()); + $queueForEvents->setParam('userId', $user->getId()); $response->dynamic($user, Response::MODEL_USER); }); @@ -782,8 +782,8 @@ App::patch('/v1/users/:userId/password') ->param('password', '', new Password(), 'New user password. Must be at least 8 chars.') ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $userId, string $password, Response $response, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $userId, string $password, Response $response, Database $dbForProject, Event $queueForEvents) { $user = $dbForProject->getDocument('users', $userId); @@ -799,7 +799,7 @@ App::patch('/v1/users/:userId/password') $user = $dbForProject->updateDocument('users', $user->getId(), $user); - $events->setParam('userId', $user->getId()); + $queueForEvents->setParam('userId', $user->getId()); $response->dynamic($user, Response::MODEL_USER); }); @@ -824,8 +824,8 @@ App::patch('/v1/users/:userId/email') ->param('email', '', new Email(), 'User email.') ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $userId, string $email, Response $response, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $userId, string $email, Response $response, Database $dbForProject, Event $queueForEvents) { $user = $dbForProject->getDocument('users', $userId); @@ -846,7 +846,7 @@ App::patch('/v1/users/:userId/email') throw new Exception(Exception::USER_EMAIL_ALREADY_EXISTS); } - $events->setParam('userId', $user->getId()); + $queueForEvents->setParam('userId', $user->getId()); $response->dynamic($user, Response::MODEL_USER); }); @@ -870,8 +870,8 @@ App::patch('/v1/users/:userId/phone') ->param('number', '', new Phone(), 'User phone number.') ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $userId, string $number, Response $response, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $userId, string $number, Response $response, Database $dbForProject, Event $queueForEvents) { $user = $dbForProject->getDocument('users', $userId); @@ -891,7 +891,7 @@ App::patch('/v1/users/:userId/phone') throw new Exception(Exception::USER_PHONE_ALREADY_EXISTS); } - $events->setParam('userId', $user->getId()); + $queueForEvents->setParam('userId', $user->getId()); $response->dynamic($user, Response::MODEL_USER); }); @@ -916,8 +916,8 @@ App::patch('/v1/users/:userId/verification') ->param('emailVerification', false, new Boolean(), 'User email verification status.') ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $userId, bool $emailVerification, Response $response, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $userId, bool $emailVerification, Response $response, Database $dbForProject, Event $queueForEvents) { $user = $dbForProject->getDocument('users', $userId); @@ -927,7 +927,7 @@ App::patch('/v1/users/:userId/verification') $user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('emailVerification', $emailVerification)); - $events->setParam('userId', $user->getId()); + $queueForEvents->setParam('userId', $user->getId()); $response->dynamic($user, Response::MODEL_USER); }); @@ -949,8 +949,8 @@ App::patch('/v1/users/:userId/prefs') ->param('prefs', '', new Assoc(), 'Prefs key-value JSON object.') ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $userId, array $prefs, Response $response, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $userId, array $prefs, Response $response, Database $dbForProject, Event $queueForEvents) { $user = $dbForProject->getDocument('users', $userId); @@ -960,7 +960,7 @@ App::patch('/v1/users/:userId/prefs') $user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('prefs', $prefs)); - $events + $queueForEvents ->setParam('userId', $user->getId()); $response->dynamic(new Document($prefs), Response::MODEL_PREFERENCES); @@ -984,8 +984,8 @@ App::delete('/v1/users/:userId/sessions/:sessionId') ->param('sessionId', '', new UID(), 'Session ID.') ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $userId, string $sessionId, Response $response, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $userId, string $sessionId, Response $response, Database $dbForProject, Event $queueForEvents) { $user = $dbForProject->getDocument('users', $userId); @@ -1002,7 +1002,7 @@ App::delete('/v1/users/:userId/sessions/:sessionId') $dbForProject->deleteDocument('sessions', $session->getId()); $dbForProject->deleteCachedDocument('users', $user->getId()); - $events + $queueForEvents ->setParam('userId', $user->getId()) ->setParam('sessionId', $sessionId); @@ -1026,8 +1026,8 @@ App::delete('/v1/users/:userId/sessions') ->param('userId', '', new UID(), 'User ID.') ->inject('response') ->inject('dbForProject') - ->inject('events') - ->action(function (string $userId, Response $response, Database $dbForProject, Event $events) { + ->inject('queueForEvents') + ->action(function (string $userId, Response $response, Database $dbForProject, Event $queueForEvents) { $user = $dbForProject->getDocument('users', $userId); @@ -1045,7 +1045,7 @@ App::delete('/v1/users/:userId/sessions') $dbForProject->deleteCachedDocument('users', $user->getId()); - $events + $queueForEvents ->setParam('userId', $user->getId()) ->setPayload($response->output($user, Response::MODEL_USER)); @@ -1069,9 +1069,9 @@ App::delete('/v1/users/:userId') ->param('userId', '', new UID(), 'User ID.') ->inject('response') ->inject('dbForProject') - ->inject('events') - ->inject('deletes') - ->action(function (string $userId, Response $response, Database $dbForProject, Event $events, Delete $deletes) { + ->inject('queueForEvents') + ->inject('queueForDeletes') + ->action(function (string $userId, Response $response, Database $dbForProject, Event $queueForEvents, Delete $queueForDeletes) { $user = $dbForProject->getDocument('users', $userId); @@ -1084,11 +1084,11 @@ App::delete('/v1/users/:userId') $dbForProject->deleteDocument('users', $userId); - $deletes + $queueForDeletes ->setType(DELETE_TYPE_DOCUMENT) ->setDocument($clone); - $events + $queueForEvents ->setParam('userId', $user->getId()) ->setPayload($response->output($clone, Response::MODEL_USER)); diff --git a/app/controllers/general.php b/app/controllers/general.php index fb41689487..1e894d087a 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -51,7 +51,7 @@ App::init() ->inject('locale') ->inject('clients') ->inject('servers') - ->inject('certificates') + ->inject('queueForCertificates') ->action(function (App $utopia, Request $request, Response $response, Document $console, Document $project, Database $dbForConsole, Document $user, Locale $locale, array $clients, array $servers, Certificate $queueForCertificates) { /* * Request format diff --git a/app/controllers/shared/api.php b/app/controllers/shared/api.php index db35cebc65..51e791005e 100644 --- a/app/controllers/shared/api.php +++ b/app/controllers/shared/api.php @@ -97,15 +97,15 @@ App::init() ->inject('response') ->inject('project') ->inject('user') - ->inject('events') - ->inject('audits') - ->inject('mails') + ->inject('queueForEvents') + ->inject('queueForAudits') + ->inject('queueForMail') ->inject('usage') - ->inject('deletes') - ->inject('database') + ->inject('queueForDeletes') + ->inject('queueForDatabase') ->inject('dbForProject') ->inject('mode') - ->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Event $events, Audit $audits, Mail $mails, Stats $usage, Delete $deletes, EventDatabase $database, Database $dbForProject, string $mode) use ($databaseListener) { + ->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Event $queueForEvents, Audit $queueForAudits, Mail $queueForMail, Stats $usage, Delete $queueForDeletes, EventDatabase $queueForDatabase, Database $dbForProject, string $mode) use ($databaseListener) { $route = $utopia->match($request); @@ -174,16 +174,16 @@ App::init() /* * Background Jobs */ - $events + $queueForEvents ->setEvent($route->getLabel('event', '')) ->setProject($project) ->setUser($user); - $mails + $queueForMail ->setProject($project) ->setUser($user); - $audits + $queueForAudits ->setMode($mode) ->setUserAgent($request->getUserAgent('')) ->setIP($request->getIP()) @@ -199,8 +199,8 @@ App::init() ->setParam('project.{scope}.network.inbound', 0) ->setParam('project.{scope}.network.outbound', 0); - $deletes->setProject($project); - $database->setProject($project); + $queueForDeletes->setProject($project); + $queueForDatabase->setProject($project); $dbForProject->on(Database::EVENT_DOCUMENT_CREATE, fn ($event, Document $document) => $databaseListener($event, $document, $usage)); @@ -325,33 +325,33 @@ App::shutdown() ->inject('request') ->inject('response') ->inject('project') - ->inject('events') - ->inject('audits') + ->inject('queueForEvents') + ->inject('queueForAudits') ->inject('usage') - ->inject('deletes') - ->inject('database') + ->inject('queueForDeletes') + ->inject('queueForDatabase') ->inject('mode') ->inject('dbForProject') ->inject('queueForFunctions') - ->action(function (App $utopia, Request $request, Response $response, Document $project, Event $events, Audit $audits, Stats $usage, Delete $deletes, EventDatabase $database, string $mode, Database $dbForProject, Func $queueForFunctions) use ($parseLabel) { + ->action(function (App $utopia, Request $request, Response $response, Document $project, Event $queueForEvents, Audit $queueForAudits, Stats $usage, Delete $queueForDeletes, EventDatabase $queueForDatabase, string $mode, Database $dbForProject, Func $queueForFunctions) use ($parseLabel) { $responsePayload = $response->getPayload(); - if (!empty($events->getEvent())) { - if (empty($events->getPayload())) { - $events->setPayload($responsePayload); + if (!empty($queueForEvents->getEvent())) { + if (empty($queueForEvents->getPayload())) { + $queueForEvents->setPayload($responsePayload); } /** * Trigger functions. */ $queueForFunctions - ->from($events) + ->from($queueForEvents) ->trigger(); /** * Trigger webhooks. */ - $events + $queueForEvents ->setClass(Event::WEBHOOK_CLASS_NAME) ->setQueue(Event::WEBHOOK_QUEUE_NAME) ->trigger(); @@ -360,12 +360,12 @@ App::shutdown() * Trigger realtime. */ if ($project->getId() !== 'console') { - $allEvents = Event::generateEvents($events->getEvent(), $events->getParams()); - $payload = new Document($events->getPayload()); + $allEvents = Event::generateEvents($queueForEvents->getEvent(), $queueForEvents->getParams()); + $payload = new Document($queueForEvents->getPayload()); - $db = $events->getContext('database'); - $collection = $events->getContext('collection'); - $bucket = $events->getContext('bucket'); + $db = $queueForEvents->getContext('database'); + $collection = $queueForEvents->getContext('collection'); + $bucket = $queueForEvents->getContext('bucket'); $target = Realtime::fromPayload( // Pass first, most verbose event pattern @@ -379,13 +379,13 @@ App::shutdown() Realtime::send( projectId: $target['projectId'] ?? $project->getId(), - payload: $events->getPayload(), + payload: $queueForEvents->getPayload(), events: $allEvents, channels: $target['channels'], roles: $target['roles'], options: [ 'permissionsChanged' => $target['permissionsChanged'], - 'userId' => $events->getParam('userId') + 'userId' => $queueForEvents->getParam('userId') ] ); } @@ -393,7 +393,7 @@ App::shutdown() $route = $utopia->match($request); $requestParams = $route->getParamsValues(); - $user = $audits->getUser(); + $user = $queueForAudits->getUser(); /** * Audit labels @@ -402,7 +402,7 @@ App::shutdown() if (!empty($pattern)) { $resource = $parseLabel($pattern, $responsePayload, $requestParams, $user); if (!empty($resource) && $resource !== $pattern) { - $audits->setResource($resource); + $queueForAudits->setResource($resource); } } @@ -410,31 +410,31 @@ App::shutdown() if (!empty($pattern)) { $userId = $parseLabel($pattern, $responsePayload, $requestParams, $user); $user = $dbForProject->getDocument('users', $userId); - $audits->setUser($user); + $queueForAudits->setUser($user); } - if (!empty($audits->getResource()) && !empty($audits->getUser()->getId())) { + if (!empty($queueForAudits->getResource()) && !empty($queueForAudits->getUser()->getId())) { /** * audits.payload is switched to default true * in order to auto audit payload for all endpoints */ $pattern = $route->getLabel('audits.payload', true); if (!empty($pattern)) { - $audits->setPayload($responsePayload); + $queueForAudits->setPayload($responsePayload); } - foreach ($events->getParams() as $key => $value) { - $audits->setParam($key, $value); + foreach ($queueForEvents->getParams() as $key => $value) { + $queueForAudits->setParam($key, $value); } - $audits->trigger(); + $queueForAudits->trigger(); } - if (!empty($deletes->getType())) { - $deletes->trigger(); + if (!empty($queueForDeletes->getType())) { + $queueForDeletes->trigger(); } - if (!empty($database->getType())) { - $database->trigger(); + if (!empty($queueForDatabase->getType())) { + $queueForDatabase->trigger(); } /** diff --git a/app/init.php b/app/init.php index bea032ab75..72ac685569 100644 --- a/app/init.php +++ b/app/init.php @@ -853,34 +853,31 @@ App::setResource('locale', fn() => new Locale(App::getEnv('_APP_LOCALE', 'en'))) App::setResource('queue', function (Group $pools) { return $pools->get('queue')->pop()->getResource(); }, ['pools']); -App::setResource('messaging', function (Connection $queue) { +App::setResource('queueForMessaging', function (Connection $queue) { return new Phone($queue); }, ['queue']); -App::setResource('mails', function (Connection $queue) { +App::setResource('queueForMail', function (Connection $queue) { return new Mail($queue); }, ['queue']); -App::setResource('builds', function (Connection $queue) { +App::setResource('queueForBuilds', function (Connection $queue) { return new Build($queue); }, ['queue']); -App::setResource('database', function (Connection $queue) { +App::setResource('queueForDatabase', function (Connection $queue) { return new EventDatabase($queue); }, ['queue']); -App::setResource('deletes', function (Connection $queue) { +App::setResource('queueForDeletes', function (Connection $queue) { return new Delete($queue); }, ['queue']); -App::setResource('events', function (Connection $queue) { +App::setResource('queueForEvents', function (Connection $queue) { return new Event('', '', $queue); }, ['queue']); -App::setResource('audits', function (Connection $queue) { +App::setResource('queueForAudits', function (Connection $queue) { return new Audit($queue); }, ['queue']); -App::setResource('events', function (Connection $queue) { - return new Event('', '', $queue); -}, ['queue']); App::setResource('queueForFunctions', function (Connection $queue) { return new Func($queue); }, ['queue']); -App::setResource('certificates', function (Connection $queue) { +App::setResource('queueForCertificates', function (Connection $queue) { return new Certificate($queue); }, ['queue']); App::setResource('usage', function ($register) { diff --git a/app/worker.php b/app/worker.php index 33fe128a67..613a155297 100644 --- a/app/worker.php +++ b/app/worker.php @@ -90,7 +90,7 @@ Server::setResource('cache', function (Registry $register) { return new Cache(new Sharding($adapters)); }, ['register']); -Server::setResource('database', function (Registry $register) { +Server::setResource('queueForDatabase', function (Registry $register) { $pools = $register->get('pools'); return new EventDatabase( $pools @@ -103,67 +103,33 @@ Server::setResource('database', function (Registry $register) { Server::setResource('queue', function (Group $pools) { return $pools->get('queue')->pop()->getResource(); }, ['pools']); -Server::setResource('messaging', function (Connection $queue) { +Server::setResource('queueForMessaging', function (Connection $queue) { return new Phone($queue); }, ['queue']); -Server::setResource('mails', function (Connection $queue) { +Server::setResource('queueForMail', function (Connection $queue) { return new Mail($queue); }, ['queue']); -Server::setResource('builds', function (Connection $queue) { +Server::setResource('queueForBuilds', function (Connection $queue) { return new Build($queue); }, ['queue']); -Server::setResource('database', function (Connection $queue) { +Server::setResource('queueForDatabase', function (Connection $queue) { return new EventDatabase($queue); }, ['queue']); -Server::setResource('deletes', function (Connection $queue) { +Server::setResource('queueForDeletes', function (Connection $queue) { return new Delete($queue); }, ['queue']); -Server::setResource('events', function (Connection $queue) { +Server::setResource('queueForEvents', function (Connection $queue) { return new Event('', '', $queue); }, ['queue']); -Server::setResource('audits', function (Connection $queue) { +Server::setResource('queueForAudits', function (Connection $queue) { return new Audit($queue); }, ['queue']); -Server::setResource('events', function (Connection $queue) { - return new Event('', '', $queue); -}, ['queue']); Server::setResource('queueForFunctions', function (Connection $queue) { return new Func($queue); }, ['queue']); -Server::setResource('certificates', function (Connection $queue) { +Server::setResource('queueForCertificates', function (Connection $queue) { return new Certificate($queue); }, ['queue']); -Server::setResource('events', function (Registry $register) { - $pools = $register->get('pools'); - return new Event( - '', - '', - $pools - ->get('queue') - ->pop() - ->getResource() - ); -}, ['register']); - -Server::setResource('audits', function (Registry $register) { - $pools = $register->get('pools'); - return new Audit( - $pools - ->get('queue') - ->pop() - ->getResource() - ); -}, ['register']); - -Server::setResource('certificates', function (Registry $register) { - $pools = $register->get('pools'); - return new Certificate( - $pools - ->get('queue') - ->pop() - ->getResource() - ); -}, ['register']); Server::setResource('logger', function ($register) { return $register->get('logger'); diff --git a/src/Appwrite/Event/Func.php b/src/Appwrite/Event/Func.php index a632e3bfb0..7bbef0fb08 100644 --- a/src/Appwrite/Event/Func.php +++ b/src/Appwrite/Event/Func.php @@ -162,12 +162,12 @@ class Func extends Event /** * Generate a function event from a base event * - * @param Event $event + * @param Event $queueForEvents * * @return self * */ - public function from(Event $event): self + public function from(Event $queueForEvents): self { $this->project = $event->getProject(); $this->user = $event->getUser(); diff --git a/src/Appwrite/Platform/Tasks/Maintenance.php b/src/Appwrite/Platform/Tasks/Maintenance.php index 7cba04315e..4327ca30eb 100644 --- a/src/Appwrite/Platform/Tasks/Maintenance.php +++ b/src/Appwrite/Platform/Tasks/Maintenance.php @@ -28,59 +28,59 @@ class Maintenance extends Action $this ->desc('Schedules maintenance tasks and publishes them to queues') ->inject('dbForConsole') - ->inject('certificates') - ->inject('deletes') - ->callback(fn (Database $dbForConsole, Certificate $certificates, Delete $deletes) => $this->action($dbForConsole, $certificates, $deletes)); + ->inject('queueForCertificates') + ->inject('queueForDeletes') + ->callback(fn (Database $dbForConsole, Certificate $queueForCertificates, Delete $queueForDeletes) => $this->action($dbForConsole, $queueForCertificates, $queueForDeletes)); } - public function action(Database $dbForConsole, Certificate $certificates, Delete $deletes): void + public function action(Database $dbForConsole, Certificate $queueForCertificates, Delete $queueForDeletes): void { Console::title('Maintenance V1'); Console::success(APP_NAME . ' maintenance process v1 has started'); - function notifyDeleteExecutionLogs(int $interval, Delete $deletes) + function notifyDeleteExecutionLogs(int $interval, Delete $queueForDeletes) { - ($deletes) + ($queueForDeletes) ->setType(DELETE_TYPE_EXECUTIONS) ->setDatetime(DateTime::addSeconds(new \DateTime(), -1 * $interval)) ->trigger(); } - function notifyDeleteAbuseLogs(int $interval, Delete $deletes) + function notifyDeleteAbuseLogs(int $interval, Delete $queueForDeletes) { - ($deletes) + ($queueForDeletes) ->setType(DELETE_TYPE_ABUSE) ->setDatetime(DateTime::addSeconds(new \DateTime(), -1 * $interval)) ->trigger(); } - function notifyDeleteAuditLogs(int $interval, Delete $deletes) + function notifyDeleteAuditLogs(int $interval, Delete $queueForDeletes) { - ($deletes) + ($queueForDeletes) ->setType(DELETE_TYPE_AUDIT) ->setDatetime(DateTime::addSeconds(new \DateTime(), -1 * $interval)) ->trigger(); } - function notifyDeleteUsageStats(int $usageStatsRetentionHourly, Delete $deletes) + function notifyDeleteUsageStats(int $usageStatsRetentionHourly, Delete $queueForDeletes) { - ($deletes) + ($queueForDeletes) ->setType(DELETE_TYPE_USAGE) ->setUsageRetentionHourlyDateTime(DateTime::addSeconds(new \DateTime(), -1 * $usageStatsRetentionHourly)) ->trigger(); } - function notifyDeleteConnections(Delete $deletes) + function notifyDeleteConnections(Delete $queueForDeletes) { - ($deletes) + ($queueForDeletes) ->setType(DELETE_TYPE_REALTIME) ->setDatetime(DateTime::addSeconds(new \DateTime(), -60)) ->trigger(); } - function notifyDeleteExpiredSessions(Delete $deletes) + function notifyDeleteExpiredSessions(Delete $queueForDeletes) { - ($deletes) + ($queueForDeletes) ->setType(DELETE_TYPE_SESSIONS) ->trigger(); } @@ -111,19 +111,19 @@ class Maintenance extends Action } } - function notifyDeleteCache($interval, Delete $deletes) + function notifyDeleteCache($interval, Delete $queueForDeletes) { - ($deletes) + ($queueForDeletes) ->setType(DELETE_TYPE_CACHE_BY_TIMESTAMP) ->setDatetime(DateTime::addSeconds(new \DateTime(), -1 * $interval)) ->trigger(); } - function notifyDeleteSchedules($interval, Delete $deletes) + function notifyDeleteSchedules($interval, Delete $queueForDeletes) { - ($deletes) + ($queueForDeletes) ->setType(DELETE_TYPE_SCHEDULES) ->setDatetime(DateTime::addSeconds(new \DateTime(), -1 * $interval)) ->trigger(); @@ -139,19 +139,19 @@ class Maintenance extends Action $cacheRetention = (int) App::getEnv('_APP_MAINTENANCE_RETENTION_CACHE', '2592000'); // 30 days $schedulesDeletionRetention = (int) App::getEnv('_APP_MAINTENANCE_RETENTION_SCHEDULES', '86400'); // 1 Day - Console::loop(function () use ($interval, $executionLogsRetention, $abuseLogsRetention, $auditLogRetention, $cacheRetention, $schedulesDeletionRetention, $usageStatsRetentionHourly, $dbForConsole, $deletes, $certificates) { + Console::loop(function () use ($interval, $executionLogsRetention, $abuseLogsRetention, $auditLogRetention, $cacheRetention, $schedulesDeletionRetention, $usageStatsRetentionHourly, $dbForConsole, $queueForDeletes, $queueForCertificates) { $time = DateTime::now(); Console::info("[{$time}] Notifying workers with maintenance tasks every {$interval} seconds"); - notifyDeleteExecutionLogs($executionLogsRetention, $deletes); - notifyDeleteAbuseLogs($abuseLogsRetention, $deletes); - notifyDeleteAuditLogs($auditLogRetention, $deletes); - notifyDeleteUsageStats($usageStatsRetentionHourly, $deletes); - notifyDeleteConnections($deletes); - notifyDeleteExpiredSessions($deletes); - renewCertificates($dbForConsole, $certificates); - notifyDeleteCache($cacheRetention, $deletes); - notifyDeleteSchedules($schedulesDeletionRetention, $deletes); + notifyDeleteExecutionLogs($executionLogsRetention, $queueForDeletes); + notifyDeleteAbuseLogs($abuseLogsRetention, $queueForDeletes); + notifyDeleteAuditLogs($auditLogRetention, $queueForDeletes); + notifyDeleteUsageStats($usageStatsRetentionHourly, $queueForDeletes); + notifyDeleteConnections($queueForDeletes); + notifyDeleteExpiredSessions($queueForDeletes); + renewCertificates($dbForConsole, $queueForCertificates); + notifyDeleteCache($cacheRetention, $queueForDeletes); + notifyDeleteSchedules($schedulesDeletionRetention, $queueForDeletes); }, $interval); } }