From 9f92214c9d1a12d822a5f3ed7b09c6999062c03d Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 17 Nov 2022 00:36:51 +0000 Subject: [PATCH] update usage --- src/Appwrite/Platform/Tasks/Usage.php | 56 +++++++-------------------- 1 file changed, 15 insertions(+), 41 deletions(-) diff --git a/src/Appwrite/Platform/Tasks/Usage.php b/src/Appwrite/Platform/Tasks/Usage.php index 73686109d8..6cf20e737d 100644 --- a/src/Appwrite/Platform/Tasks/Usage.php +++ b/src/Appwrite/Platform/Tasks/Usage.php @@ -12,6 +12,7 @@ use Utopia\Database\Database as UtopiaDatabase; use Utopia\Validator\WhiteList; use Throwable; use Utopia\Platform\Action; +use Utopia\Registry\Registry; class Usage extends Action { @@ -24,17 +25,28 @@ class Usage extends Action { $this ->desc('Schedules syncing data from influxdb to Appwrite console db') - ->param('type', 'timeseries', new WhiteList(['timeseries', 'database'])) ->inject('dbForConsole') ->inject('influxdb') + ->inject('register') + ->inject('getProjectDB') ->inject('logError') - ->callback(fn ($type, $dbForConsole, $influxDB, $logError) => $this->action($type, $dbForConsole, $influxDB, $logError)); + ->callback(fn ($dbForConsole, $influxDB, $register, $getProjectDB, $logError) => $this->action($dbForConsole, $influxDB, $register, $getProjectDB, $logError)); } protected function aggregateTimeseries(UtopiaDatabase $database, InfluxDatabase $influxDB, callable $logError): void { + + } + + public function action(UtopiaDatabase $dbForConsole, InfluxDatabase $influxDB, Registry $register, callable $getProjectDB, callable $logError) + { + Console::title('Usage Aggregation V1'); + Console::success(APP_NAME . ' usage aggregation process v1 has started'); + + $errorLogger = fn(Throwable $error, string $action = 'syncUsageStats') => $logError($error, "usage", $action); + $interval = (int) App::getEnv('_APP_USAGE_TIMESERIES_INTERVAL', '30'); // 30 seconds (by default) - $usage = new TimeSeries($database, $influxDB, $logError); + $usage = new TimeSeries($dbForConsole, $influxDB, $getProjectDB, $register, $errorLogger); Console::loop(function () use ($interval, $usage) { $now = date('d-m-Y H:i:s', time()); @@ -48,42 +60,4 @@ class Usage extends Action Console::info("[{$now}] Aggregation took {$loopTook} seconds"); }, $interval); } - - protected function aggregateDatabase(UtopiaDatabase $database, callable $logError): void - { - $interval = (int) App::getEnv('_APP_USAGE_DATABASE_INTERVAL', '900'); // 15 minutes (by default) - $usage = new Database($database, $logError); - $aggregrator = new Aggregator($database, $logError); - - Console::loop(function () use ($interval, $usage, $aggregrator) { - $now = date('d-m-Y H:i:s', time()); - Console::info("[{$now}] Aggregating database usage every {$interval} seconds."); - $loopStart = microtime(true); - $usage->collect(); - $aggregrator->collect(); - $loopTook = microtime(true) - $loopStart; - $now = date('d-m-Y H:i:s', time()); - - Console::info("[{$now}] Aggregation took {$loopTook} seconds"); - }, $interval); - } - - public function action(string $type, UtopiaDatabase $dbForConsole, InfluxDatabase $influxDB, callable $logError) - { - Console::title('Usage Aggregation V1'); - Console::success(APP_NAME . ' usage aggregation process v1 has started'); - - $errorLogger = fn(Throwable $error, string $action = 'syncUsageStats') => $logError($error, "usage", $action); - - switch ($type) { - case 'timeseries': - $this->aggregateTimeseries($dbForConsole, $influxDB, $errorLogger); - break; - case 'database': - $this->aggregateDatabase($dbForConsole, $errorLogger); - break; - default: - Console::error("Unsupported usage aggregation type"); - } - } }