1
0
Fork 0
mirror of synced 2024-10-03 02:37:40 +13:00

Switch to decreaseDocumentAttribute

This commit is contained in:
shimon 2022-12-09 13:01:17 +02:00
parent e2e3d99410
commit 806a775663
2 changed files with 85 additions and 31 deletions

View file

@ -73,14 +73,24 @@ $databaseListener = function (string $event, Document $document, Document $proje
$dbCollections = $dbForProject->getDocument('stats', md5("_inf_" . "{$document->getId()}" . ".collections"));
$projectCollections = $dbForProject->getDocument('stats', md5("_inf_collections"));
if (!$dbCollections->isEmpty()) {
$dbForProject->decreaseDocumentAttribute('stats', $projectCollections->getId(), 'value', $dbCollections['value']);
$dbForProject->decreaseDocumentAttribute(
'stats',
$projectCollections->getId(),
'value',
$dbCollections['value']
);
}
// Documents
$dbDocuments = $dbForProject->getDocument('stats', md5("_inf_" . "{$document->getId()}" . ".documents"));
$projectDocuments = $dbForProject->getDocument('stats', md5("_inf_documents"));
if (!$dbDocuments->isEmpty()) {
$dbForProject->decreaseDocumentAttribute('stats', $projectDocuments->getId(), 'value', $dbDocuments['value']);
$dbForProject->decreaseDocumentAttribute(
'stats',
$projectDocuments->getId(),
'value',
$dbDocuments['value']
);
}
}
break;
@ -89,9 +99,11 @@ $databaseListener = function (string $event, Document $document, Document $proje
$queueForUsage->addMetric("collections", $value); // per project
break;
case $document->getCollection() === 'documents':
$queueForUsage->addMetric("{$document['databaseId']}" . "." . "{$document['collectionId']}" . ".documents", $value); // per collection
$queueForUsage->addMetric("{$document['databaseId']}" . ".documents", $value); // per database
$queueForUsage->addMetric("documents", $value); // per project
$queueForUsage
->addMetric("{$document['databaseId']}" . "." . "{$document['collectionId']}" . ".documents", $value) // per collection
->addMetric("{$document['databaseId']}" . ".documents", $value) // per database
->addMetric("documents", $value) // per project
;
break;
case $document->getCollection() === 'buckets':
$queueForUsage->addMetric("buckets", $value); // per project
@ -100,21 +112,33 @@ $databaseListener = function (string $event, Document $document, Document $proje
$bucketFiles = $dbForProject->getDocument('stats', md5("_inf_" . "{$document->getId()}" . ".files"));
$projectFiles = $dbForProject->getDocument('stats', md5("_inf_files"));
if (!$bucketFiles->isEmpty()) {
$dbForProject->decreaseDocumentAttribute('stats', $projectFiles->getId(), 'value', $bucketFiles['value']);
$dbForProject->decreaseDocumentAttribute(
'stats',
$projectFiles->getId(),
'value',
$bucketFiles['value']
);
}
// bucket Storage
$bucketStorage = $dbForProject->getDocument('stats', md5("_inf_" . "{$document->getId()}" . ".files.storage"));
$projectStorage = $dbForProject->getDocument('stats', md5("_inf_files.storage"));
if (!$bucketStorage->isEmpty()) {
$dbForProject->decreaseDocumentAttribute('stats', $projectStorage->getId(), 'value', $bucketStorage['value']);
$dbForProject->decreaseDocumentAttribute(
'stats',
$projectStorage->getId(),
'value',
$bucketStorage['value']
);
}
}
break;
case str_starts_with($document->getCollection(), 'bucket_'): // files
$queueForUsage->addMetric("{$document['bucketId']}" . ".files", $value); // per bucket
$queueForUsage->addMetric("{$document['bucketId']}" . ".files.storage", $document->getAttribute('sizeOriginal') * $value); // per bucket
$queueForUsage->addMetric("files", $value); // per project
$queueForUsage->addMetric("files.storage", $document->getAttribute('sizeOriginal') * $value); // per project
$queueForUsage
->addMetric("{$document['bucketId']}" . ".files", $value) // per bucket
->addMetric("{$document['bucketId']}" . ".files.storage", $document->getAttribute('sizeOriginal') * $value)// per bucket
->addMetric("files", $value) // per project
->addMetric("files.storage", $document->getAttribute('sizeOriginal') * $value) // per project
;
break;
case $document->getCollection() === 'functions':
$queueForUsage->addMetric("functions", $value); // per project
@ -123,48 +147,74 @@ $databaseListener = function (string $event, Document $document, Document $proje
$functionDeployments = $dbForProject->getDocument('stats', md5("_inf_function." . "{$document->getId()}" . ".deployments"));
$projectDeployments = $dbForProject->getDocument('stats', md5("_inf_deployments"));
if (!$functionDeployments->isEmpty()) {
$dbForProject->decreaseDocumentAttribute('stats', $projectDeployments->getId(), 'value', $functionDeployments['value']);
$dbForProject->decreaseDocumentAttribute(
'stats',
$projectDeployments->getId(),
'value',
$functionDeployments['value']
);
}
// Deployments Storage
$functionDeploymentsStorage = $dbForProject->getDocument('stats', md5("_inf_function." . "{$document->getId()}" . ".deployments.storage"));
$projectDeploymentsStorage = $dbForProject->getDocument('stats', md5("_inf_function.deployments.storage"));
if (!$functionDeployments->isEmpty()) {
$dbForProject->decreaseDocumentAttribute('stats', $projectDeploymentsStorage->getId(), 'value', $functionDeploymentsStorage['value']);
$dbForProject->decreaseDocumentAttribute(
'stats',
$projectDeploymentsStorage->getId(),
'value',
$functionDeploymentsStorage['value']
);
}
//TODO needs to find a solution for builds
//TODO Missing solution for builds (functionId)
// Executions
$functionExecutions = $dbForProject->getDocument('stats', md5("_inf_" . "{$document->getId()}" . ".executions"));
$projectExecutions = $dbForProject->getDocument('stats', md5("_inf_executions"));
if (!$functionExecutions->isEmpty()) {
$dbForProject->decreaseDocumentAttribute('stats', $projectExecutions->getId(), 'value', $functionExecutions['value']);
$dbForProject->decreaseDocumentAttribute(
'stats',
$projectExecutions->getId(),
'value',
$functionExecutions['value']
);
}
// Executions Compute
$functionExecutionsCompute = $dbForProject->getDocument('stats', md5("_inf_" . "{$document->getId()}" . ".executions.compute"));
$projectExecutionsCompute = $dbForProject->getDocument('stats', md5("_inf_executions.compute"));
if (!$functionExecutionsCompute->isEmpty()) {
$dbForProject->decreaseDocumentAttribute('stats', $projectExecutionsCompute->getId(), 'value', $functionExecutionsCompute['value']);
$dbForProject->decreaseDocumentAttribute(
'stats',
$projectExecutionsCompute->getId(),
'value',
$functionExecutionsCompute['value']
);
}
}
break;
case $document->getCollection() === 'deployments':
$queueForUsage->addMetric("{$document['resourceType']}" . "." . "{$document['resourceId']}" . ".deployments", $value); // per function
$queueForUsage->addMetric("{$document['resourceType']}" . "." . "{$document['resourceId']}" . ".deployments.storage", $document->getAttribute('size') * $value); // per function
$queueForUsage->addMetric("deployments", $value); // per project
$queueForUsage->addMetric("deployments.storage", $document->getAttribute('size') * $value); // per project
$queueForUsage
->addMetric("{$document['resourceType']}" . "." . "{$document['resourceId']}" . ".deployments", $value)// per function
->addMetric("{$document['resourceType']}" . "." . "{$document['resourceId']}" . ".deployments.storage", $document->getAttribute('size') * $value) // per function
->addMetric("deployments", $value) // per project
->addMetric("deployments.storage", $document->getAttribute('size') * $value) // per project
;
break;
case $document->getCollection() === 'builds': // needs to extract functionId
$queueForUsage->addMetric("{$document['functionId']}" . ".builds", $value); // per function
$queueForUsage->addMetric("{$document['functionId']}" . ".builds.storage", $document->getAttribute('size') * $value); // per function
$queueForUsage->addMetric("builds", $value); // per project
$queueForUsage->addMetric("builds.storage", $document->getAttribute('size') * $value); // per project
case $document->getCollection() === 'builds': // todo needs to extract functionId
$queueForUsage
->addMetric("{$document['functionId']}" . ".builds", $value) // per function
->addMetric("{$document['functionId']}" . ".builds.storage", $document->getAttribute('size') * $value) // per function
->addMetric("builds", $value) // per project
->addMetric("builds.storage", $document->getAttribute('size') * $value) // per project
;
break;
case $document->getCollection() === 'executions':
$queueForUsage->addMetric("{$document['functionId']}" . ".executions", $value); // per function
$queueForUsage->addMetric("{$document['functionId']}" . ".executions.compute", $document->getAttribute('duration') * $value); // per function
$queueForUsage->addMetric("executions", $value); // per project
$queueForUsage->addMetric("executions.compute", $document->getAttribute('duration') * $value); // per project
$queueForUsage
->addMetric("{$document['functionId']}" . ".executions", $value) // per function
->addMetric("{$document['functionId']}" . ".executions.compute", $document->getAttribute('duration') * $value) // per function
->addMetric("executions", $value) // per project
->addMetric("executions.compute", $document->getAttribute('duration') * $value) // per project
;
break;
default:
break;

View file

@ -78,12 +78,16 @@ $server
'time' => $time,
'metric' => $metric['key'],
'value' => $metric['value'],
'type' => 0,
'region' => App::getEnv('_APP_REGION', 'default'),
]));
} else {
//console::info("{$document->getAttribute('period')}, {$document->getAttribute('time')}, {$document->getAttribute('metric')} = {$value}");
$adapter->decreaseDocumentAttribute('stats', $document->getId(), 'value', $metric['value']);
$adapter->decreaseDocumentAttribute(
'stats',
$document->getId(),
'value',
$metric['value']
);
}
} catch (\Exception $e) {
console::error($e->getMessage());