1
0
Fork 0
mirror of synced 2024-07-03 21:50:34 +12:00

Merge branch 'feat-1.4.x-response-filters' of github.com:appwrite/appwrite into feat-1.4.x-response-filters

This commit is contained in:
Jake Barnby 2023-08-22 14:14:39 -04:00
commit f202294fc6
No known key found for this signature in database
GPG key ID: C437A8CC85B96E9C
3 changed files with 1 additions and 744 deletions

View file

@ -25,7 +25,7 @@ use Appwrite\Utopia\Response\Filters\V12 as ResponseV12;
use Appwrite\Utopia\Response\Filters\V13 as ResponseV13;
use Appwrite\Utopia\Response\Filters\V14 as ResponseV14;
use Appwrite\Utopia\Response\Filters\V15 as ResponseV15;
use Appwrite\Utopia\Response\Filters\V15 as ResponseV16;
use Appwrite\Utopia\Response\Filters\V16 as ResponseV16;
use Utopia\CLI\Console;
use Utopia\Database\Database;
use Utopia\Database\DateTime;

View file

@ -31,35 +31,6 @@ class V16 extends Filter
case Response::MODEL_PROJECT:
$parsedResponse = $this->parseProject($parsedResponse);
break;
// We've decided to push these usage changes to a future release so
// these changes may still be helpful down the line.
// case Response::MODEL_USAGE_BUCKETS:
// $parsedResponse = $this->parseUsageBuckets($parsedResponse);
// break;
// case Response::MODEL_USAGE_COLLECTION:
// $parsedResponse = $this->parseUsageCollection($parsedResponse);
// break;
// case Response::MODEL_USAGE_DATABASE:
// $parsedResponse = $this->parseUsageDatabase($parsedResponse);
// break;
// case Response::MODEL_USAGE_DATABASES:
// $parsedResponse = $this->parseUsageDatabases($parsedResponse);
// break;
// case Response::MODEL_USAGE_FUNCTION:
// $parsedResponse = $this->parseUsageFunction($parsedResponse);
// break;
// case Response::MODEL_USAGE_FUNCTIONS:
// $parsedResponse = $this->parseUsageFunctions($parsedResponse);
// break;
// case Response::MODEL_USAGE_PROJECT:
// $parsedResponse = $this->parseUsageProject($parsedResponse);
// break;
// case Response::MODEL_USAGE_STORAGE:
// $parsedResponse = $this->parseUsageStorage($parsedResponse);
// break;
// case Response::MODEL_USAGE_USERS:
// $parsedResponse = $this->parseUsageUsers($parsedResponse);
// break;
case Response::MODEL_VARIABLE:
$parsedResponse = $this->parseVariable($parsedResponse);
break;
@ -126,234 +97,6 @@ class V16 extends Filter
return $content;
}
protected function parseUsageBuckets(array $content)
{
if (isset($content['filesTotal'])) {
$content['filesCount'] = $content['filesTotal'];
unset($content['filesTotal']);
}
$attributesToInit = ['filesCreate', 'filesRead', 'filesUpdate', 'filesDelete'];
foreach ($attributesToInit as $attribute) {
$content[$attribute] = [];
}
return $content;
}
protected function parseUsageCollection(array $content)
{
if (isset($content['documentsTotal'])) {
$content['documentsCount'] = $content['documentsTotal'];
unset($content['documentsTotal']);
}
$attributesToInit = ['documentsCreate', 'documentsRead', 'documentsUpdate', 'documentsDelete'];
foreach ($attributesToInit as $attribute) {
$content[$attribute] = [];
}
return $content;
}
protected function parseUsageDatabase(array $content)
{
if (isset($content['documentsTotal'])) {
$content['documentsCount'] = $content['documentsTotal'];
unset($content['documentsTotal']);
}
if (isset($content['collectionsTotal'])) {
$content['collectionsCount'] = $content['collectionsTotal'];
unset($content['collectionsTotal']);
}
$attributesToInit = [
'documentsCreate',
'documentsRead',
'documentsUpdate',
'documentsDelete',
'collectionsCreate',
'collectionsRead',
'collectionsUpdate',
'collectionsDelete',
];
foreach ($attributesToInit as $attribute) {
$content[$attribute] = [];
}
return $content;
}
protected function parseUsageDatabases(array $content)
{
if (isset($content['documentsTotal'])) {
$content['documentsCount'] = $content['documentsTotal'];
unset($content['documentsTotal']);
}
if (isset($content['collectionsTotal'])) {
$content['collectionsCount'] = $content['collectionsTotal'];
unset($content['collectionsTotal']);
}
if (isset($content['databasesTotal'])) {
$content['databasesCount'] = $content['databasesTotal'];
unset($content['databasesTotal']);
}
$attributesToInit = [
'documentsCreate',
'documentsRead',
'documentsUpdate',
'documentsDelete',
'collectionsCreate',
'collectionsRead',
'collectionsUpdate',
'collectionsDelete',
'databasesCreate',
'databasesRead',
'databasesUpdate',
'databasesDelete',
];
foreach ($attributesToInit as $attribute) {
$content[$attribute] = [];
}
return $content;
}
protected function parseUsageFunction(array $content)
{
$attributesToInit = [
'buildsFailure',
'buildsSuccess',
'executionsFailure',
'executionsSuccess',
];
foreach ($attributesToInit as $attribute) {
$content[$attribute] = [];
}
return $content;
}
protected function parseUsageFunctions(array $content)
{
$attributesToInit = [
'buildsFailure',
'buildsSuccess',
'executionsFailure',
'executionsSuccess',
];
foreach ($attributesToInit as $attribute) {
$content[$attribute] = [];
}
return $content;
}
protected function parseUsageProject(array $content)
{
if (isset($content['requestsTotal'])) {
$content['requests'] = $content['requestsTotal'];
unset($content['requestsTotal']);
}
if (isset($content['executionsTotal'])) {
$content['executions'] = $content['executionsTotal'];
unset($content['executionsTotal']);
}
if (isset($content['documentsTotal'])) {
$content['documents'] = $content['documentsTotal'];
unset($content['documentsTotal']);
}
if (isset($content['databasesTotal'])) {
$content['databases'] = $content['databasesTotal'];
unset($content['databasesTotal']);
}
if (isset($content['usersTotal'])) {
$content['users'] = $content['usersTotal'];
unset($content['usersTotal']);
}
if (isset($content['filesStorage'])) {
$content['storage'] = $content['filesStorage'];
unset($content['filesStorage']);
}
if (isset($content['bucketsTotal'])) {
$content['buckets'] = $content['bucketsTotal'];
unset($content['bucketsTotal']);
}
return $content;
}
protected function parseUsageStorage(array $content)
{
if (isset($content['bucketsTotal'])) {
$content['bucketsCount'] = $content['bucketsTotal'];
unset($content['bucketsTotal']);
}
if (isset($content['filesTotal'])) {
$content['filesCount'] = $content['filesTotal'];
unset($content['filesTotal']);
}
if (isset($content['filesStorage'])) {
$content['storage'] = $content['filesStorage'];
unset($content['filesStorage']);
}
$attributesToInit = [
'bucketsCreate',
'bucketsRead',
'bucketsUpdate',
'bucketsDelete',
'filesCreate',
'filesRead',
'filesUpdate',
'filesDelete',
];
foreach ($attributesToInit as $attribute) {
$content[$attribute] = [];
}
return $content;
}
protected function parseUsageUsers(array $content)
{
if (isset($content['usersTotal'])) {
$content['usersCount'] = $content['usersTotal'];
unset($content['usersTotal']);
}
if (isset($content['sessionsTotal'])) {
$content['sessionsCreate'] = $content['sessionsTotal'];
unset($content['sessionsTotal']);
}
$attributesToInit = [
'usersCreate',
'usersRead',
'usersUpdate',
'usersDelete',
'sessionsProviderCreate',
'sessionsDelete',
];
foreach ($attributesToInit as $attribute) {
$content[$attribute] = [];
}
return $content;
}
protected function parseVariable(array $content)
{
if (isset($content['resourceId'])) {

View file

@ -200,492 +200,6 @@ class V16Test extends TestCase
$this->assertEquals($expected, $result);
}
public function usageBucketsProvider(): array
{
$metrics = [
[
'value' => 123,
'date' => Model::TYPE_DATETIME_EXAMPLE,
]
];
return [
'filesCount and deleted usage' => [
[
'filesTotal' => $metrics,
],
[
'filesCount' => $metrics,
'filesCreate' => [],
'filesRead' => [],
'filesUpdate' => [],
'filesDelete' => [],
],
],
];
}
/**
* @dataProvider usageBucketsProvider
*/
public function testUsageBuckets(array $content, array $expected): void
{
$model = Response::MODEL_USAGE_BUCKETS;
$result = $this->filter->parse($content, $model);
$this->assertEquals($expected, $result);
}
public function usageCollectionProvider(): array
{
$metrics = [
[
'value' => 123,
'date' => Model::TYPE_DATETIME_EXAMPLE,
]
];
return [
'documentsCount and deleted usage' => [
[
'documentsTotal' => $metrics,
],
[
'documentsCount' => $metrics,
'documentsCreate' => [],
'documentsRead' => [],
'documentsUpdate' => [],
'documentsDelete' => [],
],
],
];
}
/**
* @dataProvider usageCollectionProvider
*/
public function testUsageCollection(array $content, array $expected): void
{
$model = Response::MODEL_USAGE_COLLECTION;
$result = $this->filter->parse($content, $model);
$this->assertEquals($expected, $result);
}
public function usageDatabaseProvider(): array
{
$metrics = [
[
'value' => 123,
'date' => Model::TYPE_DATETIME_EXAMPLE,
]
];
return [
'collectionsCount and deleted usage' => [
[
'collectionsTotal' => $metrics,
],
[
'collectionsCount' => $metrics,
'documentsCreate' => [],
'documentsRead' => [],
'documentsUpdate' => [],
'documentsDelete' => [],
'collectionsCreate' => [],
'collectionsRead' => [],
'collectionsUpdate' => [],
'collectionsDelete' => [],
],
],
'documentsCount and deleted usage' => [
[
'documentsTotal' => $metrics,
],
[
'documentsCount' => $metrics,
'documentsCreate' => [],
'documentsRead' => [],
'documentsUpdate' => [],
'documentsDelete' => [],
'collectionsCreate' => [],
'collectionsRead' => [],
'collectionsUpdate' => [],
'collectionsDelete' => [],
],
],
];
}
/**
* @dataProvider usageDatabaseProvider
*/
public function testUsageDatabase(array $content, array $expected): void
{
$model = Response::MODEL_USAGE_DATABASE;
$result = $this->filter->parse($content, $model);
$this->assertEquals($expected, $result);
}
public function usageDatabasesProvider(): array
{
$metrics = [
[
'value' => 123,
'date' => Model::TYPE_DATETIME_EXAMPLE,
]
];
return [
'databasesCount and deleted usage' => [
[
'databasesTotal' => $metrics,
],
[
'databasesCount' => $metrics,
'documentsCreate' => [],
'documentsRead' => [],
'documentsUpdate' => [],
'documentsDelete' => [],
'collectionsCreate' => [],
'collectionsRead' => [],
'collectionsUpdate' => [],
'collectionsDelete' => [],
'databasesCreate' => [],
'databasesRead' => [],
'databasesUpdate' => [],
'databasesDelete' => [],
],
],
'collectionsCount and deleted usage' => [
[
'collectionsTotal' => $metrics,
],
[
'collectionsCount' => $metrics,
'documentsCreate' => [],
'documentsRead' => [],
'documentsUpdate' => [],
'documentsDelete' => [],
'collectionsCreate' => [],
'collectionsRead' => [],
'collectionsUpdate' => [],
'collectionsDelete' => [],
'databasesCreate' => [],
'databasesRead' => [],
'databasesUpdate' => [],
'databasesDelete' => [],
],
],
'documentsCount and deleted usage' => [
[
'documentsTotal' => $metrics,
],
[
'documentsCount' => $metrics,
'documentsCreate' => [],
'documentsRead' => [],
'documentsUpdate' => [],
'documentsDelete' => [],
'collectionsCreate' => [],
'collectionsRead' => [],
'collectionsUpdate' => [],
'collectionsDelete' => [],
'databasesCreate' => [],
'databasesRead' => [],
'databasesUpdate' => [],
'databasesDelete' => [],
],
],
];
}
/**
* @dataProvider usageDatabasesProvider
*/
public function testUsageDatabases(array $content, array $expected): void
{
$model = Response::MODEL_USAGE_DATABASES;
$result = $this->filter->parse($content, $model);
$this->assertEquals($expected, $result);
}
public function usageFunctionProvider(): array
{
return [
'deleted usage' => [
[
],
[
'buildsFailure' => [],
'buildsSuccess' => [],
'executionsFailure' => [],
'executionsSuccess' => [],
],
],
];
}
/**
* @dataProvider usageFunctionProvider
*/
public function testUsageFunction(array $content, array $expected): void
{
$model = Response::MODEL_USAGE_FUNCTION;
$result = $this->filter->parse($content, $model);
$this->assertEquals($expected, $result);
}
public function usageFunctionsProvider(): array
{
return [
'deleted usage' => [
[
],
[
'buildsFailure' => [],
'buildsSuccess' => [],
'executionsFailure' => [],
'executionsSuccess' => [],
],
],
];
}
/**
* @dataProvider usageFunctionsProvider
*/
public function testUsageFunctions(array $content, array $expected): void
{
$model = Response::MODEL_USAGE_FUNCTIONS;
$result = $this->filter->parse($content, $model);
$this->assertEquals($expected, $result);
}
public function usageProjectProvider(): array
{
$metrics = [
[
'value' => 123,
'date' => Model::TYPE_DATETIME_EXAMPLE,
]
];
return [
'requests usage' => [
[
'requestsTotal' => $metrics,
],
[
'requests' => $metrics,
],
],
'executions usage' => [
[
'executionsTotal' => $metrics,
],
[
'executions' => $metrics,
],
],
'documents usage' => [
[
'documentsTotal' => $metrics,
],
[
'documents' => $metrics,
],
],
'databases usage' => [
[
'databasesTotal' => $metrics,
],
[
'databases' => $metrics,
],
],
'users usage' => [
[
'usersTotal' => $metrics,
],
[
'users' => $metrics,
],
],
'storage usage' => [
[
'filesStorage' => $metrics,
],
[
'storage' => $metrics,
],
],
'buckets usage' => [
[
'bucketsTotal' => $metrics,
],
[
'buckets' => $metrics,
],
],
];
}
/**
* @dataProvider usageProjectProvider
*/
public function testUsageProject(array $content, array $expected): void
{
$model = Response::MODEL_USAGE_PROJECT;
$result = $this->filter->parse($content, $model);
$this->assertEquals($expected, $result);
}
public function usageStorageProvider(): array
{
$metrics = [
[
'value' => 123,
'date' => Model::TYPE_DATETIME_EXAMPLE,
]
];
return [
'bucketsCount usage' => [
[
'bucketsTotal' => $metrics,
],
[
'bucketsCount' => $metrics,
'bucketsCreate' => [],
'bucketsRead' => [],
'bucketsUpdate' => [],
'bucketsDelete' => [],
'filesCreate' => [],
'filesRead' => [],
'filesUpdate' => [],
'filesDelete' => [],
],
],
'filesCount usage' => [
[
'filesTotal' => $metrics,
],
[
'filesCount' => $metrics,
'bucketsCreate' => [],
'bucketsRead' => [],
'bucketsUpdate' => [],
'bucketsDelete' => [],
'filesCreate' => [],
'filesRead' => [],
'filesUpdate' => [],
'filesDelete' => [],
],
],
'storage usage' => [
[
'filesStorage' => $metrics,
],
[
'storage' => $metrics,
'bucketsCreate' => [],
'bucketsRead' => [],
'bucketsUpdate' => [],
'bucketsDelete' => [],
'filesCreate' => [],
'filesRead' => [],
'filesUpdate' => [],
'filesDelete' => [],
],
],
];
}
/**
* @dataProvider usageStorageProvider
*/
public function testUsageStorage(array $content, array $expected): void
{
$model = Response::MODEL_USAGE_STORAGE;
$result = $this->filter->parse($content, $model);
$this->assertEquals($expected, $result);
}
public function usageUsersProvider(): array
{
$metrics = [
[
'value' => 123,
'date' => Model::TYPE_DATETIME_EXAMPLE,
]
];
return [
'usersCount usage' => [
[
'usersTotal' => $metrics,
],
[
'usersCount' => $metrics,
'usersCreate' => [],
'usersRead' => [],
'usersUpdate' => [],
'usersDelete' => [],
'sessionsProviderCreate' => [],
'sessionsDelete' => [],
],
],
'sessionsCreate usage' => [
[
'sessionsTotal' => $metrics,
],
[
'sessionsCreate' => $metrics,
'usersCreate' => [],
'usersRead' => [],
'usersUpdate' => [],
'usersDelete' => [],
'sessionsProviderCreate' => [],
'sessionsDelete' => [],
],
],
];
}
/**
* @dataProvider usageUsersProvider
*/
public function testUsageUsers(array $content, array $expected): void
{
$model = Response::MODEL_USAGE_USERS;
$result = $this->filter->parse($content, $model);
$this->assertEquals($expected, $result);
}
public function usageVariableProvider(): array
{
return [
'functionId' => [
[
'resourceId' => '5e5ea5c16897e',
],
[
'functionId' => '5e5ea5c16897e',
],
],
];
}
/**
* @dataProvider usageVariableProvider
*/