From a30dfd284cb1a7f9e54d164f85032121712ae74b Mon Sep 17 00:00:00 2001 From: shimon Date: Thu, 2 Feb 2023 18:36:32 +0200 Subject: [PATCH] addressing comments --- app/config/collections.php | 44 +++++++++++++++++----------------- app/controllers/shared/api.php | 42 ++++++++++++++++---------------- app/init.php | 23 +++++++++++++++++- 3 files changed, 66 insertions(+), 43 deletions(-) diff --git a/app/config/collections.php b/app/config/collections.php index 2ba8c6717..87a68177b 100644 --- a/app/config/collections.php +++ b/app/config/collections.php @@ -192,7 +192,7 @@ $collections = [ 'format' => '', 'size' => Database::LENGTH_KEY, 'signed' => true, - 'required' => false, + 'required' => true, 'default' => null, 'array' => false, 'filters' => [], @@ -214,7 +214,7 @@ $collections = [ 'format' => '', 'size' => Database::LENGTH_KEY, 'signed' => true, - 'required' => false, + 'required' => true, 'default' => null, 'array' => false, 'filters' => [], @@ -369,7 +369,7 @@ $collections = [ 'format' => '', 'size' => Database::LENGTH_KEY, 'signed' => true, - 'required' => false, + 'required' => true, 'default' => null, 'array' => false, 'filters' => [], @@ -391,7 +391,7 @@ $collections = [ 'format' => '', 'size' => Database::LENGTH_KEY, 'signed' => true, - 'required' => false, + 'required' => true, 'default' => null, 'array' => false, 'filters' => [], @@ -496,7 +496,7 @@ $collections = [ 'format' => '', 'size' => Database::LENGTH_KEY, 'signed' => true, - 'required' => false, + 'required' => true, 'default' => null, 'array' => false, 'filters' => [], @@ -791,7 +791,7 @@ $collections = [ 'format' => '', 'size' => Database::LENGTH_KEY, 'signed' => true, - 'required' => false, + 'required' => true, 'default' => null, 'array' => false, 'filters' => [], @@ -892,7 +892,7 @@ $collections = [ 'format' => '', 'size' => Database::LENGTH_KEY, 'signed' => true, - 'required' => false, + 'required' => true, 'default' => null, 'array' => false, 'filters' => [], @@ -986,7 +986,7 @@ $collections = [ 'format' => '', 'size' => Database::LENGTH_KEY, 'signed' => true, - 'required' => false, + 'required' => true, 'default' => null, 'array' => false, 'filters' => [], @@ -1091,7 +1091,7 @@ $collections = [ 'format' => '', 'size' => Database::LENGTH_KEY, 'signed' => true, - 'required' => false, + 'required' => true, 'default' => null, 'array' => false, 'filters' => [], @@ -1203,7 +1203,7 @@ $collections = [ 'format' => '', 'size' => Database::LENGTH_KEY, 'signed' => true, - 'required' => false, + 'required' => true, 'default' => null, 'array' => false, 'filters' => [], @@ -1579,7 +1579,7 @@ $collections = [ 'format' => '', 'size' => Database::LENGTH_KEY, 'signed' => true, - 'required' => false, + 'required' => true, 'default' => null, 'array' => false, 'filters' => [], @@ -1673,7 +1673,7 @@ $collections = [ 'format' => '', 'size' => Database::LENGTH_KEY, 'signed' => true, - 'required' => false, + 'required' => true, 'default' => null, 'array' => false, 'filters' => [], @@ -2014,7 +2014,7 @@ $collections = [ 'format' => '', 'size' => Database::LENGTH_KEY, 'signed' => true, - 'required' => false, + 'required' => true, 'default' => null, 'array' => false, 'filters' => [], @@ -2036,7 +2036,7 @@ $collections = [ 'format' => '', 'size' => Database::LENGTH_KEY, 'signed' => true, - 'required' => false, + 'required' => true, 'default' => null, 'array' => false, 'filters' => [], @@ -2240,7 +2240,7 @@ $collections = [ 'format' => '', 'size' => Database::LENGTH_KEY, 'signed' => true, - 'required' => false, + 'required' => true, 'default' => null, 'array' => false, 'filters' => [], @@ -2284,7 +2284,7 @@ $collections = [ 'format' => '', 'size' => Database::LENGTH_KEY, 'signed' => true, - 'required' => false, + 'required' => true, 'default' => null, 'array' => false, 'filters' => [], @@ -2409,7 +2409,7 @@ $collections = [ 'format' => '', 'size' => Database::LENGTH_KEY, 'signed' => true, - 'required' => false, + 'required' => true, 'default' => null, 'array' => false, 'filters' => [], @@ -2442,7 +2442,7 @@ $collections = [ 'format' => '', 'size' => Database::LENGTH_KEY, 'signed' => true, - 'required' => false, + 'required' => true, 'default' => null, 'array' => false, 'filters' => [], @@ -2633,7 +2633,7 @@ $collections = [ 'format' => '', 'size' => Database::LENGTH_KEY, 'signed' => true, - 'required' => false, + 'required' => true, 'default' => null, 'array' => false, 'filters' => [], @@ -2760,7 +2760,7 @@ $collections = [ 'format' => '', 'size' => Database::LENGTH_KEY, 'signed' => true, - 'required' => false, + 'required' => true, 'default' => null, 'array' => false, 'filters' => [], @@ -2782,7 +2782,7 @@ $collections = [ 'format' => '', 'size' => Database::LENGTH_KEY, 'signed' => true, - 'required' => false, + 'required' => true, 'default' => null, 'array' => false, 'filters' => [], @@ -3669,7 +3669,7 @@ $collections = [ 'format' => '', 'size' => Database::LENGTH_KEY, 'signed' => true, - 'required' => false, + 'required' => true, 'default' => null, 'array' => false, 'filters' => [], diff --git a/app/controllers/shared/api.php b/app/controllers/shared/api.php index 54f347f4a..bb7d727fe 100644 --- a/app/controllers/shared/api.php +++ b/app/controllers/shared/api.php @@ -61,11 +61,11 @@ $databaseListener = function (string $event, Document $document, Document $proje switch (true) { case $document->getCollection() === 'teams': $queueForUsage - ->addMetric("teams", $value); // per project + ->addMetric(METRIC_TEAMS, $value); // per project break; case $document->getCollection() === 'users': $queueForUsage - ->addMetric("users", $value); // per project + ->addMetric(METRIC_USERS, $value); // per project if ($event === Database::EVENT_DOCUMENT_DELETE) { $queueForUsage ->addReduce($document); @@ -73,11 +73,11 @@ $databaseListener = function (string $event, Document $document, Document $proje break; case $document->getCollection() === 'sessions': // sessions $queueForUsage - ->addMetric("sessions", $value); //per project + ->addMetric(METRIC_SESSIONS, $value); //per project break; case $document->getCollection() === 'databases': // databases $queueForUsage - ->addMetric("databases", $value); // per project + ->addMetric(METRIC_DATABASES, $value); // per project if ($event === Database::EVENT_DOCUMENT_DELETE) { $queueForUsage @@ -88,8 +88,8 @@ $databaseListener = function (string $event, Document $document, Document $proje $parts = explode('_', $document->getCollection()); $databaseId = $parts[1] ?? 0; $queueForUsage - ->addMetric("collections", $value) // per project - ->addMetric("{$databaseId}" . ".collections", $value) // per database + ->addMetric(METRIC_COLLECTIONS, $value) // per project + ->addMetric(str_replace('databaseId', $databaseId, METRIC_DATABASE_ID_COLLECTIONS), $value) // per database ; if ($event === Database::EVENT_DOCUMENT_DELETE) { @@ -102,13 +102,13 @@ $databaseListener = function (string $event, Document $document, Document $proje $databaseId = $parts[1] ?? 0; $collectionId = $parts[3] ?? 0; $queueForUsage - ->addMetric("documents", $value) // per project - ->addMetric("{$databaseId}" . ".documents", $value) // per database - ->addMetric("{$databaseId}" . "." . "{$collectionId}" . ".documents", $value); // per collection + ->addMetric(METRIC_DOCUMENTS, $value) // per project + ->addMetric(str_replace('databaseId', $databaseId, METRIC_DATABASE_ID_DOCUMENTS), $value) // per database + ->addMetric(str_replace(['databaseId', 'collectionId'], [$databaseId, $collectionId], METRIC_DATABASE_ID_COLLECTION_ID_DOCUMENTS), $value); // per collection break; case $document->getCollection() === 'buckets': //buckets $queueForUsage - ->addMetric("buckets", $value); // per project + ->addMetric(METRIC_BUCKETS, $value); // per project if ($event === Database::EVENT_DOCUMENT_DELETE) { $queueForUsage ->addReduce($document); @@ -118,14 +118,14 @@ $databaseListener = function (string $event, Document $document, Document $proje $parts = explode('_', $document->getCollection()); $bucketId = $parts[1]; $queueForUsage - ->addMetric("files", $value) // per project - ->addMetric("files.storage", $document->getAttribute('sizeOriginal') * $value) // per project - ->addMetric("{$bucketId}" . ".files", $value) // per bucket - ->addMetric("{$bucketId}" . ".files.storage", $document->getAttribute('sizeOriginal') * $value);// per bucket + ->addMetric(METRIC_FILES, $value) // per project + ->addMetric(METRIC_FILES_STORAGE, $document->getAttribute('sizeOriginal') * $value) // per project + ->addMetric(str_replace('bucketId', $bucketId, METRIC_BUCKET_ID_FILES), $value) // per bucket + ->addMetric(str_replace('bucketId', $bucketId, METRIC_BUCKET_ID_FILES_STORAGE), $document->getAttribute('sizeOriginal') * $value); // per bucket break; case $document->getCollection() === 'functions': $queueForUsage - ->addMetric('functions', $value); // per project + ->addMetric(METRIC_FUNCTIONS, $value); // per project if ($event === Database::EVENT_DOCUMENT_DELETE) { $queueForUsage @@ -134,15 +134,17 @@ $databaseListener = function (string $event, Document $document, Document $proje break; case $document->getCollection() === 'deployments': $queueForUsage - ->addMetric("deployments", $value) // per project + ->addMetric(METRIC_DEPLOYMENTS, $value) // per project ->addMetric("deployments.storage", $document->getAttribute('size') * $value) // per project - ->addMetric("{$document->getAttribute('resourceType')}" . "." . "{$document->getAttribute('resourceInternalId')}" . ".deployments", $value)// per function - ->addMetric("{$document->getAttribute('resourceType')}" . "." . "{$document->getAttribute('resourceInternalId')}" . ".deployments.storage", $document->getAttribute('size') * $value); // per function + ->addMetric(METRIC_DEPLOYMENTS_STORAGE, $document->getAttribute('size') * $value) // per project + ->addMetric(str_replace(['resourceType', 'resourceInternalId'], [$document->getAttribute('resourceType'), $document->getAttribute('resourceInternalId')], METRIC_FUNCTION_ID_DEPLOYMENTS), $value)// per function + ->addMetric(str_replace(['resourceType', 'resourceInternalId'], [$document->getAttribute('resourceType'), $document->getAttribute('resourceInternalId')], METRIC_FUNCTION_ID_STORAGE), $document->getAttribute('size') * $value);// per function + break; case $document->getCollection() === 'executions': $queueForUsage - ->addMetric("executions", $value) // per project - ->addMetric("{$document->getAttribute('functionInternalId')}" . ".executions", $value); // per function + ->addMetric(METRIC_EXECUTIONS, $value) // per project + ->addMetric(str_replace('functionInternalId', $document->getAttribute('functionInternalId'), METRIC_FUNCTION_ID_EXECUTIONS), $value);// per function break; default: break; diff --git a/app/init.php b/app/init.php index 3ec27d00e..5a8acc630 100644 --- a/app/init.php +++ b/app/init.php @@ -174,7 +174,28 @@ const APP_AUTH_TYPE_KEY = 'Key'; const APP_AUTH_TYPE_ADMIN = 'Admin'; // Response related const MAX_OUTPUT_CHUNK_SIZE = 2 * 1024 * 1024; // 2MB - +// usage metrics +const METRIC_TEAMS = 'teams'; +const METRIC_USERS = 'users'; +const METRIC_SESSIONS = 'sessions'; +const METRIC_DATABASES = 'databases'; +const METRIC_COLLECTIONS = 'collections'; +const METRIC_DATABASE_ID_COLLECTIONS = '{databaseId}.collections'; +const METRIC_DOCUMENTS = 'documents'; +const METRIC_DATABASE_ID_DOCUMENTS = '{databaseId}.documents'; +const METRIC_DATABASE_ID_COLLECTION_ID_DOCUMENTS = '{databaseId}.{collectionId}.documents'; +const METRIC_BUCKETS = 'buckets'; +const METRIC_FILES = 'files'; +const METRIC_FILES_STORAGE = 'files.storage'; +const METRIC_BUCKET_ID_FILES = '{bucketId}.files'; +const METRIC_BUCKET_ID_FILES_STORAGE = '{bucketId}.files.storage'; +const METRIC_FUNCTIONS = 'functions'; +const METRIC_DEPLOYMENTS = 'deployments'; +const METRIC_DEPLOYMENTS_STORAGE = 'deployments.storage'; +const METRIC_FUNCTION_ID_DEPLOYMENTS = '{resourceType}.{resourceInternalId}.deployments'; +const METRIC_FUNCTION_ID_STORAGE = '{resourceType}.{resourceInternalId}.deployments.storage'; +const METRIC_EXECUTIONS = 'executions'; +const METRIC_FUNCTION_ID_EXECUTIONS = '{functionInternalId}.executions'; $register = new Registry();