diff --git a/app/controllers/shared/api.php b/app/controllers/shared/api.php index c81568a70a..9f36ee427e 100644 --- a/app/controllers/shared/api.php +++ b/app/controllers/shared/api.php @@ -64,8 +64,20 @@ $databaseListener = function (string $event, array $args, Document $project, Usa $queueForUsage->addMetric("teams", $value); // per project break; case $document->getCollection() === 'users': - var_dump($document); $queueForUsage->addMetric("users", $value); // per project + // sessions + if ($event === Database::EVENT_DOCUMENT_DELETE) { + $userSessions = (count($document->getAttribute('sessions'))); + $sessions = $dbForProject->getDocument('stats', md5("_inf_sessions")); + if (!empty($userSessions)) { + $dbForProject->decreaseDocumentAttribute( + 'stats', + $sessions->getId(), + 'value', + $userSessions + ); + } + } break; case $document->getCollection() === 'sessions': // Todo sessions count offset issue $queueForUsage->addMetric("sessions", $value); // per project @@ -353,7 +365,7 @@ App::init() $dbForProject ->on(Database::EVENT_DOCUMENT_CREATE, fn ($event, $args) => $databaseListener($event, $args, $project, $queueForUsage, $dbForProject)) - //->on(Database::EVENT_DOCUMENT_DELETE, fn ($event, Document $document, Document $collection) => $databaseListener($event, $document, $project, $queueForUsage, $dbForProject)) + ->on(Database::EVENT_DOCUMENT_DELETE, fn ($event, $args) => $databaseListener($event, $args, $project, $queueForUsage, $dbForProject)) ; $useCache = $route->getLabel('cache', false); diff --git a/docker-compose.yml b/docker-compose.yml index 58a3212a49..fd59054f26 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -93,6 +93,7 @@ services: - ./public:/usr/src/code/public - ./src:/usr/src/code/src - ./dev:/usr/local/dev + - ./vendor/utopia-php/database:/usr/src/code/vendor/utopia-php/database depends_on: - mariadb - redis