1
0
Fork 0
mirror of synced 2024-07-01 20:50:49 +12:00

Merge branch 'feat-database-indexing' of https://github.com/appwrite/appwrite into feat-before-pagination

This commit is contained in:
Torsten Dittmann 2021-10-05 18:19:53 +02:00
commit cec95b5663
13 changed files with 50 additions and 61 deletions

View file

@ -94,7 +94,7 @@ App::post('/v1/projects')
'legalCity' => $legalCity, 'legalCity' => $legalCity,
'legalAddress' => $legalAddress, 'legalAddress' => $legalAddress,
'legalTaxId' => $legalTaxId, 'legalTaxId' => $legalTaxId,
'services' => new stdClass(), 'services' => new \stdClass(),
'platforms' => [], 'platforms' => [],
'webhooks' => [], 'webhooks' => [],
'keys' => [], 'keys' => [],

View file

@ -319,7 +319,7 @@ class OpenAPI3 extends Format
case 'Utopia\Validator\JSON': case 'Utopia\Validator\JSON':
case 'Utopia\Validator\Mock': case 'Utopia\Validator\Mock':
case 'Utopia\Validator\Assoc': case 'Utopia\Validator\Assoc':
$param['default'] = (empty($param['default'])) ? new stdClass() : $param['default']; $param['default'] = (empty($param['default'])) ? new \stdClass() : $param['default'];
$node['schema']['type'] = 'object'; $node['schema']['type'] = 'object';
$node['schema']['x-example'] = '{}'; $node['schema']['x-example'] = '{}';
//$node['schema']['format'] = 'json'; //$node['schema']['format'] = 'json';

View file

@ -4,7 +4,6 @@ namespace Appwrite\Specification\Format;
use Appwrite\Specification\Format; use Appwrite\Specification\Format;
use Appwrite\Template\Template; use Appwrite\Template\Template;
use stdClass;
use Utopia\Validator; use Utopia\Validator;
class Swagger2 extends Format class Swagger2 extends Format
@ -317,7 +316,7 @@ class Swagger2 extends Format
case 'Utopia\Validator\Mock': case 'Utopia\Validator\Mock':
case 'Utopia\Validator\Assoc': case 'Utopia\Validator\Assoc':
$node['type'] = 'object'; $node['type'] = 'object';
$param['default'] = (empty($param['default'])) ? new stdClass() : $param['default']; $param['default'] = (empty($param['default'])) ? new \stdClass() : $param['default'];
$node['x-example'] = '{}'; $node['x-example'] = '{}';
//$node['format'] = 'json'; //$node['format'] = 'json';
break; break;

View file

@ -59,7 +59,6 @@ use Appwrite\Utopia\Response\Model\UsageFunctions;
use Appwrite\Utopia\Response\Model\UsageProject; use Appwrite\Utopia\Response\Model\UsageProject;
use Appwrite\Utopia\Response\Model\UsageStorage; use Appwrite\Utopia\Response\Model\UsageStorage;
use Appwrite\Utopia\Response\Model\UsageUsers; use Appwrite\Utopia\Response\Model\UsageUsers;
use stdClass;
/** /**
* @method Response public function setStatusCode(int $code = 200) * @method Response public function setStatusCode(int $code = 200)
@ -328,7 +327,7 @@ class Response extends SwooleResponse
$output = self::getFilter()->parse($output, $model); $output = self::getFilter()->parse($output, $model);
} }
$this->json(!empty($output) ? $output : new stdClass()); $this->json(!empty($output) ? $output : new \stdClass());
} }
/** /**

View file

@ -4,7 +4,6 @@ namespace Appwrite\Utopia\Response\Model;
use Appwrite\Utopia\Response; use Appwrite\Utopia\Response;
use Appwrite\Utopia\Response\Model; use Appwrite\Utopia\Response\Model;
use Utopia\Database\Document;
class Collection extends Model class Collection extends Model
{ {
@ -55,14 +54,14 @@ class Collection extends Model
], ],
'description' => 'Collection attributes.', 'description' => 'Collection attributes.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true, 'array' => true,
]) ])
->addRule('indexes', [ ->addRule('indexes', [
'type' => Response::MODEL_INDEX, 'type' => Response::MODEL_INDEX,
'description' => 'Collection indexes.', 'description' => 'Collection indexes.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
; ;

View file

@ -2,7 +2,6 @@
namespace Appwrite\Utopia\Response\Model; namespace Appwrite\Utopia\Response\Model;
use stdClass;
use Appwrite\Utopia\Response; use Appwrite\Utopia\Response;
use Appwrite\Utopia\Response\Model; use Appwrite\Utopia\Response\Model;
use Utopia\Config\Config; use Utopia\Config\Config;
@ -100,28 +99,28 @@ class Project extends Model
'type' => Response::MODEL_PLATFORM, 'type' => Response::MODEL_PLATFORM,
'description' => 'List of Platforms.', 'description' => 'List of Platforms.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true, 'array' => true,
]) ])
->addRule('webhooks', [ ->addRule('webhooks', [
'type' => Response::MODEL_WEBHOOK, 'type' => Response::MODEL_WEBHOOK,
'description' => 'List of Webhooks.', 'description' => 'List of Webhooks.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true, 'array' => true,
]) ])
->addRule('keys', [ ->addRule('keys', [
'type' => Response::MODEL_KEY, 'type' => Response::MODEL_KEY,
'description' => 'List of API Keys.', 'description' => 'List of API Keys.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true, 'array' => true,
]) ])
->addRule('domains', [ ->addRule('domains', [
'type' => Response::MODEL_DOMAIN, 'type' => Response::MODEL_DOMAIN,
'description' => 'List of Domains.', 'description' => 'List of Domains.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true, 'array' => true,
]) ])
; ;

View file

@ -4,7 +4,6 @@ namespace Appwrite\Utopia\Response\Model;
use Appwrite\Utopia\Response; use Appwrite\Utopia\Response;
use Appwrite\Utopia\Response\Model; use Appwrite\Utopia\Response\Model;
use stdClass;
class UsageBuckets extends Model class UsageBuckets extends Model
{ {
@ -21,35 +20,35 @@ class UsageBuckets extends Model
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for total number of files in this bucket.', 'description' => 'Aggregated stats for total number of files in this bucket.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('files.create', [ ->addRule('files.create', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for files created.', 'description' => 'Aggregated stats for files created.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('files.read', [ ->addRule('files.read', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for files read.', 'description' => 'Aggregated stats for files read.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('files.update', [ ->addRule('files.update', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for files updated.', 'description' => 'Aggregated stats for files updated.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('files.delete', [ ->addRule('files.delete', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for files deleted.', 'description' => 'Aggregated stats for files deleted.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
; ;

View file

@ -4,7 +4,6 @@ namespace Appwrite\Utopia\Response\Model;
use Appwrite\Utopia\Response; use Appwrite\Utopia\Response;
use Appwrite\Utopia\Response\Model; use Appwrite\Utopia\Response\Model;
use stdClass;
class UsageCollection extends Model class UsageCollection extends Model
{ {
@ -21,35 +20,35 @@ class UsageCollection extends Model
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for total number of documents.', 'description' => 'Aggregated stats for total number of documents.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('documents.create', [ ->addRule('documents.create', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for documents created.', 'description' => 'Aggregated stats for documents created.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('documents.read', [ ->addRule('documents.read', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for documents read.', 'description' => 'Aggregated stats for documents read.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('documents.update', [ ->addRule('documents.update', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for documents updated.', 'description' => 'Aggregated stats for documents updated.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('documents.delete', [ ->addRule('documents.delete', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for documents deleted.', 'description' => 'Aggregated stats for documents deleted.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
; ;

View file

@ -4,7 +4,6 @@ namespace Appwrite\Utopia\Response\Model;
use Appwrite\Utopia\Response; use Appwrite\Utopia\Response;
use Appwrite\Utopia\Response\Model; use Appwrite\Utopia\Response\Model;
use stdClass;
class UsageDatabase extends Model class UsageDatabase extends Model
{ {
@ -21,70 +20,70 @@ class UsageDatabase extends Model
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for total number of documents.', 'description' => 'Aggregated stats for total number of documents.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('collections.count', [ ->addRule('collections.count', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for total number of collections.', 'description' => 'Aggregated stats for total number of collections.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('documents.create', [ ->addRule('documents.create', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for documents created.', 'description' => 'Aggregated stats for documents created.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('documents.read', [ ->addRule('documents.read', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for documents read.', 'description' => 'Aggregated stats for documents read.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('documents.update', [ ->addRule('documents.update', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for documents updated.', 'description' => 'Aggregated stats for documents updated.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('documents.delete', [ ->addRule('documents.delete', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for documents deleted.', 'description' => 'Aggregated stats for documents deleted.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('collections.create', [ ->addRule('collections.create', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for collections created.', 'description' => 'Aggregated stats for collections created.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('collections.read', [ ->addRule('collections.read', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for collections read.', 'description' => 'Aggregated stats for collections read.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('collections.update', [ ->addRule('collections.update', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for collections updated.', 'description' => 'Aggregated stats for collections updated.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('collections.delete', [ ->addRule('collections.delete', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for collections delete.', 'description' => 'Aggregated stats for collections delete.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
; ;

View file

@ -4,7 +4,6 @@ namespace Appwrite\Utopia\Response\Model;
use Appwrite\Utopia\Response; use Appwrite\Utopia\Response;
use Appwrite\Utopia\Response\Model; use Appwrite\Utopia\Response\Model;
use stdClass;
class UsageFunctions extends Model class UsageFunctions extends Model
{ {
@ -21,21 +20,21 @@ class UsageFunctions extends Model
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for function executions.', 'description' => 'Aggregated stats for function executions.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('functions.failures', [ ->addRule('functions.failures', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for function execution failures.', 'description' => 'Aggregated stats for function execution failures.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('functions.compute', [ ->addRule('functions.compute', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for function execution duration.', 'description' => 'Aggregated stats for function execution duration.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
; ;

View file

@ -4,7 +4,6 @@ namespace Appwrite\Utopia\Response\Model;
use Appwrite\Utopia\Response; use Appwrite\Utopia\Response;
use Appwrite\Utopia\Response\Model; use Appwrite\Utopia\Response\Model;
use stdClass;
class UsageProject extends Model class UsageProject extends Model
{ {
@ -21,49 +20,49 @@ class UsageProject extends Model
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for number of requests.', 'description' => 'Aggregated stats for number of requests.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('network', [ ->addRule('network', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for consumed bandwidth.', 'description' => 'Aggregated stats for consumed bandwidth.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('functions', [ ->addRule('functions', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for function executions.', 'description' => 'Aggregated stats for function executions.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('documents', [ ->addRule('documents', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for number of documents.', 'description' => 'Aggregated stats for number of documents.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('collections', [ ->addRule('collections', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for number of collections.', 'description' => 'Aggregated stats for number of collections.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('users', [ ->addRule('users', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for number of users.', 'description' => 'Aggregated stats for number of users.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('storage', [ ->addRule('storage', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for the occupied storage size (in bytes).', 'description' => 'Aggregated stats for the occupied storage size (in bytes).',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
; ;

View file

@ -4,7 +4,6 @@ namespace Appwrite\Utopia\Response\Model;
use Appwrite\Utopia\Response; use Appwrite\Utopia\Response;
use Appwrite\Utopia\Response\Model; use Appwrite\Utopia\Response\Model;
use stdClass;
class UsageStorage extends Model class UsageStorage extends Model
{ {
@ -21,14 +20,14 @@ class UsageStorage extends Model
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for the occupied storage size (in bytes).', 'description' => 'Aggregated stats for the occupied storage size (in bytes).',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('files', [ ->addRule('files', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for total number of files.', 'description' => 'Aggregated stats for total number of files.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
; ;

View file

@ -4,7 +4,6 @@ namespace Appwrite\Utopia\Response\Model;
use Appwrite\Utopia\Response; use Appwrite\Utopia\Response;
use Appwrite\Utopia\Response\Model; use Appwrite\Utopia\Response\Model;
use stdClass;
class UsageUsers extends Model class UsageUsers extends Model
{ {
@ -21,56 +20,56 @@ class UsageUsers extends Model
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for total number of users.', 'description' => 'Aggregated stats for total number of users.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('users.create', [ ->addRule('users.create', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for users created.', 'description' => 'Aggregated stats for users created.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('users.read', [ ->addRule('users.read', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for users read.', 'description' => 'Aggregated stats for users read.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('users.update', [ ->addRule('users.update', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for users updated.', 'description' => 'Aggregated stats for users updated.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('users.delete', [ ->addRule('users.delete', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for users deleted.', 'description' => 'Aggregated stats for users deleted.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('sessions.create', [ ->addRule('sessions.create', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for sessions created.', 'description' => 'Aggregated stats for sessions created.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('sessions.provider.create', [ ->addRule('sessions.provider.create', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).', 'description' => 'Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
->addRule('sessions.delete', [ ->addRule('sessions.delete', [
'type' => Response::MODEL_METRIC_LIST, 'type' => Response::MODEL_METRIC_LIST,
'description' => 'Aggregated stats for sessions deleted.', 'description' => 'Aggregated stats for sessions deleted.',
'default' => [], 'default' => [],
'example' => new stdClass, 'example' => new \stdClass,
'array' => true 'array' => true
]) ])
; ;