desc('Schedules projects for usage count') ->inject('dbForPlatform') ->inject('logError') ->inject('queueForStatsResources') ->callback([$this, 'action']); } public function action(Database $dbForPlatform, callable $logError, EventStatsResources $queue): void { $this->logError = $logError; $this->dbForPlatform = $dbForPlatform; Console::title("Stats resources V1"); Console::success('Stats resources: started'); $interval = (int) System::getEnv('_APP_STATS_RESOURCES_INTERVAL', '3600'); Console::loop(function () use ($queue) { Authorization::disable(); Authorization::setDefaultStatus(false); $last24Hours = (new \DateTime())->sub(\DateInterval::createFromDateString('24 hours')); /** * For each project that were accessed in last 24 hours */ $this->foreachDocument($this->dbForPlatform, 'projects', [ Query::greaterThanEqual('accessedAt', DateTime::format($last24Hours)) ], function ($project) use ($queue) { $queue ->setProject($project) ->trigger(); Console::success('project: ' . $project->getId() . '(' . $project->getInternalId() . ')' . ' queued'); }); }, $interval); Console::log("Stats resources: exited"); } }