update stats resources task to use new queue

This commit is contained in:
Damodar Lohani 2025-01-30 04:10:35 +00:00
parent a05d774370
commit c2ce273065

View file

@ -2,7 +2,7 @@
namespace Appwrite\Platform\Tasks;
use Appwrite\Event\Usage;
use Appwrite\Event\StatsResources as EventStatsResources;
use Appwrite\Platform\Action;
use Utopia\CLI\Console;
use Utopia\Database\Database;
@ -11,8 +11,6 @@ use Utopia\Database\Query;
use Utopia\Database\Validator\Authorization;
use Utopia\System\System;
const INFINITY_PERIOD = '_inf_';
/**
* Usage count
*
@ -35,13 +33,6 @@ class StatsResources extends Action
*/
protected Database $dbForPlatform;
/**
* Queue for usage
*
* @var Usage
*/
protected Usage $queue;
public static function getName()
{
return 'stats-resources';
@ -53,23 +44,22 @@ class StatsResources extends Action
->desc('Schedules projects for usage count')
->inject('dbForPlatform')
->inject('logError')
->inject('queueForUsage')
->callback(fn ($dbForPlatform, $logError, $queueForUsage) => $this->action($dbForPlatform, $logError, $queueForUsage));
->inject('queueForStatsResources')
->callback([$this, 'action']);
}
public function action(Database $dbForPlatform, callable $logError, Usage $queueForUsage): void
public function action(Database $dbForPlatform, callable $logError, EventStatsResources $queueForStatsResources): void
{
$this->logError = $logError;
$this->dbForPlatform = $dbForPlatform;
$this->queue = $queueForUsage;
Console::title("Usage count V1");
Console::success('Usage count: Started');
$interval = (int) System::getEnv('_APP_USAGE_COUNT_INTERVAL', '3600');
Console::loop(function () use ($queueForUsage) {
$this->enqueueProjects($queueForUsage);
Console::loop(function () use ($queueForStatsResources) {
$this->enqueueProjects($queueForStatsResources);
}, $interval);
Console::log("Usage count: Exited");
@ -78,22 +68,23 @@ class StatsResources extends Action
/**
* Enqueue projects for counting
* @param Database $dbForPlatform
* @param Usage $queue
* @param EventStatsResources $queue
* @return void
*/
protected function enqueueProjects(Usage $queue): void
protected function enqueueProjects(EventStatsResources $queue): void
{
Authorization::disable();
Authorization::setDefaultStatus(false);
$last24Hours = (new \DateTime())->sub(\DateInterval::createFromDateString('24 hours'));
// Foreach Team
/**
* 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)
->setType(Usage::TYPE_USAGE_COUNT)
->trigger();
Console::success('project: ' . $project->getId() . '(' . $project->getInternalId() . ')' . ' queued');
});