1
0
Fork 0
mirror of synced 2024-06-29 11:40:45 +12:00

Refactor names and cleanup code

This commit is contained in:
Bradley Schofield 2022-12-20 16:11:30 +00:00
parent 0b17a737fe
commit c0daed3644
15 changed files with 426 additions and 466 deletions

View file

@ -153,34 +153,31 @@ CLI::setResource('influxdb', function (Registry $register) {
CLI::setResource('queue', function (Group $pools) { CLI::setResource('queue', function (Group $pools) {
return $pools->get('queue')->pop()->getResource(); return $pools->get('queue')->pop()->getResource();
}, ['pools']); }, ['pools']);
CLI::setResource('messaging', function (Connection $queue) { CLI::setResource('queueForMessaging', function (Connection $queue) {
return new Phone($queue); return new Phone($queue);
}, ['queue']); }, ['queue']);
CLI::setResource('mails', function (Connection $queue) { CLI::setResource('queueForMail', function (Connection $queue) {
return new Mail($queue); return new Mail($queue);
}, ['queue']); }, ['queue']);
CLI::setResource('builds', function (Connection $queue) { CLI::setResource('queueForBuilds', function (Connection $queue) {
return new Build($queue); return new Build($queue);
}, ['queue']); }, ['queue']);
CLI::setResource('database', function (Connection $queue) { CLI::setResource('queueForDatabase', function (Connection $queue) {
return new EventDatabase($queue); return new EventDatabase($queue);
}, ['queue']); }, ['queue']);
CLI::setResource('deletes', function (Connection $queue) { CLI::setResource('queueForDeletes', function (Connection $queue) {
return new Delete($queue); return new Delete($queue);
}, ['queue']); }, ['queue']);
CLI::setResource('events', function (Connection $queue) { CLI::setResource('queueForEvents', function (Connection $queue) {
return new Event('', '', $queue); return new Event('', '', $queue);
}, ['queue']); }, ['queue']);
CLI::setResource('audits', function (Connection $queue) { CLI::setResource('queueForAudits', function (Connection $queue) {
return new Audit($queue); return new Audit($queue);
}, ['queue']); }, ['queue']);
CLI::setResource('events', function (Connection $queue) {
return new Event('', '', $queue);
}, ['queue']);
CLI::setResource('queueForFunctions', function (Connection $queue) { CLI::setResource('queueForFunctions', function (Connection $queue) {
return new Func($queue); return new Func($queue);
}, ['queue']); }, ['queue']);
CLI::setResource('certificates', function (Connection $queue) { CLI::setResource('queueForCertificates', function (Connection $queue) {
return new Certificate($queue); return new Certificate($queue);
}, ['queue']); }, ['queue']);
CLI::setResource('logError', function (Registry $register) { CLI::setResource('logError', function (Registry $register) {

View file

@ -70,8 +70,8 @@ App::post('/v1/account')
->inject('response') ->inject('response')
->inject('project') ->inject('project')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $userId, string $email, string $password, string $name, Request $request, Response $response, Document $project, Database $dbForProject, Event $events) { ->action(function (string $userId, string $email, string $password, string $name, Request $request, Response $response, Document $project, Database $dbForProject, Event $queueForEvents) {
$email = \strtolower($email); $email = \strtolower($email);
if ('console' === $project->getId()) { if ('console' === $project->getId()) {
@ -130,7 +130,7 @@ App::post('/v1/account')
Authorization::setRole(Role::user($user->getId())->toString()); Authorization::setRole(Role::user($user->getId())->toString());
Authorization::setRole(Role::users()->toString()); Authorization::setRole(Role::users()->toString());
$events->setParam('userId', $user->getId()); $queueForEvents->setParam('userId', $user->getId());
$response $response
->setStatusCode(Response::STATUS_CODE_CREATED) ->setStatusCode(Response::STATUS_CODE_CREATED)
@ -166,8 +166,8 @@ App::post('/v1/account/sessions/email')
->inject('project') ->inject('project')
->inject('locale') ->inject('locale')
->inject('geodb') ->inject('geodb')
->inject('events') ->inject('queueForEvents')
->action(function (string $email, string $password, Request $request, Response $response, Database $dbForProject, Document $project, Locale $locale, Reader $geodb, Event $events) { ->action(function (string $email, string $password, Request $request, Response $response, Database $dbForProject, Document $project, Locale $locale, Reader $geodb, Event $queueForEvents) {
$email = \strtolower($email); $email = \strtolower($email);
$protocol = $request->getProtocol(); $protocol = $request->getProtocol();
@ -247,7 +247,7 @@ App::post('/v1/account/sessions/email')
->setAttribute('expire', $expire) ->setAttribute('expire', $expire)
; ;
$events $queueForEvents
->setParam('userId', $profile->getId()) ->setParam('userId', $profile->getId())
->setParam('sessionId', $session->getId()) ->setParam('sessionId', $session->getId())
; ;
@ -386,8 +386,8 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect')
->inject('user') ->inject('user')
->inject('dbForProject') ->inject('dbForProject')
->inject('geodb') ->inject('geodb')
->inject('events') ->inject('queueForEvents')
->action(function (string $provider, string $code, string $state, Request $request, Response $response, Document $project, Document $user, Database $dbForProject, Reader $geodb, Event $events) use ($oauthDefaultSuccess) { ->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(); $protocol = $request->getProtocol();
$callback = $protocol . '://' . $request->getHostname() . '/v1/account/sessions/oauth2/callback/' . $provider . '/' . $project->getId(); $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); $session->setAttribute('expire', $expire);
$events $queueForEvents
->setParam('userId', $user->getId()) ->setParam('userId', $user->getId())
->setParam('sessionId', $session->getId()) ->setParam('sessionId', $session->getId())
->setPayload($response->output($session, Response::MODEL_SESSION)) ->setPayload($response->output($session, Response::MODEL_SESSION))
@ -630,9 +630,9 @@ App::post('/v1/account/sessions/magic-url')
->inject('project') ->inject('project')
->inject('dbForProject') ->inject('dbForProject')
->inject('locale') ->inject('locale')
->inject('events') ->inject('queueForEvents')
->inject('mails') ->inject('queueForMail')
->action(function (string $userId, string $email, string $url, Request $request, Response $response, Document $project, Database $dbForProject, Locale $locale, Event $events, Mail $mails) { ->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'))) { if (empty(App::getEnv('_APP_SMTP_HOST'))) {
throw new Exception(Exception::GENERAL_SMTP_DISABLED, 'SMTP disabled'); 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['query'] = Template::mergeQuery(((isset($url['query'])) ? $url['query'] : ''), ['userId' => $user->getId(), 'secret' => $loginSecret, 'expire' => $expire, 'project' => $project->getId()]);
$url = Template::unParseURL($url); $url = Template::unParseURL($url);
$mails $queueForMail
->setType(MAIL_TYPE_MAGIC_SESSION) ->setType(MAIL_TYPE_MAGIC_SESSION)
->setRecipient($user->getAttribute('email')) ->setRecipient($user->getAttribute('email'))
->setUrl($url) ->setUrl($url)
@ -722,7 +722,7 @@ App::post('/v1/account/sessions/magic-url')
->trigger() ->trigger()
; ;
$events->setPayload( $queueForEvents->setPayload(
$response->output( $response->output(
$token->setAttribute('secret', $loginSecret), $token->setAttribute('secret', $loginSecret),
Response::MODEL_TOKEN Response::MODEL_TOKEN
@ -765,8 +765,8 @@ App::put('/v1/account/sessions/magic-url')
->inject('project') ->inject('project')
->inject('locale') ->inject('locale')
->inject('geodb') ->inject('geodb')
->inject('events') ->inject('queueForEvents')
->action(function (string $userId, string $secret, Request $request, Response $response, Database $dbForProject, Document $project, Locale $locale, Reader $geodb, Event $events) { ->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 */ /** @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'); throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Failed saving user to DB');
} }
$events $queueForEvents
->setParam('userId', $user->getId()) ->setParam('userId', $user->getId())
->setParam('sessionId', $session->getId()) ->setParam('sessionId', $session->getId())
; ;
@ -883,9 +883,9 @@ App::post('/v1/account/sessions/phone')
->inject('response') ->inject('response')
->inject('project') ->inject('project')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->inject('messaging') ->inject('queueForMessaging')
->action(function (string $userId, string $phone, Request $request, Response $response, Document $project, Database $dbForProject, Event $events, EventPhone $messaging) { ->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'))) { if (empty(App::getEnv('_APP_SMS_PROVIDER'))) {
throw new Exception(Exception::GENERAL_PHONE_DISABLED, 'Phone provider not configured'); 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()); $dbForProject->deleteCachedDocument('users', $user->getId());
$messaging $queueForMessaging
->setRecipient($phone) ->setRecipient($phone)
->setMessage($secret) ->setMessage($secret)
->trigger(); ->trigger();
$events->setPayload( $queueForEvents->setPayload(
$response->output( $response->output(
$token->setAttribute('secret', $secret), $token->setAttribute('secret', $secret),
Response::MODEL_TOKEN Response::MODEL_TOKEN
@ -1004,8 +1004,8 @@ App::put('/v1/account/sessions/phone')
->inject('project') ->inject('project')
->inject('locale') ->inject('locale')
->inject('geodb') ->inject('geodb')
->inject('events') ->inject('queueForEvents')
->action(function (string $userId, string $secret, Request $request, Response $response, Database $dbForProject, Document $project, Locale $locale, Reader $geodb, Event $events) { ->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)); $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'); throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Failed saving user to DB');
} }
$events $queueForEvents
->setParam('userId', $user->getId()) ->setParam('userId', $user->getId())
->setParam('sessionId', $session->getId()) ->setParam('sessionId', $session->getId())
; ;
@ -1122,8 +1122,8 @@ App::post('/v1/account/sessions/anonymous')
->inject('project') ->inject('project')
->inject('dbForProject') ->inject('dbForProject')
->inject('geodb') ->inject('geodb')
->inject('events') ->inject('queueForEvents')
->action(function (Request $request, Response $response, Locale $locale, Document $user, Document $project, Database $dbForProject, Reader $geodb, Event $events) { ->action(function (Request $request, Response $response, Locale $locale, Document $user, Document $project, Database $dbForProject, Reader $geodb, Event $queueForEvents) {
$protocol = $request->getProtocol(); $protocol = $request->getProtocol();
@ -1203,7 +1203,7 @@ App::post('/v1/account/sessions/anonymous')
$dbForProject->deleteCachedDocument('users', $user->getId()); $dbForProject->deleteCachedDocument('users', $user->getId());
$events $queueForEvents
->setParam('userId', $user->getId()) ->setParam('userId', $user->getId())
->setParam('sessionId', $session->getId()) ->setParam('sessionId', $session->getId())
; ;
@ -1475,14 +1475,14 @@ App::patch('/v1/account/name')
->inject('response') ->inject('response')
->inject('user') ->inject('user')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $name, Response $response, Document $user, Database $dbForProject, Event $events) { ->action(function (string $name, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) {
$user = $dbForProject->updateDocument('users', $user->getId(), $user $user = $dbForProject->updateDocument('users', $user->getId(), $user
->setAttribute('name', $name) ->setAttribute('name', $name)
->setAttribute('search', implode(' ', [$user->getId(), $name, $user->getAttribute('email', ''), $user->getAttribute('phone', '')]))); ->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); $response->dynamic($user, Response::MODEL_ACCOUNT);
}); });
@ -1508,8 +1508,8 @@ App::patch('/v1/account/password')
->inject('response') ->inject('response')
->inject('user') ->inject('user')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $password, string $oldPassword, Response $response, Document $user, Database $dbForProject, Event $events) { ->action(function (string $password, string $oldPassword, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) {
// Check old password only if its an existing user. // 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 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('hashOptions', Auth::DEFAULT_ALGO_OPTIONS)
->setAttribute('passwordUpdate', DateTime::now())); ->setAttribute('passwordUpdate', DateTime::now()));
$events->setParam('userId', $user->getId()); $queueForEvents->setParam('userId', $user->getId());
$response->dynamic($user, Response::MODEL_ACCOUNT); $response->dynamic($user, Response::MODEL_ACCOUNT);
}); });
@ -1547,8 +1547,8 @@ App::patch('/v1/account/email')
->inject('response') ->inject('response')
->inject('user') ->inject('user')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $email, string $password, Response $response, Document $user, Database $dbForProject, Event $events) { ->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 $isAnonymousUser = Auth::isAnonymousUser($user); // Check if request is from an anonymous account for converting
if ( if (
@ -1574,7 +1574,7 @@ App::patch('/v1/account/email')
throw new Exception(Exception::USER_EMAIL_ALREADY_EXISTS); throw new Exception(Exception::USER_EMAIL_ALREADY_EXISTS);
} }
$events->setParam('userId', $user->getId()); $queueForEvents->setParam('userId', $user->getId());
$response->dynamic($user, Response::MODEL_ACCOUNT); $response->dynamic($user, Response::MODEL_ACCOUNT);
}); });
@ -1599,8 +1599,8 @@ App::patch('/v1/account/phone')
->inject('response') ->inject('response')
->inject('user') ->inject('user')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $phone, string $password, Response $response, Document $user, Database $dbForProject, Event $events) { ->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 $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); throw new Exception(Exception::USER_PHONE_ALREADY_EXISTS);
} }
$events->setParam('userId', $user->getId()); $queueForEvents->setParam('userId', $user->getId());
$response->dynamic($user, Response::MODEL_ACCOUNT); $response->dynamic($user, Response::MODEL_ACCOUNT);
}); });
@ -1646,12 +1646,12 @@ App::patch('/v1/account/prefs')
->inject('response') ->inject('response')
->inject('user') ->inject('user')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (array $prefs, Response $response, Document $user, Database $dbForProject, Event $events) { ->action(function (array $prefs, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) {
$user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('prefs', $prefs)); $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); $response->dynamic($user, Response::MODEL_ACCOUNT);
}); });
@ -1675,12 +1675,12 @@ App::patch('/v1/account/status')
->inject('response') ->inject('response')
->inject('user') ->inject('user')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (Request $request, Response $response, Document $user, Database $dbForProject, Event $events) { ->action(function (Request $request, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) {
$user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('status', false)); $user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('status', false));
$events $queueForEvents
->setParam('userId', $user->getId()) ->setParam('userId', $user->getId())
->setPayload($response->output($user, Response::MODEL_ACCOUNT)); ->setPayload($response->output($user, Response::MODEL_ACCOUNT));
@ -1712,9 +1712,9 @@ App::delete('/v1/account/sessions/:sessionId')
->inject('user') ->inject('user')
->inject('dbForProject') ->inject('dbForProject')
->inject('locale') ->inject('locale')
->inject('events') ->inject('queueForEvents')
->inject('project') ->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(); $protocol = $request->getProtocol();
$authDuration = $project->getAttribute('auths', [])['duration'] ?? Auth::TOKEN_EXPIRATION_LOGIN_LONG; $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()); $dbForProject->deleteCachedDocument('users', $user->getId());
$events $queueForEvents
->setParam('userId', $user->getId()) ->setParam('userId', $user->getId())
->setParam('sessionId', $session->getId()) ->setParam('sessionId', $session->getId())
->setPayload($response->output($session, Response::MODEL_SESSION)) ->setPayload($response->output($session, Response::MODEL_SESSION))
@ -1788,8 +1788,8 @@ App::patch('/v1/account/sessions/:sessionId')
->inject('dbForProject') ->inject('dbForProject')
->inject('project') ->inject('project')
->inject('locale') ->inject('locale')
->inject('events') ->inject('queueForEvents')
->action(function (?string $sessionId, Request $request, Response $response, Document $user, Database $dbForProject, Document $project, Locale $locale, Event $events) { ->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; $authDuration = $project->getAttribute('auths', [])['duration'] ?? Auth::TOKEN_EXPIRATION_LOGIN_LONG;
$sessionId = ($sessionId === 'current') $sessionId = ($sessionId === 'current')
? Auth::sessionVerify($user->getAttribute('sessions'), Auth::$secret, $authDuration) ? 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)); $session->setAttribute('expire', DateTime::addSeconds(new \DateTime($session->getCreatedAt()), $authDuration));
$events $queueForEvents
->setParam('userId', $user->getId()) ->setParam('userId', $user->getId())
->setParam('sessionId', $session->getId()) ->setParam('sessionId', $session->getId())
->setPayload($response->output($session, Response::MODEL_SESSION)) ->setPayload($response->output($session, Response::MODEL_SESSION))
@ -1870,8 +1870,8 @@ App::delete('/v1/account/sessions')
->inject('user') ->inject('user')
->inject('dbForProject') ->inject('dbForProject')
->inject('locale') ->inject('locale')
->inject('events') ->inject('queueForEvents')
->action(function (Request $request, Response $response, Document $user, Database $dbForProject, Locale $locale, Event $events) { ->action(function (Request $request, Response $response, Document $user, Database $dbForProject, Locale $locale, Event $queueForEvents) {
$protocol = $request->getProtocol(); $protocol = $request->getProtocol();
$sessions = $user->getAttribute('sessions', []); $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')); ->addCookie(Auth::$cookieName, '', \time() - 3600, '/', Config::getParam('cookieDomain'), ('https' == $protocol), true, Config::getParam('cookieSamesite'));
// Use current session for events. // 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()); $dbForProject->deleteCachedDocument('users', $user->getId());
$events $queueForEvents
->setParam('userId', $user->getId()) ->setParam('userId', $user->getId())
->setParam('sessionId', $session->getId()); ->setParam('sessionId', $session->getId());
@ -1936,9 +1936,9 @@ App::post('/v1/account/recovery')
->inject('dbForProject') ->inject('dbForProject')
->inject('project') ->inject('project')
->inject('locale') ->inject('locale')
->inject('mails') ->inject('queueForMail')
->inject('events') ->inject('queueForEvents')
->action(function (string $email, string $url, Request $request, Response $response, Database $dbForProject, Document $project, Locale $locale, Mail $mails, Event $events) { ->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'))) { if (empty(App::getEnv('_APP_SMTP_HOST'))) {
throw new Exception(Exception::GENERAL_SMTP_DISABLED, 'SMTP Disabled'); 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['query'] = Template::mergeQuery(((isset($url['query'])) ? $url['query'] : ''), ['userId' => $profile->getId(), 'secret' => $secret, 'expire' => $expire]);
$url = Template::unParseURL($url); $url = Template::unParseURL($url);
$mails $queueForMail
->setType(MAIL_TYPE_RECOVERY) ->setType(MAIL_TYPE_RECOVERY)
->setRecipient($profile->getAttribute('email', '')) ->setRecipient($profile->getAttribute('email', ''))
->setUrl($url) ->setUrl($url)
@ -2000,7 +2000,7 @@ App::post('/v1/account/recovery')
->trigger(); ->trigger();
; ;
$events $queueForEvents
->setParam('userId', $profile->getId()) ->setParam('userId', $profile->getId())
->setParam('tokenId', $recovery->getId()) ->setParam('tokenId', $recovery->getId())
->setUser($profile) ->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.') ->param('passwordAgain', '', new Password(), 'Repeat new user password. Must be at least 8 chars.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $userId, string $secret, string $password, string $passwordAgain, Response $response, Database $dbForProject, Event $events) { ->action(function (string $userId, string $secret, string $password, string $passwordAgain, Response $response, Database $dbForProject, Event $queueForEvents) {
if ($password !== $passwordAgain) { if ($password !== $passwordAgain) {
throw new Exception(Exception::USER_PASSWORD_MISMATCH); throw new Exception(Exception::USER_PASSWORD_MISMATCH);
} }
@ -2079,7 +2079,7 @@ App::put('/v1/account/recovery')
$dbForProject->deleteDocument('tokens', $recovery); $dbForProject->deleteDocument('tokens', $recovery);
$dbForProject->deleteCachedDocument('users', $profile->getId()); $dbForProject->deleteCachedDocument('users', $profile->getId());
$events $queueForEvents
->setParam('userId', $profile->getId()) ->setParam('userId', $profile->getId())
->setParam('tokenId', $recoveryDocument->getId()) ->setParam('tokenId', $recoveryDocument->getId())
; ;
@ -2111,9 +2111,9 @@ App::post('/v1/account/verification')
->inject('user') ->inject('user')
->inject('dbForProject') ->inject('dbForProject')
->inject('locale') ->inject('locale')
->inject('events') ->inject('queueForEvents')
->inject('mails') ->inject('queueForMail')
->action(function (string $url, Request $request, Response $response, Document $project, Document $user, Database $dbForProject, Locale $locale, Event $events, Mail $mails) { ->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'))) { if (empty(App::getEnv('_APP_SMTP_HOST'))) {
throw new Exception(Exception::GENERAL_SMTP_DISABLED, 'SMTP Disabled'); 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['query'] = Template::mergeQuery(((isset($url['query'])) ? $url['query'] : ''), ['userId' => $user->getId(), 'secret' => $verificationSecret, 'expire' => $expire]);
$url = Template::unParseURL($url); $url = Template::unParseURL($url);
$mails $queueForMail
->setType(MAIL_TYPE_VERIFICATION) ->setType(MAIL_TYPE_VERIFICATION)
->setRecipient($user->getAttribute('email')) ->setRecipient($user->getAttribute('email'))
->setUrl($url) ->setUrl($url)
@ -2160,7 +2160,7 @@ App::post('/v1/account/verification')
->trigger() ->trigger()
; ;
$events $queueForEvents
->setParam('userId', $user->getId()) ->setParam('userId', $user->getId())
->setParam('tokenId', $verification->getId()) ->setParam('tokenId', $verification->getId())
->setPayload($response->output( ->setPayload($response->output(
@ -2199,8 +2199,8 @@ App::put('/v1/account/verification')
->inject('response') ->inject('response')
->inject('user') ->inject('user')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $userId, string $secret, Response $response, Document $user, Database $dbForProject, Event $events) { ->action(function (string $userId, string $secret, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) {
$profile = Authorization::skip(fn() => $dbForProject->getDocument('users', $userId)); $profile = Authorization::skip(fn() => $dbForProject->getDocument('users', $userId));
@ -2228,7 +2228,7 @@ App::put('/v1/account/verification')
$dbForProject->deleteDocument('tokens', $verification); $dbForProject->deleteDocument('tokens', $verification);
$dbForProject->deleteCachedDocument('users', $profile->getId()); $dbForProject->deleteCachedDocument('users', $profile->getId());
$events $queueForEvents
->setParam('userId', $user->getId()) ->setParam('userId', $user->getId())
->setParam('tokenId', $verificationDocument->getId()) ->setParam('tokenId', $verificationDocument->getId())
; ;
@ -2257,9 +2257,9 @@ App::post('/v1/account/verification/phone')
->inject('response') ->inject('response')
->inject('user') ->inject('user')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->inject('messaging') ->inject('queueForMessaging')
->action(function (Request $request, Response $response, Document $user, Database $dbForProject, Event $events, EventPhone $messaging) { ->action(function (Request $request, Response $response, Document $user, Database $dbForProject, Event $queueForEvents, EventPhone $queueForMessaging) {
if (empty(App::getEnv('_APP_SMS_PROVIDER'))) { if (empty(App::getEnv('_APP_SMS_PROVIDER'))) {
throw new Exception(Exception::GENERAL_PHONE_DISABLED); throw new Exception(Exception::GENERAL_PHONE_DISABLED);
@ -2298,13 +2298,13 @@ App::post('/v1/account/verification/phone')
$dbForProject->deleteCachedDocument('users', $user->getId()); $dbForProject->deleteCachedDocument('users', $user->getId());
$messaging $queueForMessaging
->setRecipient($user->getAttribute('phone')) ->setRecipient($user->getAttribute('phone'))
->setMessage($secret) ->setMessage($secret)
->trigger() ->trigger()
; ;
$events $queueForEvents
->setParam('userId', $user->getId()) ->setParam('userId', $user->getId())
->setParam('tokenId', $verification->getId()) ->setParam('tokenId', $verification->getId())
->setPayload($response->output( ->setPayload($response->output(
@ -2343,8 +2343,8 @@ App::put('/v1/account/verification/phone')
->inject('response') ->inject('response')
->inject('user') ->inject('user')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $userId, string $secret, Response $response, Document $user, Database $dbForProject, Event $events) { ->action(function (string $userId, string $secret, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) {
$profile = Authorization::skip(fn() => $dbForProject->getDocument('users', $userId)); $profile = Authorization::skip(fn() => $dbForProject->getDocument('users', $userId));
@ -2370,7 +2370,7 @@ App::put('/v1/account/verification/phone')
$dbForProject->deleteDocument('tokens', $verification); $dbForProject->deleteDocument('tokens', $verification);
$dbForProject->deleteCachedDocument('users', $profile->getId()); $dbForProject->deleteCachedDocument('users', $profile->getId());
$events $queueForEvents
->setParam('userId', $user->getId()) ->setParam('userId', $user->getId())
->setParam('tokenId', $verificationDocument->getId()) ->setParam('tokenId', $verificationDocument->getId())
; ;

View file

@ -55,7 +55,7 @@ use MaxMind\Db\Reader;
* @return Document Newly created attribute document * @return Document Newly created attribute document
* @throws Exception * @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'); $key = $attribute->getAttribute('key');
$type = $attribute->getAttribute('type', ''); $type = $attribute->getAttribute('type', '');
@ -134,7 +134,7 @@ function createAttribute(string $databaseId, string $collectionId, Document $att
->setDocument($attribute) ->setDocument($attribute)
; ;
$events $queueForEvents
->setContext('collection', $collection) ->setContext('collection', $collection)
->setContext('database', $db) ->setContext('database', $db)
->setParam('databaseId', $databaseId) ->setParam('databaseId', $databaseId)
@ -166,8 +166,8 @@ App::post('/v1/databases')
->param('name', '', new Text(128), 'Collection name. Max length: 128 chars.') ->param('name', '', new Text(128), 'Collection name. Max length: 128 chars.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $databaseId, string $name, Response $response, Database $dbForProject, Event $events) { ->action(function (string $databaseId, string $name, Response $response, Database $dbForProject, Event $queueForEvents) {
$databaseId = $databaseId == 'unique()' ? ID::unique() : $databaseId; $databaseId = $databaseId == 'unique()' ? ID::unique() : $databaseId;
@ -215,7 +215,7 @@ App::post('/v1/databases')
throw new Exception(Exception::DATABASE_ALREADY_EXISTS); throw new Exception(Exception::DATABASE_ALREADY_EXISTS);
} }
$events->setParam('databaseId', $database->getId()); $queueForEvents->setParam('databaseId', $database->getId());
$response $response
->setStatusCode(Response::STATUS_CODE_CREATED) ->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.') ->param('name', null, new Text(128), 'Collection name. Max length: 128 chars.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $databaseId, string $name, Response $response, Database $dbForProject, Event $events) { ->action(function (string $databaseId, string $name, Response $response, Database $dbForProject, Event $queueForEvents) {
$database = $dbForProject->getDocument('databases', $databaseId); $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()); 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); $response->dynamic($database, Response::MODEL_DATABASE);
}); });
@ -441,9 +441,9 @@ App::delete('/v1/databases/:databaseId')
->param('databaseId', '', new UID(), 'Database ID.') ->param('databaseId', '', new UID(), 'Database ID.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->inject('deletes') ->inject('queueForDeletes')
->action(function (string $databaseId, Response $response, Database $dbForProject, Event $events, Delete $deletes) { ->action(function (string $databaseId, Response $response, Database $dbForProject, Event $queueForEvents, Delete $queueForDeletes) {
$database = $dbForProject->getDocument('databases', $databaseId); $database = $dbForProject->getDocument('databases', $databaseId);
@ -457,12 +457,12 @@ App::delete('/v1/databases/:databaseId')
$dbForProject->deleteCachedCollection('databases' . $database->getInternalId()); $dbForProject->deleteCachedCollection('databases' . $database->getInternalId());
$deletes $queueForDeletes
->setType(DELETE_TYPE_DOCUMENT) ->setType(DELETE_TYPE_DOCUMENT)
->setDocument($database) ->setDocument($database)
; ;
$events $queueForEvents
->setParam('databaseId', $database->getId()) ->setParam('databaseId', $database->getId())
->setPayload($response->output($database, Response::MODEL_DATABASE)) ->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) ->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('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $databaseId, string $collectionId, string $name, ?array $permissions, bool $documentSecurity, Response $response, Database $dbForProject, Event $events) { ->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)); $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); throw new Exception(Exception::COLLECTION_LIMIT_EXCEEDED);
} }
$events $queueForEvents
->setContext('database', $database) ->setContext('database', $database)
->setParam('databaseId', $databaseId) ->setParam('databaseId', $databaseId)
->setParam('collectionId', $collection->getId()); ->setParam('collectionId', $collection->getId());
@ -750,8 +750,8 @@ App::put('/v1/databases/:databaseId/collections/:collectionId')
->param('enabled', true, new Boolean(), 'Is collection enabled?', true) ->param('enabled', true, new Boolean(), 'Is collection enabled?', true)
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $databaseId, string $collectionId, string $name, ?array $permissions, bool $documentSecurity, bool $enabled, Response $response, Database $dbForProject, Event $events) { ->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)); $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()); throw new Exception(Exception::DOCUMENT_INVALID_STRUCTURE, 'Bad structure. ' . $exception->getMessage());
} }
$events $queueForEvents
->setContext('database', $database) ->setContext('database', $database)
->setParam('databaseId', $databaseId) ->setParam('databaseId', $databaseId)
->setParam('collectionId', $collection->getId()); ->setParam('collectionId', $collection->getId());
@ -813,9 +813,9 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId')
->param('collectionId', '', new UID(), 'Collection ID.') ->param('collectionId', '', new UID(), 'Collection ID.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->inject('deletes') ->inject('queueForDeletes')
->action(function (string $databaseId, string $collectionId, Response $response, Database $dbForProject, Event $events, Delete $deletes) { ->action(function (string $databaseId, string $collectionId, Response $response, Database $dbForProject, Event $queueForEvents, Delete $queueForDeletes) {
$database = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId)); $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()); $dbForProject->deleteCachedCollection('database_' . $database->getInternalId() . '_collection_' . $collection->getInternalId());
$deletes $queueForDeletes
->setType(DELETE_TYPE_DOCUMENT) ->setType(DELETE_TYPE_DOCUMENT)
->setDocument($collection) ->setDocument($collection)
; ;
$events $queueForEvents
->setContext('database', $database) ->setContext('database', $database)
->setParam('databaseId', $databaseId) ->setParam('databaseId', $databaseId)
->setParam('collectionId', $collection->getId()) ->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) ->param('array', false, new Boolean(), 'Is attribute an array?', true)
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('database') ->inject('queueForDatabase')
->inject('events') ->inject('queueForEvents')
->action(function (string $databaseId, string $collectionId, string $key, ?int $size, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $database, Event $events) { ->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 // Ensure attribute default is within required size
$validator = new Text($size); $validator = new Text($size);
@ -893,7 +893,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/string
'required' => $required, 'required' => $required,
'default' => $default, 'default' => $default,
'array' => $array, 'array' => $array,
]), $response, $dbForProject, $database, $events); ]), $response, $dbForProject, $queueForDatabase, $queueForEvents);
$response $response
->setStatusCode(Response::STATUS_CODE_ACCEPTED) ->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) ->param('array', false, new Boolean(), 'Is attribute an array?', true)
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('database') ->inject('queueForDatabase')
->inject('events') ->inject('queueForEvents')
->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $database, Event $events) { ->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([ $attribute = createAttribute($databaseId, $collectionId, new Document([
'key' => $key, 'key' => $key,
@ -937,7 +937,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/email'
'default' => $default, 'default' => $default,
'array' => $array, 'array' => $array,
'format' => APP_DATABASE_ATTRIBUTE_EMAIL, 'format' => APP_DATABASE_ATTRIBUTE_EMAIL,
]), $response, $dbForProject, $database, $events); ]), $response, $dbForProject, $queueForDatabase, $queueForEvents);
$response $response
->setStatusCode(Response::STATUS_CODE_ACCEPTED) ->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) ->param('array', false, new Boolean(), 'Is attribute an array?', true)
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('database') ->inject('queueForDatabase')
->inject('events') ->inject('queueForEvents')
->action(function (string $databaseId, string $collectionId, string $key, array $elements, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $database, Event $events) { ->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 // use length of longest string as attribute size
$size = 0; $size = 0;
@ -997,7 +997,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/enum')
'array' => $array, 'array' => $array,
'format' => APP_DATABASE_ATTRIBUTE_ENUM, 'format' => APP_DATABASE_ATTRIBUTE_ENUM,
'formatOptions' => ['elements' => $elements], 'formatOptions' => ['elements' => $elements],
]), $response, $dbForProject, $database, $events); ]), $response, $dbForProject, $queueForDatabase, $queueForEvents);
$response $response
->setStatusCode(Response::STATUS_CODE_ACCEPTED) ->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) ->param('array', false, new Boolean(), 'Is attribute an array?', true)
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('database') ->inject('queueForDatabase')
->inject('events') ->inject('queueForEvents')
->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $database, Event $events) { ->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([ $attribute = createAttribute($databaseId, $collectionId, new Document([
'key' => $key, 'key' => $key,
@ -1041,7 +1041,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/ip')
'default' => $default, 'default' => $default,
'array' => $array, 'array' => $array,
'format' => APP_DATABASE_ATTRIBUTE_IP, 'format' => APP_DATABASE_ATTRIBUTE_IP,
]), $response, $dbForProject, $database, $events); ]), $response, $dbForProject, $queueForDatabase, $queueForEvents);
$response $response
->setStatusCode(Response::STATUS_CODE_ACCEPTED) ->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) ->param('array', false, new Boolean(), 'Is attribute an array?', true)
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('database') ->inject('queueForDatabase')
->inject('events') ->inject('queueForEvents')
->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $database, Event $events) { ->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([ $attribute = createAttribute($databaseId, $collectionId, new Document([
'key' => $key, 'key' => $key,
@ -1085,7 +1085,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/url')
'default' => $default, 'default' => $default,
'array' => $array, 'array' => $array,
'format' => APP_DATABASE_ATTRIBUTE_URL, 'format' => APP_DATABASE_ATTRIBUTE_URL,
]), $response, $dbForProject, $database, $events); ]), $response, $dbForProject, $queueForDatabase, $queueForEvents);
$response $response
->setStatusCode(Response::STATUS_CODE_ACCEPTED) ->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) ->param('array', false, new Boolean(), 'Is attribute an array?', true)
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('database') ->inject('queueForDatabase')
->inject('events') ->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 $database, Event $events) { ->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 // Ensure attribute default is within range
$min = (is_null($min)) ? PHP_INT_MIN : \intval($min); $min = (is_null($min)) ? PHP_INT_MIN : \intval($min);
@ -1151,7 +1151,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/intege
'min' => $min, 'min' => $min,
'max' => $max, 'max' => $max,
], ],
]), $response, $dbForProject, $database, $events); ]), $response, $dbForProject, $queueForDatabase, $queueForEvents);
$formatOptions = $attribute->getAttribute('formatOptions', []); $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) ->param('array', false, new Boolean(), 'Is attribute an array?', true)
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('database') ->inject('queueForDatabase')
->inject('events') ->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 $database, Event $events) { ->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 // Ensure attribute default is within range
$min = (is_null($min)) ? -PHP_FLOAT_MAX : \floatval($min); $min = (is_null($min)) ? -PHP_FLOAT_MAX : \floatval($min);
@ -1227,7 +1227,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/float'
'min' => $min, 'min' => $min,
'max' => $max, 'max' => $max,
], ],
]), $response, $dbForProject, $database, $events); ]), $response, $dbForProject, $queueForDatabase, $queueForEvents);
$formatOptions = $attribute->getAttribute('formatOptions', []); $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) ->param('array', false, new Boolean(), 'Is attribute an array?', true)
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('database') ->inject('queueForDatabase')
->inject('events') ->inject('queueForEvents')
->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?bool $default, bool $array, Response $response, Database $dbForProject, EventDatabase $database, Event $events) { ->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([ $attribute = createAttribute($databaseId, $collectionId, new Document([
'key' => $key, 'key' => $key,
@ -1277,7 +1277,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/boolea
'required' => $required, 'required' => $required,
'default' => $default, 'default' => $default,
'array' => $array, 'array' => $array,
]), $response, $dbForProject, $database, $events); ]), $response, $dbForProject, $queueForDatabase, $queueForEvents);
$response $response
->setStatusCode(Response::STATUS_CODE_ACCEPTED) ->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) ->param('array', false, new Boolean(), 'Is attribute an array?', true)
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('database') ->inject('queueForDatabase')
->inject('events') ->inject('queueForEvents')
->action(function (string $databaseId, string $collectionId, string $key, ?bool $required, ?string $default, bool $array, Response $response, Database $dbForProject, EventDatabase $database, Event $events) { ->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([ $attribute = createAttribute($databaseId, $collectionId, new Document([
'key' => $key, 'key' => $key,
@ -1322,7 +1322,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/attributes/dateti
'default' => $default, 'default' => $default,
'array' => $array, 'array' => $array,
'filters' => ['datetime'] 'filters' => ['datetime']
]), $response, $dbForProject, $database, $events); ]), $response, $dbForProject, $queueForDatabase, $queueForEvents);
$response $response
->setStatusCode(Response::STATUS_CODE_ACCEPTED) ->setStatusCode(Response::STATUS_CODE_ACCEPTED)
@ -1461,9 +1461,9 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/attributes/:key
->param('key', '', new Key(), 'Attribute Key.') ->param('key', '', new Key(), 'Attribute Key.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('database') ->inject('queueForDatabase')
->inject('events') ->inject('queueForEvents')
->action(function (string $databaseId, string $collectionId, string $key, Response $response, Database $dbForProject, EventDatabase $database, Event $events) { ->action(function (string $databaseId, string $collectionId, string $key, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents) {
$db = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId)); $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->deleteCachedDocument('database_' . $db->getInternalId(), $collectionId);
$dbForProject->deleteCachedCollection('database_' . $db->getInternalId() . '_collection_' . $collection->getInternalId()); $dbForProject->deleteCachedCollection('database_' . $db->getInternalId() . '_collection_' . $collection->getInternalId());
$database $queueForDatabase
->setType(DATABASE_TYPE_DELETE_ATTRIBUTE) ->setType(DATABASE_TYPE_DELETE_ATTRIBUTE)
->setCollection($collection) ->setCollection($collection)
->setDatabase($db) ->setDatabase($db)
@ -1516,7 +1516,7 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/attributes/:key
default => Response::MODEL_ATTRIBUTE, default => Response::MODEL_ATTRIBUTE,
}; };
$events $queueForEvents
->setParam('databaseId', $databaseId) ->setParam('databaseId', $databaseId)
->setParam('collectionId', $collection->getId()) ->setParam('collectionId', $collection->getId())
->setParam('attributeId', $attribute->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) ->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('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('database') ->inject('queueForDatabase')
->inject('events') ->inject('queueForEvents')
->action(function (string $databaseId, string $collectionId, string $key, string $type, array $attributes, array $orders, Response $response, Database $dbForProject, EventDatabase $database, Event $events) { ->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)); $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); $dbForProject->deleteCachedDocument('database_' . $db->getInternalId(), $collectionId);
$database $queueForDatabase
->setType(DATABASE_TYPE_CREATE_INDEX) ->setType(DATABASE_TYPE_CREATE_INDEX)
->setDatabase($db) ->setDatabase($db)
->setCollection($collection) ->setCollection($collection)
->setDocument($index) ->setDocument($index)
; ;
$events $queueForEvents
->setParam('databaseId', $databaseId) ->setParam('databaseId', $databaseId)
->setParam('collectionId', $collection->getId()) ->setParam('collectionId', $collection->getId())
->setParam('indexId', $index->getId()) ->setParam('indexId', $index->getId())
@ -1786,9 +1786,9 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/indexes/:key')
->param('key', '', new Key(), 'Index Key.') ->param('key', '', new Key(), 'Index Key.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('database') ->inject('queueForDatabase')
->inject('events') ->inject('queueForEvents')
->action(function (string $databaseId, string $collectionId, string $key, Response $response, Database $dbForProject, EventDatabase $database, Event $events) { ->action(function (string $databaseId, string $collectionId, string $key, Response $response, Database $dbForProject, EventDatabase $queueForDatabase, Event $queueForEvents) {
$db = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId)); $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); $dbForProject->deleteCachedDocument('database_' . $db->getInternalId(), $collectionId);
$database $queueForDatabase
->setType(DATABASE_TYPE_DELETE_INDEX) ->setType(DATABASE_TYPE_DELETE_INDEX)
->setDatabase($db) ->setDatabase($db)
->setCollection($collection) ->setCollection($collection)
->setDocument($index) ->setDocument($index)
; ;
$events $queueForEvents
->setParam('databaseId', $databaseId) ->setParam('databaseId', $databaseId)
->setParam('collectionId', $collection->getId()) ->setParam('collectionId', $collection->getId())
->setParam('indexId', $index->getId()) ->setParam('indexId', $index->getId())
@ -1861,9 +1861,9 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/documents')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('user') ->inject('user')
->inject('events') ->inject('queueForEvents')
->inject('mode') ->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 $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); throw new Exception(Exception::DOCUMENT_ALREADY_EXISTS);
} }
$events $queueForEvents
->setParam('databaseId', $databaseId) ->setParam('databaseId', $databaseId)
->setParam('collectionId', $collection->getId()) ->setParam('collectionId', $collection->getId())
->setParam('documentId', $document->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) ->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('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->inject('mode') ->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 $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()); throw new Exception(Exception::DOCUMENT_INVALID_STRUCTURE, $exception->getMessage());
} }
$events $queueForEvents
->setParam('databaseId', $databaseId) ->setParam('databaseId', $databaseId)
->setParam('collectionId', $collection->getId()) ->setParam('collectionId', $collection->getId())
->setParam('documentId', $document->getId()) ->setParam('documentId', $document->getId())
@ -2379,10 +2379,10 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/documents/:docu
->param('documentId', '', new UID(), 'Document ID.') ->param('documentId', '', new UID(), 'Document ID.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->inject('deletes') ->inject('queueForDeletes')
->inject('mode') ->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)); $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('$collectionId', $collectionId);
$document->setAttribute('$databaseId', $databaseId); $document->setAttribute('$databaseId', $databaseId);
$deletes $queueForDeletes
->setType(DELETE_TYPE_AUDIT) ->setType(DELETE_TYPE_AUDIT)
->setDocument($document) ->setDocument($document)
; ;
$events $queueForEvents
->setParam('databaseId', $databaseId) ->setParam('databaseId', $databaseId)
->setParam('collectionId', $collection->getId()) ->setParam('collectionId', $collection->getId())
->setParam('documentId', $document->getId()) ->setParam('documentId', $document->getId())

View file

@ -70,9 +70,9 @@ App::post('/v1/functions')
->inject('dbForProject') ->inject('dbForProject')
->inject('project') ->inject('project')
->inject('user') ->inject('user')
->inject('events') ->inject('queueForEvents')
->inject('dbForConsole') ->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; $functionId = ($functionId == 'unique()') ? ID::unique() : $functionId;
$function = $dbForProject->createDocument('functions', new Document([ $function = $dbForProject->createDocument('functions', new Document([
@ -104,7 +104,7 @@ App::post('/v1/functions')
$function->setAttribute('scheduleId', $schedule->getId()); $function->setAttribute('scheduleId', $schedule->getId());
$dbForProject->updateDocument('functions', $function->getId(), $function); $dbForProject->updateDocument('functions', $function->getId(), $function);
$eventsInstance->setParam('functionId', $function->getId()); $queueForEvents->setParam('functionId', $function->getId());
$response $response
->setStatusCode(Response::STATUS_CODE_CREATED) ->setStatusCode(Response::STATUS_CODE_CREATED)
@ -446,9 +446,9 @@ App::put('/v1/functions/:functionId')
->inject('dbForProject') ->inject('dbForProject')
->inject('project') ->inject('project')
->inject('user') ->inject('user')
->inject('events') ->inject('queueForEvents')
->inject('dbForConsole') ->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); $function = $dbForProject->getDocument('functions', $functionId);
@ -485,7 +485,7 @@ App::put('/v1/functions/:functionId')
Authorization::skip(fn () => $dbForConsole->updateDocument('schedules', $schedule->getId(), $schedule)); 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); $response->dynamic($function, Response::MODEL_FUNCTION);
}); });
@ -509,9 +509,9 @@ App::patch('/v1/functions/:functionId/deployments/:deploymentId')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('project') ->inject('project')
->inject('events') ->inject('queueForEvents')
->inject('dbForConsole') ->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); $function = $dbForProject->getDocument('functions', $functionId);
$deployment = $dbForProject->getDocument('deployments', $deploymentId); $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)); Authorization::skip(fn () => $dbForConsole->updateDocument('schedules', $schedule->getId(), $schedule));
$events $queueForEvents
->setParam('functionId', $function->getId()) ->setParam('functionId', $function->getId())
->setParam('deploymentId', $deployment->getId()); ->setParam('deploymentId', $deployment->getId());
@ -572,11 +572,11 @@ App::delete('/v1/functions/:functionId')
->param('functionId', '', new UID(), 'Function ID.') ->param('functionId', '', new UID(), 'Function ID.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('deletes') ->inject('queueForDeletes')
->inject('events') ->inject('queueForEvents')
->inject('project') ->inject('project')
->inject('dbForConsole') ->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); $function = $dbForProject->getDocument('functions', $functionId);
@ -597,11 +597,11 @@ App::delete('/v1/functions/:functionId')
Authorization::skip(fn () => $dbForConsole->updateDocument('schedules', $schedule->getId(), $schedule)); Authorization::skip(fn () => $dbForConsole->updateDocument('schedules', $schedule->getId(), $schedule));
$deletes $queueForDeletes
->setType(DELETE_TYPE_DOCUMENT) ->setType(DELETE_TYPE_DOCUMENT)
->setDocument($function); ->setDocument($function);
$events->setParam('functionId', $function->getId()); $queueForEvents->setParam('functionId', $function->getId());
$response->noContent(); $response->noContent();
}); });
@ -629,13 +629,13 @@ App::post('/v1/functions/:functionId/deployments')
->inject('request') ->inject('request')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->inject('project') ->inject('project')
->inject('deviceFunctions') ->inject('deviceFunctions')
->inject('deviceLocal') ->inject('deviceLocal')
->inject('dbForConsole') ->inject('dbForConsole')
->inject('builds') ->inject('queueForBuilds')
->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) { ->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); $function = $dbForProject->getDocument('functions', $functionId);
@ -755,7 +755,7 @@ App::post('/v1/functions/:functionId/deployments')
} }
// Start the build // Start the build
$builds $queueForBuilds
->setType(BUILD_TYPE_DEPLOYMENT) ->setType(BUILD_TYPE_DEPLOYMENT)
->setResource($function) ->setResource($function)
->setDeployment($deployment) ->setDeployment($deployment)
@ -804,7 +804,7 @@ App::post('/v1/functions/:functionId/deployments')
$metadata = null; $metadata = null;
$events $queueForEvents
->setParam('functionId', $function->getId()) ->setParam('functionId', $function->getId())
->setParam('deploymentId', $deployment->getId()); ->setParam('deploymentId', $deployment->getId());
@ -939,10 +939,10 @@ App::delete('/v1/functions/:functionId/deployments/:deploymentId')
->param('deploymentId', '', new UID(), 'Deployment ID.') ->param('deploymentId', '', new UID(), 'Deployment ID.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('deletes') ->inject('queueForDeletes')
->inject('events') ->inject('queueForEvents')
->inject('deviceFunctions') ->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); $function = $dbForProject->getDocument('functions', $functionId);
if ($function->isEmpty()) { if ($function->isEmpty()) {
@ -970,11 +970,11 @@ App::delete('/v1/functions/:functionId/deployments/:deploymentId')
]))); ])));
} }
$events $queueForEvents
->setParam('functionId', $function->getId()) ->setParam('functionId', $function->getId())
->setParam('deploymentId', $deployment->getId()); ->setParam('deploymentId', $deployment->getId());
$deletes $queueForDeletes
->setType(DELETE_TYPE_DOCUMENT) ->setType(DELETE_TYPE_DOCUMENT)
->setDocument($deployment); ->setDocument($deployment);
@ -1000,9 +1000,9 @@ App::post('/v1/functions/:functionId/deployments/:deploymentId/builds/:buildId')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('project') ->inject('project')
->inject('events') ->inject('queueForEvents')
->inject('builds') ->inject('queueForBuilds')
->action(function (string $functionId, string $deploymentId, string $buildId, Response $response, Database $dbForProject, Document $project, Event $events, Build $builds) { ->action(function (string $functionId, string $deploymentId, string $buildId, Response $response, Database $dbForProject, Document $project, Event $queueForEvents, Build $queueForBuilds) {
$function = $dbForProject->getDocument('functions', $functionId); $function = $dbForProject->getDocument('functions', $functionId);
$deployment = $dbForProject->getDocument('deployments', $deploymentId); $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'); throw new Exception(Exception::BUILD_IN_PROGRESS, 'Build not failed');
} }
$events $queueForEvents
->setParam('functionId', $function->getId()) ->setParam('functionId', $function->getId())
->setParam('deploymentId', $deployment->getId()); ->setParam('deploymentId', $deployment->getId());
// Retry the build // Retry the build
$builds $queueForBuilds
->setType(BUILD_TYPE_RETRY) ->setType(BUILD_TYPE_RETRY)
->setResource($function) ->setResource($function)
->setDeployment($deployment) ->setDeployment($deployment)
@ -1062,11 +1062,11 @@ App::post('/v1/functions/:functionId/executions')
->inject('project') ->inject('project')
->inject('dbForProject') ->inject('dbForProject')
->inject('user') ->inject('user')
->inject('events') ->inject('queueForEvents')
->inject('usage') ->inject('usage')
->inject('mode') ->inject('mode')
->inject('queueForFunctions') ->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)); $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('functionId', $function->getId())
->setParam('executionId', $execution->getId()) ->setParam('executionId', $execution->getId())
->setContext('function', $function); ->setContext('function', $function);

View file

@ -349,11 +349,11 @@ App::get('/v1/health/queue/webhooks')
->label('sdk.response.code', Response::STATUS_CODE_OK) ->label('sdk.response.code', Response::STATUS_CODE_OK)
->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
->label('sdk.response.model', Response::MODEL_HEALTH_QUEUE) ->label('sdk.response.model', Response::MODEL_HEALTH_QUEUE)
->inject('events') ->inject('queueForEvents')
->inject('response') ->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']); }, ['response']);
App::get('/v1/health/queue/logs') 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.code', Response::STATUS_CODE_OK)
->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
->label('sdk.response.model', Response::MODEL_HEALTH_QUEUE) ->label('sdk.response.model', Response::MODEL_HEALTH_QUEUE)
->inject('audits') ->inject('queueForAudits')
->inject('response') ->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']); }, ['response']);
App::get('/v1/health/queue/certificates') 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.code', Response::STATUS_CODE_OK)
->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
->label('sdk.response.model', Response::MODEL_HEALTH_QUEUE) ->label('sdk.response.model', Response::MODEL_HEALTH_QUEUE)
->inject('certificates') ->inject('queueForCertificates')
->inject('response') ->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']); }, ['response']);
App::get('/v1/health/queue/functions') App::get('/v1/health/queue/functions')

View file

@ -483,8 +483,8 @@ App::delete('/v1/projects/:projectId')
->inject('response') ->inject('response')
->inject('user') ->inject('user')
->inject('dbForConsole') ->inject('dbForConsole')
->inject('deletes') ->inject('queueForDeletes')
->action(function (string $projectId, string $password, Response $response, Document $user, Database $dbForConsole, Delete $deletes) { ->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 if (!Auth::passwordVerify($password, $user->getAttribute('password'), $user->getAttribute('hash'), $user->getAttribute('hashOptions'))) { // Double check user password
throw new Exception(Exception::USER_INVALID_CREDENTIALS); throw new Exception(Exception::USER_INVALID_CREDENTIALS);
@ -496,7 +496,7 @@ App::delete('/v1/projects/:projectId')
throw new Exception(Exception::PROJECT_NOT_FOUND); throw new Exception(Exception::PROJECT_NOT_FOUND);
} }
$deletes $queueForDeletes
->setType(DELETE_TYPE_DOCUMENT) ->setType(DELETE_TYPE_DOCUMENT)
->setDocument($project) ->setDocument($project)
; ;
@ -1314,7 +1314,7 @@ App::patch('/v1/projects/:projectId/domains/:domainId/verification')
->param('domainId', '', new UID(), 'Domain unique ID.') ->param('domainId', '', new UID(), 'Domain unique ID.')
->inject('response') ->inject('response')
->inject('dbForConsole') ->inject('dbForConsole')
->inject('certificates') ->inject('queueForCertificates')
->action(function (string $projectId, string $domainId, Response $response, Database $dbForConsole, Certificate $queueForCertificates) { ->action(function (string $projectId, string $domainId, Response $response, Database $dbForConsole, Certificate $queueForCertificates) {
$project = $dbForConsole->getDocument('projects', $projectId); $project = $dbForConsole->getDocument('projects', $projectId);
@ -1373,8 +1373,8 @@ App::delete('/v1/projects/:projectId/domains/:domainId')
->param('domainId', '', new UID(), 'Domain unique ID.') ->param('domainId', '', new UID(), 'Domain unique ID.')
->inject('response') ->inject('response')
->inject('dbForConsole') ->inject('dbForConsole')
->inject('deletes') ->inject('queueForDeletes')
->action(function (string $projectId, string $domainId, Response $response, Database $dbForConsole, Delete $deletes) { ->action(function (string $projectId, string $domainId, Response $response, Database $dbForConsole, Delete $queueForDeletes) {
$project = $dbForConsole->getDocument('projects', $projectId); $project = $dbForConsole->getDocument('projects', $projectId);
@ -1395,7 +1395,7 @@ App::delete('/v1/projects/:projectId/domains/:domainId')
$dbForConsole->deleteCachedDocument('projects', $project->getId()); $dbForConsole->deleteCachedDocument('projects', $project->getId());
$deletes $queueForDeletes
->setType(DELETE_TYPE_CERTIFICATES) ->setType(DELETE_TYPE_CERTIFICATES)
->setDocument($domain); ->setDocument($domain);

View file

@ -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) ->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('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('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 $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 $queueForEvents) {
$bucketId = $bucketId === 'unique()' ? ID::unique() : $bucketId; $bucketId = $bucketId === 'unique()' ? ID::unique() : $bucketId;
@ -134,7 +134,7 @@ App::post('/v1/storage/buckets')
throw new Exception(Exception::STORAGE_BUCKET_ALREADY_EXISTS); throw new Exception(Exception::STORAGE_BUCKET_ALREADY_EXISTS);
} }
$events $queueForEvents
->setParam('bucketId', $bucket->getId()) ->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) ->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('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('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 $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 $queueForEvents) {
$bucket = $dbForProject->getDocument('buckets', $bucketId); $bucket = $dbForProject->getDocument('buckets', $bucketId);
if ($bucket->isEmpty()) { if ($bucket->isEmpty()) {
@ -276,7 +276,7 @@ App::put('/v1/storage/buckets/:bucketId')
->setAttribute('compression', $compression) ->setAttribute('compression', $compression)
->setAttribute('antivirus', $antivirus)); ->setAttribute('antivirus', $antivirus));
$events $queueForEvents
->setParam('bucketId', $bucket->getId()) ->setParam('bucketId', $bucket->getId())
; ;
@ -300,9 +300,9 @@ App::delete('/v1/storage/buckets/:bucketId')
->param('bucketId', '', new UID(), 'Bucket unique ID.') ->param('bucketId', '', new UID(), 'Bucket unique ID.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('deletes') ->inject('queueForDeletes')
->inject('events') ->inject('queueForEvents')
->action(function (string $bucketId, Response $response, Database $dbForProject, Delete $deletes, Event $events) { ->action(function (string $bucketId, Response $response, Database $dbForProject, Delete $queueForDeletes, Event $queueForEvents) {
$bucket = $dbForProject->getDocument('buckets', $bucketId); $bucket = $dbForProject->getDocument('buckets', $bucketId);
if ($bucket->isEmpty()) { 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'); throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Failed to remove bucket from DB');
} }
$deletes $queueForDeletes
->setType(DELETE_TYPE_DOCUMENT) ->setType(DELETE_TYPE_DOCUMENT)
->setDocument($bucket); ->setDocument($bucket);
$events $queueForEvents
->setParam('bucketId', $bucket->getId()) ->setParam('bucketId', $bucket->getId())
->setPayload($response->output($bucket, Response::MODEL_BUCKET)) ->setPayload($response->output($bucket, Response::MODEL_BUCKET))
; ;
@ -355,12 +355,12 @@ App::post('/v1/storage/buckets/:bucketId/files')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('user') ->inject('user')
->inject('events') ->inject('queueForEvents')
->inject('mode') ->inject('mode')
->inject('deviceFiles') ->inject('deviceFiles')
->inject('deviceLocal') ->inject('deviceLocal')
->inject('deletes') ->inject('queueForDeletes')
->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) { ->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)); $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('bucketId', $bucket->getId())
->setParam('fileId', $file->getId()) ->setParam('fileId', $file->getId())
->setContext('bucket', $bucket) ->setContext('bucket', $bucket)
; ;
$deletes $queueForDeletes
->setType(DELETE_TYPE_CACHE_BY_RESOURCE) ->setType(DELETE_TYPE_CACHE_BY_RESOURCE)
->setResource('file/' . $file->getId()) ->setResource('file/' . $file->getId())
; ;
@ -1262,8 +1262,8 @@ App::put('/v1/storage/buckets/:bucketId/files/:fileId')
->inject('dbForProject') ->inject('dbForProject')
->inject('user') ->inject('user')
->inject('mode') ->inject('mode')
->inject('events') ->inject('queueForEvents')
->action(function (string $bucketId, string $fileId, ?array $permissions, Response $response, Database $dbForProject, Document $user, string $mode, Event $events) { ->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)); $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)); $file = Authorization::skip(fn() => $dbForProject->updateDocument('bucket_' . $bucket->getInternalId(), $fileId, $file));
} }
$events $queueForEvents
->setParam('bucketId', $bucket->getId()) ->setParam('bucketId', $bucket->getId())
->setParam('fileId', $file->getId()) ->setParam('fileId', $file->getId())
->setContext('bucket', $bucket) ->setContext('bucket', $bucket)
@ -1361,11 +1361,11 @@ App::delete('/v1/storage/buckets/:bucketId/files/:fileId')
->param('fileId', '', new UID(), 'File ID.') ->param('fileId', '', new UID(), 'File ID.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->inject('mode') ->inject('mode')
->inject('deviceFiles') ->inject('deviceFiles')
->inject('deletes') ->inject('queueForDeletes')
->action(function (string $bucketId, string $fileId, Response $response, Database $dbForProject, Event $events, string $mode, Device $deviceFiles, Delete $deletes) { ->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)); $bucket = Authorization::skip(fn () => $dbForProject->getDocument('buckets', $bucketId));
if ($bucket->isEmpty() || (!$bucket->getAttribute('enabled') && $mode !== APP_MODE_ADMIN)) { if ($bucket->isEmpty() || (!$bucket->getAttribute('enabled') && $mode !== APP_MODE_ADMIN)) {
@ -1402,7 +1402,7 @@ App::delete('/v1/storage/buckets/:bucketId/files/:fileId')
} }
if ($deviceDeleted) { if ($deviceDeleted) {
$deletes $queueForDeletes
->setType(DELETE_TYPE_CACHE_BY_RESOURCE) ->setType(DELETE_TYPE_CACHE_BY_RESOURCE)
->setResource('file/' . $fileId) ->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'); throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Failed to delete file from device');
} }
$events $queueForEvents
->setParam('bucketId', $bucket->getId()) ->setParam('bucketId', $bucket->getId())
->setParam('fileId', $file->getId()) ->setParam('fileId', $file->getId())
->setContext('bucket', $bucket) ->setContext('bucket', $bucket)

View file

@ -57,8 +57,8 @@ App::post('/v1/teams')
->inject('response') ->inject('response')
->inject('user') ->inject('user')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $teamId, string $name, array $roles, Response $response, Document $user, Database $dbForProject, Event $events) { ->action(function (string $teamId, string $name, array $roles, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) {
$isPrivilegedUser = Auth::isPrivilegedUser(Authorization::getRoles()); $isPrivilegedUser = Auth::isPrivilegedUser(Authorization::getRoles());
$isAppUser = Auth::isAppUser(Authorization::getRoles()); $isAppUser = Auth::isAppUser(Authorization::getRoles());
@ -108,10 +108,10 @@ App::post('/v1/teams')
$dbForProject->deleteCachedDocument('users', $user->getId()); $dbForProject->deleteCachedDocument('users', $user->getId());
} }
$events->setParam('teamId', $team->getId()); $queueForEvents->setParam('teamId', $team->getId());
if (!empty($user->getId())) { if (!empty($user->getId())) {
$events->setParam('userId', $user->getId()); $queueForEvents->setParam('userId', $user->getId());
} }
$response $response
@ -211,8 +211,8 @@ App::put('/v1/teams/:teamId')
->param('name', null, new Text(128), 'New team name. Max length: 128 chars.') ->param('name', null, new Text(128), 'New team name. Max length: 128 chars.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $teamId, string $name, Response $response, Database $dbForProject, Event $events) { ->action(function (string $teamId, string $name, Response $response, Database $dbForProject, Event $queueForEvents) {
$team = $dbForProject->getDocument('teams', $teamId); $team = $dbForProject->getDocument('teams', $teamId);
@ -224,7 +224,7 @@ App::put('/v1/teams/:teamId')
->setAttribute('name', $name) ->setAttribute('name', $name)
->setAttribute('search', implode(' ', [$teamId, $name]))); ->setAttribute('search', implode(' ', [$teamId, $name])));
$events->setParam('teamId', $team->getId()); $queueForEvents->setParam('teamId', $team->getId());
$response->dynamic($team, Response::MODEL_TEAM); $response->dynamic($team, Response::MODEL_TEAM);
}); });
@ -245,9 +245,9 @@ App::delete('/v1/teams/:teamId')
->param('teamId', '', new UID(), 'Team ID.') ->param('teamId', '', new UID(), 'Team ID.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->inject('deletes') ->inject('queueForDeletes')
->action(function (string $teamId, Response $response, Database $dbForProject, Event $events, Delete $deletes) { ->action(function (string $teamId, Response $response, Database $dbForProject, Event $queueForEvents, Delete $queueForDeletes) {
$team = $dbForProject->getDocument('teams', $teamId); $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'); throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Failed to remove team from DB');
} }
$deletes $queueForDeletes
->setType(DELETE_TYPE_DOCUMENT) ->setType(DELETE_TYPE_DOCUMENT)
->setDocument($team); ->setDocument($team);
$events $queueForEvents
->setParam('teamId', $team->getId()) ->setParam('teamId', $team->getId())
->setPayload($response->output($team, Response::MODEL_TEAM)) ->setPayload($response->output($team, Response::MODEL_TEAM))
; ;
@ -310,9 +310,9 @@ App::post('/v1/teams/:teamId/memberships')
->inject('user') ->inject('user')
->inject('dbForProject') ->inject('dbForProject')
->inject('locale') ->inject('locale')
->inject('mails') ->inject('queueForMail')
->inject('events') ->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 $mails, Event $events) { ->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()); $isPrivilegedUser = Auth::isPrivilegedUser(Authorization::getRoles());
$isAppUser = Auth::isAppUser(Authorization::getRoles()); $isAppUser = Auth::isAppUser(Authorization::getRoles());
@ -431,7 +431,7 @@ App::post('/v1/teams/:teamId/memberships')
$url = Template::unParseURL($url); $url = Template::unParseURL($url);
if (!$isPrivilegedUser && !$isAppUser) { // No need of confirmation when in admin or app mode if (!$isPrivilegedUser && !$isAppUser) { // No need of confirmation when in admin or app mode
$mails $queueForMail
->setType(MAIL_TYPE_INVITATION) ->setType(MAIL_TYPE_INVITATION)
->setRecipient($email) ->setRecipient($email)
->setUrl($url) ->setUrl($url)
@ -443,7 +443,7 @@ App::post('/v1/teams/:teamId/memberships')
; ;
} }
$events $queueForEvents
->setParam('teamId', $team->getId()) ->setParam('teamId', $team->getId())
->setParam('membershipId', $membership->getId()) ->setParam('membershipId', $membership->getId())
; ;
@ -601,8 +601,8 @@ App::patch('/v1/teams/:teamId/memberships/:membershipId')
->inject('response') ->inject('response')
->inject('user') ->inject('user')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $teamId, string $membershipId, array $roles, Request $request, Response $response, Document $user, Database $dbForProject, Event $events) { ->action(function (string $teamId, string $membershipId, array $roles, Request $request, Response $response, Document $user, Database $dbForProject, Event $queueForEvents) {
$team = $dbForProject->getDocument('teams', $teamId); $team = $dbForProject->getDocument('teams', $teamId);
if ($team->isEmpty()) { if ($team->isEmpty()) {
@ -638,7 +638,7 @@ App::patch('/v1/teams/:teamId/memberships/:membershipId')
*/ */
$dbForProject->deleteCachedDocument('users', $profile->getId()); $dbForProject->deleteCachedDocument('users', $profile->getId());
$events $queueForEvents
->setParam('teamId', $team->getId()) ->setParam('teamId', $team->getId())
->setParam('membershipId', $membership->getId()); ->setParam('membershipId', $membership->getId());
@ -676,8 +676,8 @@ App::patch('/v1/teams/:teamId/memberships/:membershipId/status')
->inject('dbForProject') ->inject('dbForProject')
->inject('project') ->inject('project')
->inject('geodb') ->inject('geodb')
->inject('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 $events) { ->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(); $protocol = $request->getProtocol();
$membership = $dbForProject->getDocument('memberships', $membershipId); $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))); $team = Authorization::skip(fn() => $dbForProject->updateDocument('teams', $team->getId(), $team->setAttribute('total', $team->getAttribute('total', 0) + 1)));
$events $queueForEvents
->setParam('teamId', $team->getId()) ->setParam('teamId', $team->getId())
->setParam('membershipId', $membership->getId()) ->setParam('membershipId', $membership->getId())
; ;
@ -803,8 +803,8 @@ App::delete('/v1/teams/:teamId/memberships/:membershipId')
->param('membershipId', '', new UID(), 'Membership ID.') ->param('membershipId', '', new UID(), 'Membership ID.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $teamId, string $membershipId, Response $response, Database $dbForProject, Event $events) { ->action(function (string $teamId, string $membershipId, Response $response, Database $dbForProject, Event $queueForEvents) {
$membership = $dbForProject->getDocument('memberships', $membershipId); $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)); Authorization::skip(fn() => $dbForProject->updateDocument('teams', $team->getId(), $team));
} }
$events $queueForEvents
->setParam('teamId', $team->getId()) ->setParam('teamId', $team->getId())
->setParam('membershipId', $membership->getId()) ->setParam('membershipId', $membership->getId())
->setPayload($response->output($membership, Response::MODEL_MEMBERSHIP)) ->setPayload($response->output($membership, Response::MODEL_MEMBERSHIP))

View file

@ -36,7 +36,7 @@ use MaxMind\Db\Reader;
use Utopia\Validator\Integer; use Utopia\Validator\Integer;
/** TODO: Remove function when we move to using utopia/platform */ /** 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 $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); throw new Exception(Exception::USER_ALREADY_EXISTS);
} }
$events->setParam('userId', $user->getId()); $queueForEvents->setParam('userId', $user->getId());
return $user; return $user;
} }
@ -105,9 +105,9 @@ App::post('/v1/users')
->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true) ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true)
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $userId, ?string $email, ?string $phone, ?string $password, string $name, Response $response, Database $dbForProject, Event $events) { ->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, $events); $user = createUser('plaintext', '{}', $userId, $email, $password, $phone, $name, $dbForProject, $queueForEvents);
$response $response
->setStatusCode(Response::STATUS_CODE_CREATED) ->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) ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true)
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $userId, string $email, string $password, string $name, Response $response, Database $dbForProject, Event $events) { ->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, $events); $user = createUser('bcrypt', '{}', $userId, $email, $password, null, $name, $dbForProject, $queueForEvents);
$response $response
->setStatusCode(Response::STATUS_CODE_CREATED) ->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) ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true)
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $userId, string $email, string $password, string $name, Response $response, Database $dbForProject, Event $events) { ->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, $events); $user = createUser('md5', '{}', $userId, $email, $password, null, $name, $dbForProject, $queueForEvents);
$response $response
->setStatusCode(Response::STATUS_CODE_CREATED) ->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) ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true)
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $userId, string $email, string $password, string $name, Response $response, Database $dbForProject, Event $events) { ->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, $events); $user = createUser('argon2', '{}', $userId, $email, $password, null, $name, $dbForProject, $queueForEvents);
$response $response
->setStatusCode(Response::STATUS_CODE_CREATED) ->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) ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true)
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $userId, string $email, string $password, string $passwordVersion, string $name, Response $response, Database $dbForProject, Event $events) { ->action(function (string $userId, string $email, string $password, string $passwordVersion, string $name, Response $response, Database $dbForProject, Event $queueForEvents) {
$options = '{}'; $options = '{}';
if (!empty($passwordVersion)) { if (!empty($passwordVersion)) {
$options = '{"version":"' . $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 $response
->setStatusCode(Response::STATUS_CODE_CREATED) ->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) ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true)
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $userId, string $email, string $password, string $name, Response $response, Database $dbForProject, Event $events) { ->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, $events); $user = createUser('phpass', '{}', $userId, $email, $password, null, $name, $dbForProject, $queueForEvents);
$response $response
->setStatusCode(Response::STATUS_CODE_CREATED) ->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) ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true)
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('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 $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 $queueForEvents) {
$options = [ $options = [
'salt' => $passwordSalt, 'salt' => $passwordSalt,
'costCpu' => $passwordCpu, 'costCpu' => $passwordCpu,
@ -307,7 +307,7 @@ App::post('/v1/users/scrypt')
'length' => $passwordLength '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 $response
->setStatusCode(Response::STATUS_CODE_CREATED) ->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) ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true)
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $userId, string $email, string $password, string $passwordSalt, string $passwordSaltSeparator, string $passwordSignerKey, string $name, Response $response, Database $dbForProject, Event $events) { ->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, $events); $user = createUser('scryptMod', '{"signerKey":"' . $passwordSignerKey . '","saltSeparator":"' . $passwordSaltSeparator . '","salt":"' . $passwordSalt . '"}', $userId, $email, $password, null, $name, $dbForProject, $queueForEvents);
$response $response
->setStatusCode(Response::STATUS_CODE_CREATED) ->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`.') ->param('status', null, new Boolean(true), 'User Status. To activate the user pass `true` and to block the user pass `false`.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $userId, bool $status, Response $response, Database $dbForProject, Event $events) { ->action(function (string $userId, bool $status, Response $response, Database $dbForProject, Event $queueForEvents) {
$user = $dbForProject->getDocument('users', $userId); $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)); $user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('status', (bool) $status));
$events $queueForEvents
->setParam('userId', $user->getId()); ->setParam('userId', $user->getId());
$response->dynamic($user, Response::MODEL_USER); $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.') ->param('emailVerification', false, new Boolean(), 'User email verification status.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $userId, bool $emailVerification, Response $response, Database $dbForProject, Event $events) { ->action(function (string $userId, bool $emailVerification, Response $response, Database $dbForProject, Event $queueForEvents) {
$user = $dbForProject->getDocument('users', $userId); $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)); $user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('emailVerification', $emailVerification));
$events $queueForEvents
->setParam('userId', $user->getId()); ->setParam('userId', $user->getId());
$response->dynamic($user, Response::MODEL_USER); $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.') ->param('phoneVerification', false, new Boolean(), 'User phone verification status.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $userId, bool $phoneVerification, Response $response, Database $dbForProject, Event $events) { ->action(function (string $userId, bool $phoneVerification, Response $response, Database $dbForProject, Event $queueForEvents) {
$user = $dbForProject->getDocument('users', $userId); $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)); $user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('phoneVerification', $phoneVerification));
$events $queueForEvents
->setParam('userId', $user->getId()); ->setParam('userId', $user->getId());
$response->dynamic($user, Response::MODEL_USER); $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.') ->param('name', '', new Text(128), 'User name. Max length: 128 chars.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $userId, string $name, Response $response, Database $dbForProject, Event $events) { ->action(function (string $userId, string $name, Response $response, Database $dbForProject, Event $queueForEvents) {
$user = $dbForProject->getDocument('users', $userId); $user = $dbForProject->getDocument('users', $userId);
@ -757,7 +757,7 @@ App::patch('/v1/users/:userId/name')
$user = $dbForProject->updateDocument('users', $user->getId(), $user); $user = $dbForProject->updateDocument('users', $user->getId(), $user);
$events->setParam('userId', $user->getId()); $queueForEvents->setParam('userId', $user->getId());
$response->dynamic($user, Response::MODEL_USER); $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.') ->param('password', '', new Password(), 'New user password. Must be at least 8 chars.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $userId, string $password, Response $response, Database $dbForProject, Event $events) { ->action(function (string $userId, string $password, Response $response, Database $dbForProject, Event $queueForEvents) {
$user = $dbForProject->getDocument('users', $userId); $user = $dbForProject->getDocument('users', $userId);
@ -799,7 +799,7 @@ App::patch('/v1/users/:userId/password')
$user = $dbForProject->updateDocument('users', $user->getId(), $user); $user = $dbForProject->updateDocument('users', $user->getId(), $user);
$events->setParam('userId', $user->getId()); $queueForEvents->setParam('userId', $user->getId());
$response->dynamic($user, Response::MODEL_USER); $response->dynamic($user, Response::MODEL_USER);
}); });
@ -824,8 +824,8 @@ App::patch('/v1/users/:userId/email')
->param('email', '', new Email(), 'User email.') ->param('email', '', new Email(), 'User email.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $userId, string $email, Response $response, Database $dbForProject, Event $events) { ->action(function (string $userId, string $email, Response $response, Database $dbForProject, Event $queueForEvents) {
$user = $dbForProject->getDocument('users', $userId); $user = $dbForProject->getDocument('users', $userId);
@ -846,7 +846,7 @@ App::patch('/v1/users/:userId/email')
throw new Exception(Exception::USER_EMAIL_ALREADY_EXISTS); throw new Exception(Exception::USER_EMAIL_ALREADY_EXISTS);
} }
$events->setParam('userId', $user->getId()); $queueForEvents->setParam('userId', $user->getId());
$response->dynamic($user, Response::MODEL_USER); $response->dynamic($user, Response::MODEL_USER);
}); });
@ -870,8 +870,8 @@ App::patch('/v1/users/:userId/phone')
->param('number', '', new Phone(), 'User phone number.') ->param('number', '', new Phone(), 'User phone number.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $userId, string $number, Response $response, Database $dbForProject, Event $events) { ->action(function (string $userId, string $number, Response $response, Database $dbForProject, Event $queueForEvents) {
$user = $dbForProject->getDocument('users', $userId); $user = $dbForProject->getDocument('users', $userId);
@ -891,7 +891,7 @@ App::patch('/v1/users/:userId/phone')
throw new Exception(Exception::USER_PHONE_ALREADY_EXISTS); throw new Exception(Exception::USER_PHONE_ALREADY_EXISTS);
} }
$events->setParam('userId', $user->getId()); $queueForEvents->setParam('userId', $user->getId());
$response->dynamic($user, Response::MODEL_USER); $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.') ->param('emailVerification', false, new Boolean(), 'User email verification status.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $userId, bool $emailVerification, Response $response, Database $dbForProject, Event $events) { ->action(function (string $userId, bool $emailVerification, Response $response, Database $dbForProject, Event $queueForEvents) {
$user = $dbForProject->getDocument('users', $userId); $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)); $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); $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.') ->param('prefs', '', new Assoc(), 'Prefs key-value JSON object.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $userId, array $prefs, Response $response, Database $dbForProject, Event $events) { ->action(function (string $userId, array $prefs, Response $response, Database $dbForProject, Event $queueForEvents) {
$user = $dbForProject->getDocument('users', $userId); $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)); $user = $dbForProject->updateDocument('users', $user->getId(), $user->setAttribute('prefs', $prefs));
$events $queueForEvents
->setParam('userId', $user->getId()); ->setParam('userId', $user->getId());
$response->dynamic(new Document($prefs), Response::MODEL_PREFERENCES); $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.') ->param('sessionId', '', new UID(), 'Session ID.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $userId, string $sessionId, Response $response, Database $dbForProject, Event $events) { ->action(function (string $userId, string $sessionId, Response $response, Database $dbForProject, Event $queueForEvents) {
$user = $dbForProject->getDocument('users', $userId); $user = $dbForProject->getDocument('users', $userId);
@ -1002,7 +1002,7 @@ App::delete('/v1/users/:userId/sessions/:sessionId')
$dbForProject->deleteDocument('sessions', $session->getId()); $dbForProject->deleteDocument('sessions', $session->getId());
$dbForProject->deleteCachedDocument('users', $user->getId()); $dbForProject->deleteCachedDocument('users', $user->getId());
$events $queueForEvents
->setParam('userId', $user->getId()) ->setParam('userId', $user->getId())
->setParam('sessionId', $sessionId); ->setParam('sessionId', $sessionId);
@ -1026,8 +1026,8 @@ App::delete('/v1/users/:userId/sessions')
->param('userId', '', new UID(), 'User ID.') ->param('userId', '', new UID(), 'User ID.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->action(function (string $userId, Response $response, Database $dbForProject, Event $events) { ->action(function (string $userId, Response $response, Database $dbForProject, Event $queueForEvents) {
$user = $dbForProject->getDocument('users', $userId); $user = $dbForProject->getDocument('users', $userId);
@ -1045,7 +1045,7 @@ App::delete('/v1/users/:userId/sessions')
$dbForProject->deleteCachedDocument('users', $user->getId()); $dbForProject->deleteCachedDocument('users', $user->getId());
$events $queueForEvents
->setParam('userId', $user->getId()) ->setParam('userId', $user->getId())
->setPayload($response->output($user, Response::MODEL_USER)); ->setPayload($response->output($user, Response::MODEL_USER));
@ -1069,9 +1069,9 @@ App::delete('/v1/users/:userId')
->param('userId', '', new UID(), 'User ID.') ->param('userId', '', new UID(), 'User ID.')
->inject('response') ->inject('response')
->inject('dbForProject') ->inject('dbForProject')
->inject('events') ->inject('queueForEvents')
->inject('deletes') ->inject('queueForDeletes')
->action(function (string $userId, Response $response, Database $dbForProject, Event $events, Delete $deletes) { ->action(function (string $userId, Response $response, Database $dbForProject, Event $queueForEvents, Delete $queueForDeletes) {
$user = $dbForProject->getDocument('users', $userId); $user = $dbForProject->getDocument('users', $userId);
@ -1084,11 +1084,11 @@ App::delete('/v1/users/:userId')
$dbForProject->deleteDocument('users', $userId); $dbForProject->deleteDocument('users', $userId);
$deletes $queueForDeletes
->setType(DELETE_TYPE_DOCUMENT) ->setType(DELETE_TYPE_DOCUMENT)
->setDocument($clone); ->setDocument($clone);
$events $queueForEvents
->setParam('userId', $user->getId()) ->setParam('userId', $user->getId())
->setPayload($response->output($clone, Response::MODEL_USER)); ->setPayload($response->output($clone, Response::MODEL_USER));

View file

@ -51,7 +51,7 @@ App::init()
->inject('locale') ->inject('locale')
->inject('clients') ->inject('clients')
->inject('servers') ->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) { ->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 * Request format

View file

@ -97,15 +97,15 @@ App::init()
->inject('response') ->inject('response')
->inject('project') ->inject('project')
->inject('user') ->inject('user')
->inject('events') ->inject('queueForEvents')
->inject('audits') ->inject('queueForAudits')
->inject('mails') ->inject('queueForMail')
->inject('usage') ->inject('usage')
->inject('deletes') ->inject('queueForDeletes')
->inject('database') ->inject('queueForDatabase')
->inject('dbForProject') ->inject('dbForProject')
->inject('mode') ->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); $route = $utopia->match($request);
@ -174,16 +174,16 @@ App::init()
/* /*
* Background Jobs * Background Jobs
*/ */
$events $queueForEvents
->setEvent($route->getLabel('event', '')) ->setEvent($route->getLabel('event', ''))
->setProject($project) ->setProject($project)
->setUser($user); ->setUser($user);
$mails $queueForMail
->setProject($project) ->setProject($project)
->setUser($user); ->setUser($user);
$audits $queueForAudits
->setMode($mode) ->setMode($mode)
->setUserAgent($request->getUserAgent('')) ->setUserAgent($request->getUserAgent(''))
->setIP($request->getIP()) ->setIP($request->getIP())
@ -199,8 +199,8 @@ App::init()
->setParam('project.{scope}.network.inbound', 0) ->setParam('project.{scope}.network.inbound', 0)
->setParam('project.{scope}.network.outbound', 0); ->setParam('project.{scope}.network.outbound', 0);
$deletes->setProject($project); $queueForDeletes->setProject($project);
$database->setProject($project); $queueForDatabase->setProject($project);
$dbForProject->on(Database::EVENT_DOCUMENT_CREATE, fn ($event, Document $document) => $databaseListener($event, $document, $usage)); $dbForProject->on(Database::EVENT_DOCUMENT_CREATE, fn ($event, Document $document) => $databaseListener($event, $document, $usage));
@ -325,33 +325,33 @@ App::shutdown()
->inject('request') ->inject('request')
->inject('response') ->inject('response')
->inject('project') ->inject('project')
->inject('events') ->inject('queueForEvents')
->inject('audits') ->inject('queueForAudits')
->inject('usage') ->inject('usage')
->inject('deletes') ->inject('queueForDeletes')
->inject('database') ->inject('queueForDatabase')
->inject('mode') ->inject('mode')
->inject('dbForProject') ->inject('dbForProject')
->inject('queueForFunctions') ->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(); $responsePayload = $response->getPayload();
if (!empty($events->getEvent())) { if (!empty($queueForEvents->getEvent())) {
if (empty($events->getPayload())) { if (empty($queueForEvents->getPayload())) {
$events->setPayload($responsePayload); $queueForEvents->setPayload($responsePayload);
} }
/** /**
* Trigger functions. * Trigger functions.
*/ */
$queueForFunctions $queueForFunctions
->from($events) ->from($queueForEvents)
->trigger(); ->trigger();
/** /**
* Trigger webhooks. * Trigger webhooks.
*/ */
$events $queueForEvents
->setClass(Event::WEBHOOK_CLASS_NAME) ->setClass(Event::WEBHOOK_CLASS_NAME)
->setQueue(Event::WEBHOOK_QUEUE_NAME) ->setQueue(Event::WEBHOOK_QUEUE_NAME)
->trigger(); ->trigger();
@ -360,12 +360,12 @@ App::shutdown()
* Trigger realtime. * Trigger realtime.
*/ */
if ($project->getId() !== 'console') { if ($project->getId() !== 'console') {
$allEvents = Event::generateEvents($events->getEvent(), $events->getParams()); $allEvents = Event::generateEvents($queueForEvents->getEvent(), $queueForEvents->getParams());
$payload = new Document($events->getPayload()); $payload = new Document($queueForEvents->getPayload());
$db = $events->getContext('database'); $db = $queueForEvents->getContext('database');
$collection = $events->getContext('collection'); $collection = $queueForEvents->getContext('collection');
$bucket = $events->getContext('bucket'); $bucket = $queueForEvents->getContext('bucket');
$target = Realtime::fromPayload( $target = Realtime::fromPayload(
// Pass first, most verbose event pattern // Pass first, most verbose event pattern
@ -379,13 +379,13 @@ App::shutdown()
Realtime::send( Realtime::send(
projectId: $target['projectId'] ?? $project->getId(), projectId: $target['projectId'] ?? $project->getId(),
payload: $events->getPayload(), payload: $queueForEvents->getPayload(),
events: $allEvents, events: $allEvents,
channels: $target['channels'], channels: $target['channels'],
roles: $target['roles'], roles: $target['roles'],
options: [ options: [
'permissionsChanged' => $target['permissionsChanged'], 'permissionsChanged' => $target['permissionsChanged'],
'userId' => $events->getParam('userId') 'userId' => $queueForEvents->getParam('userId')
] ]
); );
} }
@ -393,7 +393,7 @@ App::shutdown()
$route = $utopia->match($request); $route = $utopia->match($request);
$requestParams = $route->getParamsValues(); $requestParams = $route->getParamsValues();
$user = $audits->getUser(); $user = $queueForAudits->getUser();
/** /**
* Audit labels * Audit labels
@ -402,7 +402,7 @@ App::shutdown()
if (!empty($pattern)) { if (!empty($pattern)) {
$resource = $parseLabel($pattern, $responsePayload, $requestParams, $user); $resource = $parseLabel($pattern, $responsePayload, $requestParams, $user);
if (!empty($resource) && $resource !== $pattern) { if (!empty($resource) && $resource !== $pattern) {
$audits->setResource($resource); $queueForAudits->setResource($resource);
} }
} }
@ -410,31 +410,31 @@ App::shutdown()
if (!empty($pattern)) { if (!empty($pattern)) {
$userId = $parseLabel($pattern, $responsePayload, $requestParams, $user); $userId = $parseLabel($pattern, $responsePayload, $requestParams, $user);
$user = $dbForProject->getDocument('users', $userId); $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 * audits.payload is switched to default true
* in order to auto audit payload for all endpoints * in order to auto audit payload for all endpoints
*/ */
$pattern = $route->getLabel('audits.payload', true); $pattern = $route->getLabel('audits.payload', true);
if (!empty($pattern)) { if (!empty($pattern)) {
$audits->setPayload($responsePayload); $queueForAudits->setPayload($responsePayload);
} }
foreach ($events->getParams() as $key => $value) { foreach ($queueForEvents->getParams() as $key => $value) {
$audits->setParam($key, $value); $queueForAudits->setParam($key, $value);
} }
$audits->trigger(); $queueForAudits->trigger();
} }
if (!empty($deletes->getType())) { if (!empty($queueForDeletes->getType())) {
$deletes->trigger(); $queueForDeletes->trigger();
} }
if (!empty($database->getType())) { if (!empty($queueForDatabase->getType())) {
$database->trigger(); $queueForDatabase->trigger();
} }
/** /**

View file

@ -853,34 +853,31 @@ App::setResource('locale', fn() => new Locale(App::getEnv('_APP_LOCALE', 'en')))
App::setResource('queue', function (Group $pools) { App::setResource('queue', function (Group $pools) {
return $pools->get('queue')->pop()->getResource(); return $pools->get('queue')->pop()->getResource();
}, ['pools']); }, ['pools']);
App::setResource('messaging', function (Connection $queue) { App::setResource('queueForMessaging', function (Connection $queue) {
return new Phone($queue); return new Phone($queue);
}, ['queue']); }, ['queue']);
App::setResource('mails', function (Connection $queue) { App::setResource('queueForMail', function (Connection $queue) {
return new Mail($queue); return new Mail($queue);
}, ['queue']); }, ['queue']);
App::setResource('builds', function (Connection $queue) { App::setResource('queueForBuilds', function (Connection $queue) {
return new Build($queue); return new Build($queue);
}, ['queue']); }, ['queue']);
App::setResource('database', function (Connection $queue) { App::setResource('queueForDatabase', function (Connection $queue) {
return new EventDatabase($queue); return new EventDatabase($queue);
}, ['queue']); }, ['queue']);
App::setResource('deletes', function (Connection $queue) { App::setResource('queueForDeletes', function (Connection $queue) {
return new Delete($queue); return new Delete($queue);
}, ['queue']); }, ['queue']);
App::setResource('events', function (Connection $queue) { App::setResource('queueForEvents', function (Connection $queue) {
return new Event('', '', $queue); return new Event('', '', $queue);
}, ['queue']); }, ['queue']);
App::setResource('audits', function (Connection $queue) { App::setResource('queueForAudits', function (Connection $queue) {
return new Audit($queue); return new Audit($queue);
}, ['queue']); }, ['queue']);
App::setResource('events', function (Connection $queue) {
return new Event('', '', $queue);
}, ['queue']);
App::setResource('queueForFunctions', function (Connection $queue) { App::setResource('queueForFunctions', function (Connection $queue) {
return new Func($queue); return new Func($queue);
}, ['queue']); }, ['queue']);
App::setResource('certificates', function (Connection $queue) { App::setResource('queueForCertificates', function (Connection $queue) {
return new Certificate($queue); return new Certificate($queue);
}, ['queue']); }, ['queue']);
App::setResource('usage', function ($register) { App::setResource('usage', function ($register) {

View file

@ -90,7 +90,7 @@ Server::setResource('cache', function (Registry $register) {
return new Cache(new Sharding($adapters)); return new Cache(new Sharding($adapters));
}, ['register']); }, ['register']);
Server::setResource('database', function (Registry $register) { Server::setResource('queueForDatabase', function (Registry $register) {
$pools = $register->get('pools'); $pools = $register->get('pools');
return new EventDatabase( return new EventDatabase(
$pools $pools
@ -103,67 +103,33 @@ Server::setResource('database', function (Registry $register) {
Server::setResource('queue', function (Group $pools) { Server::setResource('queue', function (Group $pools) {
return $pools->get('queue')->pop()->getResource(); return $pools->get('queue')->pop()->getResource();
}, ['pools']); }, ['pools']);
Server::setResource('messaging', function (Connection $queue) { Server::setResource('queueForMessaging', function (Connection $queue) {
return new Phone($queue); return new Phone($queue);
}, ['queue']); }, ['queue']);
Server::setResource('mails', function (Connection $queue) { Server::setResource('queueForMail', function (Connection $queue) {
return new Mail($queue); return new Mail($queue);
}, ['queue']); }, ['queue']);
Server::setResource('builds', function (Connection $queue) { Server::setResource('queueForBuilds', function (Connection $queue) {
return new Build($queue); return new Build($queue);
}, ['queue']); }, ['queue']);
Server::setResource('database', function (Connection $queue) { Server::setResource('queueForDatabase', function (Connection $queue) {
return new EventDatabase($queue); return new EventDatabase($queue);
}, ['queue']); }, ['queue']);
Server::setResource('deletes', function (Connection $queue) { Server::setResource('queueForDeletes', function (Connection $queue) {
return new Delete($queue); return new Delete($queue);
}, ['queue']); }, ['queue']);
Server::setResource('events', function (Connection $queue) { Server::setResource('queueForEvents', function (Connection $queue) {
return new Event('', '', $queue); return new Event('', '', $queue);
}, ['queue']); }, ['queue']);
Server::setResource('audits', function (Connection $queue) { Server::setResource('queueForAudits', function (Connection $queue) {
return new Audit($queue); return new Audit($queue);
}, ['queue']); }, ['queue']);
Server::setResource('events', function (Connection $queue) {
return new Event('', '', $queue);
}, ['queue']);
Server::setResource('queueForFunctions', function (Connection $queue) { Server::setResource('queueForFunctions', function (Connection $queue) {
return new Func($queue); return new Func($queue);
}, ['queue']); }, ['queue']);
Server::setResource('certificates', function (Connection $queue) { Server::setResource('queueForCertificates', function (Connection $queue) {
return new Certificate($queue); return new Certificate($queue);
}, ['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) { Server::setResource('logger', function ($register) {
return $register->get('logger'); return $register->get('logger');

View file

@ -162,12 +162,12 @@ class Func extends Event
/** /**
* Generate a function event from a base event * Generate a function event from a base event
* *
* @param Event $event * @param Event $queueForEvents
* *
* @return self * @return self
* *
*/ */
public function from(Event $event): self public function from(Event $queueForEvents): self
{ {
$this->project = $event->getProject(); $this->project = $event->getProject();
$this->user = $event->getUser(); $this->user = $event->getUser();

View file

@ -28,59 +28,59 @@ class Maintenance extends Action
$this $this
->desc('Schedules maintenance tasks and publishes them to queues') ->desc('Schedules maintenance tasks and publishes them to queues')
->inject('dbForConsole') ->inject('dbForConsole')
->inject('certificates') ->inject('queueForCertificates')
->inject('deletes') ->inject('queueForDeletes')
->callback(fn (Database $dbForConsole, Certificate $certificates, Delete $deletes) => $this->action($dbForConsole, $certificates, $deletes)); ->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::title('Maintenance V1');
Console::success(APP_NAME . ' maintenance process v1 has started'); 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) ->setType(DELETE_TYPE_EXECUTIONS)
->setDatetime(DateTime::addSeconds(new \DateTime(), -1 * $interval)) ->setDatetime(DateTime::addSeconds(new \DateTime(), -1 * $interval))
->trigger(); ->trigger();
} }
function notifyDeleteAbuseLogs(int $interval, Delete $deletes) function notifyDeleteAbuseLogs(int $interval, Delete $queueForDeletes)
{ {
($deletes) ($queueForDeletes)
->setType(DELETE_TYPE_ABUSE) ->setType(DELETE_TYPE_ABUSE)
->setDatetime(DateTime::addSeconds(new \DateTime(), -1 * $interval)) ->setDatetime(DateTime::addSeconds(new \DateTime(), -1 * $interval))
->trigger(); ->trigger();
} }
function notifyDeleteAuditLogs(int $interval, Delete $deletes) function notifyDeleteAuditLogs(int $interval, Delete $queueForDeletes)
{ {
($deletes) ($queueForDeletes)
->setType(DELETE_TYPE_AUDIT) ->setType(DELETE_TYPE_AUDIT)
->setDatetime(DateTime::addSeconds(new \DateTime(), -1 * $interval)) ->setDatetime(DateTime::addSeconds(new \DateTime(), -1 * $interval))
->trigger(); ->trigger();
} }
function notifyDeleteUsageStats(int $usageStatsRetentionHourly, Delete $deletes) function notifyDeleteUsageStats(int $usageStatsRetentionHourly, Delete $queueForDeletes)
{ {
($deletes) ($queueForDeletes)
->setType(DELETE_TYPE_USAGE) ->setType(DELETE_TYPE_USAGE)
->setUsageRetentionHourlyDateTime(DateTime::addSeconds(new \DateTime(), -1 * $usageStatsRetentionHourly)) ->setUsageRetentionHourlyDateTime(DateTime::addSeconds(new \DateTime(), -1 * $usageStatsRetentionHourly))
->trigger(); ->trigger();
} }
function notifyDeleteConnections(Delete $deletes) function notifyDeleteConnections(Delete $queueForDeletes)
{ {
($deletes) ($queueForDeletes)
->setType(DELETE_TYPE_REALTIME) ->setType(DELETE_TYPE_REALTIME)
->setDatetime(DateTime::addSeconds(new \DateTime(), -60)) ->setDatetime(DateTime::addSeconds(new \DateTime(), -60))
->trigger(); ->trigger();
} }
function notifyDeleteExpiredSessions(Delete $deletes) function notifyDeleteExpiredSessions(Delete $queueForDeletes)
{ {
($deletes) ($queueForDeletes)
->setType(DELETE_TYPE_SESSIONS) ->setType(DELETE_TYPE_SESSIONS)
->trigger(); ->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) ->setType(DELETE_TYPE_CACHE_BY_TIMESTAMP)
->setDatetime(DateTime::addSeconds(new \DateTime(), -1 * $interval)) ->setDatetime(DateTime::addSeconds(new \DateTime(), -1 * $interval))
->trigger(); ->trigger();
} }
function notifyDeleteSchedules($interval, Delete $deletes) function notifyDeleteSchedules($interval, Delete $queueForDeletes)
{ {
($deletes) ($queueForDeletes)
->setType(DELETE_TYPE_SCHEDULES) ->setType(DELETE_TYPE_SCHEDULES)
->setDatetime(DateTime::addSeconds(new \DateTime(), -1 * $interval)) ->setDatetime(DateTime::addSeconds(new \DateTime(), -1 * $interval))
->trigger(); ->trigger();
@ -139,19 +139,19 @@ class Maintenance extends Action
$cacheRetention = (int) App::getEnv('_APP_MAINTENANCE_RETENTION_CACHE', '2592000'); // 30 days $cacheRetention = (int) App::getEnv('_APP_MAINTENANCE_RETENTION_CACHE', '2592000'); // 30 days
$schedulesDeletionRetention = (int) App::getEnv('_APP_MAINTENANCE_RETENTION_SCHEDULES', '86400'); // 1 Day $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(); $time = DateTime::now();
Console::info("[{$time}] Notifying workers with maintenance tasks every {$interval} seconds"); Console::info("[{$time}] Notifying workers with maintenance tasks every {$interval} seconds");
notifyDeleteExecutionLogs($executionLogsRetention, $deletes); notifyDeleteExecutionLogs($executionLogsRetention, $queueForDeletes);
notifyDeleteAbuseLogs($abuseLogsRetention, $deletes); notifyDeleteAbuseLogs($abuseLogsRetention, $queueForDeletes);
notifyDeleteAuditLogs($auditLogRetention, $deletes); notifyDeleteAuditLogs($auditLogRetention, $queueForDeletes);
notifyDeleteUsageStats($usageStatsRetentionHourly, $deletes); notifyDeleteUsageStats($usageStatsRetentionHourly, $queueForDeletes);
notifyDeleteConnections($deletes); notifyDeleteConnections($queueForDeletes);
notifyDeleteExpiredSessions($deletes); notifyDeleteExpiredSessions($queueForDeletes);
renewCertificates($dbForConsole, $certificates); renewCertificates($dbForConsole, $queueForCertificates);
notifyDeleteCache($cacheRetention, $deletes); notifyDeleteCache($cacheRetention, $queueForDeletes);
notifyDeleteSchedules($schedulesDeletionRetention, $deletes); notifyDeleteSchedules($schedulesDeletionRetention, $queueForDeletes);
}, $interval); }, $interval);
} }
} }