1
0
Fork 0
mirror of synced 2024-07-01 20:50:49 +12:00
This commit is contained in:
Eldad Fux 2021-08-16 22:24:15 +03:00
parent 3ffc69b7c4
commit cacb0f9577
4 changed files with 125 additions and 105 deletions

View file

@ -8,13 +8,13 @@ $auth = Config::getParam('auth', []);
$collections = [ $collections = [
'collections' => [ 'collections' => [
'$collection' => Database::COLLECTIONS, '$collection' => Database::METADATA,
'$id' => 'collections', '$id' => 'collections',
'name' => 'Collections', 'name' => 'Collections',
'attributes' => [ 'attributes' => [
[ [
'$id' => 'name', '$id' => 'name',
'type' => self::VAR_STRING, 'type' => Database::VAR_STRING,
'size' => 256, 'size' => 256,
'required' => true, 'required' => true,
'signed' => true, 'signed' => true,
@ -45,7 +45,7 @@ $collections = [
], ],
[ [
'$id' => 'attributes', '$id' => 'attributes',
'type' => self::VAR_STRING, 'type' => Database::VAR_STRING,
'size' => 1000000, 'size' => 1000000,
'required' => false, 'required' => false,
'signed' => true, 'signed' => true,
@ -54,7 +54,7 @@ $collections = [
], ],
[ [
'$id' => 'indexes', '$id' => 'indexes',
'type' => self::VAR_STRING, 'type' => Database::VAR_STRING,
'size' => 1000000, 'size' => 1000000,
'required' => false, 'required' => false,
'signed' => true, 'signed' => true,
@ -85,7 +85,7 @@ $collections = [
], ],
'projects' => [ 'projects' => [
'$collection' => Database::COLLECTIONS, '$collection' => Database::METADATA,
'$id' => 'projects', '$id' => 'projects',
'name' => 'Projects', 'name' => 'Projects',
'attributes' => [ 'attributes' => [
@ -311,7 +311,7 @@ $collections = [
], ],
'users' => [ 'users' => [
'$collection' => Database::COLLECTIONS, '$collection' => Database::METADATA,
'$id' => 'users', '$id' => 'users',
'name' => 'Users', 'name' => 'Users',
'attributes' => [ 'attributes' => [
@ -460,7 +460,7 @@ $collections = [
], ],
'sessions' => [ 'sessions' => [
'$collection' => Database::COLLECTIONS, '$collection' => Database::METADATA,
'$id' => 'sessions', '$id' => 'sessions',
'name' => 'Sessions', 'name' => 'Sessions',
'attributes' => [ 'attributes' => [
@ -708,7 +708,7 @@ $collections = [
], ],
'teams' => [ 'teams' => [
'$collection' => Database::COLLECTIONS, '$collection' => Database::METADATA,
'$id' => 'teams', '$id' => 'teams',
'name' => 'Teams', 'name' => 'Teams',
'attributes' => [ 'attributes' => [
@ -758,7 +758,7 @@ $collections = [
], ],
'memberships' => [ 'memberships' => [
'$collection' => Database::COLLECTIONS, '$collection' => Database::METADATA,
'$id' => 'memberships', '$id' => 'memberships',
'name' => 'Memberships', 'name' => 'Memberships',
'attributes' => [ 'attributes' => [
@ -866,7 +866,7 @@ $collections = [
], ],
'files' => [ 'files' => [
'$collection' => Database::COLLECTIONS, '$collection' => Database::METADATA,
'$id' => 'files', '$id' => 'files',
'name' => 'Files', 'name' => 'Files',
'attributes' => [ 'attributes' => [
@ -1045,7 +1045,7 @@ $collections = [
], ],
'functions' => [ 'functions' => [
'$collection' => Database::COLLECTIONS, '$collection' => Database::METADATA,
'$id' => 'functions', '$id' => 'functions',
'name' => 'Functions', 'name' => 'Functions',
'attributes' => [ 'attributes' => [
@ -1206,7 +1206,7 @@ $collections = [
], ],
'tags' => [ 'tags' => [
'$collection' => Database::COLLECTIONS, '$collection' => Database::METADATA,
'$id' => 'tags', '$id' => 'tags',
'name' => 'Tags', 'name' => 'Tags',
'attributes' => [ 'attributes' => [
@ -1279,7 +1279,7 @@ $collections = [
], ],
'executions' => [ 'executions' => [
'$collection' => Database::COLLECTIONS, '$collection' => Database::METADATA,
'$id' => 'executions', '$id' => 'executions',
'name' => 'Executions', 'name' => 'Executions',
'attributes' => [ 'attributes' => [
@ -1396,7 +1396,7 @@ $collections = [
], ],
'certificates' => [ 'certificates' => [
'$collection' => Database::COLLECTIONS, '$collection' => Database::METADATA,
'$id' => 'certificates', '$id' => 'certificates',
'name' => 'Certificates', 'name' => 'Certificates',
'attributes' => [ 'attributes' => [

View file

@ -1,12 +1,10 @@
<?php <?php
use Appwrite\Database\Validator\CustomId;
use Utopia\App; use Utopia\App;
use Utopia\Exception; use Utopia\Exception;
use Utopia\Validator\Boolean; use Utopia\Validator\Boolean;
use Utopia\Validator\FloatValidator; use Utopia\Validator\FloatValidator;
use Utopia\Validator\Integer; use Utopia\Validator\Integer;
use Utopia\Validator\Numeric;
use Utopia\Validator\Range; use Utopia\Validator\Range;
use Utopia\Validator\WhiteList; use Utopia\Validator\WhiteList;
use Utopia\Validator\Text; use Utopia\Validator\Text;
@ -20,13 +18,14 @@ use Utopia\Database\Validator\Structure;
use Utopia\Database\Validator\UID; use Utopia\Database\Validator\UID;
use Utopia\Database\Exception\Authorization as AuthorizationException; use Utopia\Database\Exception\Authorization as AuthorizationException;
use Utopia\Database\Exception\Structure as StructureException; use Utopia\Database\Exception\Structure as StructureException;
use Appwrite\Utopia\Response;
use Utopia\Database\Database; use Utopia\Database\Database;
use Utopia\Database\Document; use Utopia\Database\Document;
use Utopia\Database\Exception\Duplicate; use Utopia\Database\Exception\Duplicate;
use Utopia\Database\Query; use Utopia\Database\Query;
use Appwrite\Utopia\Response;
use Appwrite\Database\Validator\CustomId;
$attributesCallback = function ($attribute, $response, $dbForExternal, $database, $audits) { $attributesCallback = function ($attribute, $response, $dbForInternal, $dbForExternal, $database, $audits) {
/** @var Utopia\Database\Document $document*/ /** @var Utopia\Database\Document $document*/
/** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Utopia\Response $response */
/** @var Utopia\Database\Database $dbForExternal*/ /** @var Utopia\Database\Database $dbForExternal*/
@ -46,7 +45,7 @@ $attributesCallback = function ($attribute, $response, $dbForExternal, $database
$format = $attribute->getAttribute('format', null); $format = $attribute->getAttribute('format', null);
$filters = $attribute->getAttribute('filters', []); // filters are hidden from the endpoint $filters = $attribute->getAttribute('filters', []); // filters are hidden from the endpoint
$collection = $dbForExternal->getCollection($collectionId); $collection = $dbForInternal->getDocument('collections', $collectionId);
if ($collection->isEmpty()) { if ($collection->isEmpty()) {
throw new Exception('Collection not found', 404); throw new Exception('Collection not found', 404);
@ -85,7 +84,7 @@ $attributesCallback = function ($attribute, $response, $dbForExternal, $database
} }
} }
$success = $dbForExternal->addAttributeInQueue($collectionId, $attributeId, $type, $size, $required, $default, $signed, $array, $format, $filters); $dbForExternal->addAttributeInQueue($collectionId, $attributeId, $type, $size, $required, $default, $signed, $array, $format, $filters);
// Database->addAttributeInQueue() does not return a document // Database->addAttributeInQueue() does not return a document
// So we need to create one for the response // So we need to create one for the response
@ -204,8 +203,8 @@ App::get('/v1/database/collections')
} }
$response->dynamic(new Document([ $response->dynamic(new Document([
'collections' => $dbForInternal->find(Database::COLLECTIONS, $queries, $limit, $offset, ['_id'], [$orderType]), 'collections' => $dbForInternal->find('collections', $queries, $limit, $offset, ['_id'], [$orderType]),
'sum' => $dbForInternal->count(Database::COLLECTIONS, $queries, APP_LIMIT_COUNT), 'sum' => $dbForInternal->count('collections', $queries, APP_LIMIT_COUNT),
]), Response::MODEL_COLLECTION_LIST); ]), Response::MODEL_COLLECTION_LIST);
}); });
@ -360,11 +359,13 @@ App::post('/v1/database/collections/:collectionId/attributes/string')
->param('default', null, new Text(0), 'Default value for attribute when not provided. Cannot be set when attribute is required.', true) ->param('default', null, new Text(0), 'Default value for attribute when not provided. Cannot be set when attribute is required.', true)
->param('array', false, new Boolean(), 'Is attribute an array?', true) ->param('array', false, new Boolean(), 'Is attribute an array?', true)
->inject('response') ->inject('response')
->inject('dbForInternal')
->inject('dbForExternal') ->inject('dbForExternal')
->inject('database') ->inject('database')
->inject('audits') ->inject('audits')
->action(function ($collectionId, $attributeId, $size, $required, $default, $array, $response, $dbForExternal, $database, $audits) use ($attributesCallback) { ->action(function ($collectionId, $attributeId, $size, $required, $default, $array, $response, $dbForInternal, $dbForExternal, $database, $audits) use ($attributesCallback) {
/** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Utopia\Response $response */
/** @var Utopia\Database\Database $dbForInternal*/
/** @var Utopia\Database\Database $dbForExternal*/ /** @var Utopia\Database\Database $dbForExternal*/
/** @var Appwrite\Event\Event $database */ /** @var Appwrite\Event\Event $database */
/** @var Appwrite\Event\Event $audits */ /** @var Appwrite\Event\Event $audits */
@ -377,7 +378,7 @@ App::post('/v1/database/collections/:collectionId/attributes/string')
'required' => $required, 'required' => $required,
'default' => $default, 'default' => $default,
'array' => $array, 'array' => $array,
]), $response, $dbForExternal, $database, $audits); ]), $response, $dbForInternal, $dbForExternal, $database, $audits);
}); });
App::post('/v1/database/collections/:collectionId/attributes/email') App::post('/v1/database/collections/:collectionId/attributes/email')
@ -398,11 +399,13 @@ App::post('/v1/database/collections/:collectionId/attributes/email')
->param('default', null, new Text(0), 'Default value for attribute when not provided. Cannot be set when attribute is required.', true) ->param('default', null, new Text(0), 'Default value for attribute when not provided. Cannot be set when attribute is required.', true)
->param('array', false, new Boolean(), 'Is attribute an array?', true) ->param('array', false, new Boolean(), 'Is attribute an array?', true)
->inject('response') ->inject('response')
->inject('dbForInternal')
->inject('dbForExternal') ->inject('dbForExternal')
->inject('database') ->inject('database')
->inject('audits') ->inject('audits')
->action(function ($collectionId, $attributeId, $required, $default, $array, $response, $dbForExternal, $database, $audits) use ($attributesCallback) { ->action(function ($collectionId, $attributeId, $required, $default, $array, $response, $dbForInternal, $dbForExternal, $database, $audits) use ($attributesCallback) {
/** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Utopia\Response $response */
/** @var Utopia\Database\Database $dbForInternal*/
/** @var Utopia\Database\Database $dbForExternal*/ /** @var Utopia\Database\Database $dbForExternal*/
/** @var Appwrite\Event\Event $database */ /** @var Appwrite\Event\Event $database */
/** @var Appwrite\Event\Event $audits */ /** @var Appwrite\Event\Event $audits */
@ -416,7 +419,7 @@ App::post('/v1/database/collections/:collectionId/attributes/email')
'default' => $default, 'default' => $default,
'array' => $array, 'array' => $array,
'format' => \json_encode(['name'=>'email']), 'format' => \json_encode(['name'=>'email']),
]), $response, $dbForExternal, $database, $audits); ]), $response, $dbForInternal, $dbForExternal, $database, $audits);
}); });
App::post('/v1/database/collections/:collectionId/attributes/ip') App::post('/v1/database/collections/:collectionId/attributes/ip')
@ -437,11 +440,13 @@ App::post('/v1/database/collections/:collectionId/attributes/ip')
->param('default', null, new Text(0), 'Default value for attribute when not provided. Cannot be set when attribute is required.', true) ->param('default', null, new Text(0), 'Default value for attribute when not provided. Cannot be set when attribute is required.', true)
->param('array', false, new Boolean(), 'Is attribute an array?', true) ->param('array', false, new Boolean(), 'Is attribute an array?', true)
->inject('response') ->inject('response')
->inject('dbForInternal')
->inject('dbForExternal') ->inject('dbForExternal')
->inject('database') ->inject('database')
->inject('audits') ->inject('audits')
->action(function ($collectionId, $attributeId, $required, $default, $array, $response, $dbForExternal, $database, $audits) use ($attributesCallback) { ->action(function ($collectionId, $attributeId, $required, $default, $array, $response, $dbForInternal, $dbForExternal, $database, $audits) use ($attributesCallback) {
/** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Utopia\Response $response */
/** @var Utopia\Database\Database $dbForInternal*/
/** @var Utopia\Database\Database $dbForExternal*/ /** @var Utopia\Database\Database $dbForExternal*/
/** @var Appwrite\Event\Event $database */ /** @var Appwrite\Event\Event $database */
/** @var Appwrite\Event\Event $audits */ /** @var Appwrite\Event\Event $audits */
@ -455,7 +460,7 @@ App::post('/v1/database/collections/:collectionId/attributes/ip')
'default' => $default, 'default' => $default,
'array' => $array, 'array' => $array,
'format' => \json_encode(['name'=>'ip']), 'format' => \json_encode(['name'=>'ip']),
]), $response, $dbForExternal, $database, $audits); ]), $response, $dbForInternal, $dbForExternal, $database, $audits);
}); });
App::post('/v1/database/collections/:collectionId/attributes/url') App::post('/v1/database/collections/:collectionId/attributes/url')
@ -477,11 +482,13 @@ App::post('/v1/database/collections/:collectionId/attributes/url')
->param('default', null, new Text(0), 'Default value for attribute when not provided. Cannot be set when attribute is required.', true) ->param('default', null, new Text(0), 'Default value for attribute when not provided. Cannot be set when attribute is required.', true)
->param('array', false, new Boolean(), 'Is attribute an array?', true) ->param('array', false, new Boolean(), 'Is attribute an array?', true)
->inject('response') ->inject('response')
->inject('dbForInternal')
->inject('dbForExternal') ->inject('dbForExternal')
->inject('database') ->inject('database')
->inject('audits') ->inject('audits')
->action(function ($collectionId, $attributeId, $size, $required, $default, $array, $response, $dbForExternal, $database, $audits) use ($attributesCallback) { ->action(function ($collectionId, $attributeId, $size, $required, $default, $array, $response, $dbForInternal, $dbForExternal, $database, $audits) use ($attributesCallback) {
/** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Utopia\Response $response */
/** @var Utopia\Database\Database $dbForInternal*/
/** @var Utopia\Database\Database $dbForExternal*/ /** @var Utopia\Database\Database $dbForExternal*/
/** @var Appwrite\Event\Event $database */ /** @var Appwrite\Event\Event $database */
/** @var Appwrite\Event\Event $audits */ /** @var Appwrite\Event\Event $audits */
@ -495,7 +502,7 @@ App::post('/v1/database/collections/:collectionId/attributes/url')
'default' => $default, 'default' => $default,
'array' => $array, 'array' => $array,
'format' => \json_encode(['name'=>'url']), 'format' => \json_encode(['name'=>'url']),
]), $response, $dbForExternal, $database, $audits); ]), $response, $dbForInternal, $dbForExternal, $database, $audits);
}); });
App::post('/v1/database/collections/:collectionId/attributes/integer') App::post('/v1/database/collections/:collectionId/attributes/integer')
@ -518,11 +525,13 @@ App::post('/v1/database/collections/:collectionId/attributes/integer')
->param('default', null, new Integer(), 'Default value for attribute when not provided. Cannot be set when attribute is required.', true) ->param('default', null, new Integer(), 'Default value for attribute when not provided. Cannot be set when attribute is required.', true)
->param('array', false, new Boolean(), 'Is attribute an array?', true) ->param('array', false, new Boolean(), 'Is attribute an array?', true)
->inject('response') ->inject('response')
->inject('dbForInternal')
->inject('dbForExternal') ->inject('dbForExternal')
->inject('database') ->inject('database')
->inject('audits') ->inject('audits')
->action(function ($collectionId, $attributeId, $required, $min, $max, $default, $array, $response, $dbForExternal, $database, $audits) use ($attributesCallback) { ->action(function ($collectionId, $attributeId, $required, $min, $max, $default, $array, $response, $dbForInternal, $dbForExternal, $database, $audits) use ($attributesCallback) {
/** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Utopia\Response $response */
/** @var Utopia\Database\Database $dbForInternal*/
/** @var Utopia\Database\Database $dbForExternal*/ /** @var Utopia\Database\Database $dbForExternal*/
/** @var Appwrite\Event\Event $database */ /** @var Appwrite\Event\Event $database */
/** @var Appwrite\Event\Event $audits */ /** @var Appwrite\Event\Event $audits */
@ -540,7 +549,7 @@ App::post('/v1/database/collections/:collectionId/attributes/integer')
'min' => $min, 'min' => $min,
'max' => $max, 'max' => $max,
]), ]),
]), $response, $dbForExternal, $database, $audits); ]), $response, $dbForInternal, $dbForExternal, $database, $audits);
}); });
App::post('/v1/database/collections/:collectionId/attributes/float') App::post('/v1/database/collections/:collectionId/attributes/float')
@ -563,11 +572,13 @@ App::post('/v1/database/collections/:collectionId/attributes/float')
->param('default', null, new FloatValidator(), 'Default value for attribute when not provided. Cannot be set when attribute is required.', true) ->param('default', null, new FloatValidator(), 'Default value for attribute when not provided. Cannot be set when attribute is required.', true)
->param('array', false, new Boolean(), 'Is attribute an array?', true) ->param('array', false, new Boolean(), 'Is attribute an array?', true)
->inject('response') ->inject('response')
->inject('dbForInternal')
->inject('dbForExternal') ->inject('dbForExternal')
->inject('database') ->inject('database')
->inject('audits') ->inject('audits')
->action(function ($collectionId, $attributeId, $required, $min, $max, $default, $array, $response, $dbForExternal, $database, $audits) use ($attributesCallback) { ->action(function ($collectionId, $attributeId, $required, $min, $max, $default, $array, $response, $dbForInternal, $dbForExternal, $database, $audits) use ($attributesCallback) {
/** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Utopia\Response $response */
/** @var Utopia\Database\Database $dbForInternal*/
/** @var Utopia\Database\Database $dbForExternal*/ /** @var Utopia\Database\Database $dbForExternal*/
/** @var Appwrite\Event\Event $database */ /** @var Appwrite\Event\Event $database */
/** @var Appwrite\Event\Event $audits */ /** @var Appwrite\Event\Event $audits */
@ -585,7 +596,7 @@ App::post('/v1/database/collections/:collectionId/attributes/float')
'min' => $min, 'min' => $min,
'max' => $max, 'max' => $max,
]), ]),
]), $response, $dbForExternal, $database, $audits); ]), $response, $dbForInternal, $dbForExternal, $database, $audits);
}); });
App::post('/v1/database/collections/:collectionId/attributes/boolean') App::post('/v1/database/collections/:collectionId/attributes/boolean')
@ -606,11 +617,13 @@ App::post('/v1/database/collections/:collectionId/attributes/boolean')
->param('default', null, new Boolean(), 'Default value for attribute when not provided. Cannot be set when attribute is required.', true) ->param('default', null, new Boolean(), 'Default value for attribute when not provided. Cannot be set when attribute is required.', true)
->param('array', false, new Boolean(), 'Is attribute an array?', true) ->param('array', false, new Boolean(), 'Is attribute an array?', true)
->inject('response') ->inject('response')
->inject('dbForInternal')
->inject('dbForExternal') ->inject('dbForExternal')
->inject('database') ->inject('database')
->inject('audits') ->inject('audits')
->action(function ($collectionId, $attributeId, $required, $default, $array, $response, $dbForExternal, $database, $audits) use ($attributesCallback) { ->action(function ($collectionId, $attributeId, $required, $default, $array, $response, $dbForInternal, $dbForExternal, $database, $audits) use ($attributesCallback) {
/** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Utopia\Response $response */
/** @var Utopia\Database\Database $dbForInternal*/
/** @var Utopia\Database\Database $dbForExternal*/ /** @var Utopia\Database\Database $dbForExternal*/
/** @var Appwrite\Event\Event $database */ /** @var Appwrite\Event\Event $database */
/** @var Appwrite\Event\Event $audits */ /** @var Appwrite\Event\Event $audits */
@ -623,7 +636,7 @@ App::post('/v1/database/collections/:collectionId/attributes/boolean')
'required' => $required, 'required' => $required,
'default' => $default, 'default' => $default,
'array' => $array, 'array' => $array,
]), $response, $dbForExternal, $database, $audits); ]), $response, $dbForInternal, $dbForExternal, $database, $audits);
}); });
App::get('/v1/database/collections/:collectionId/attributes') App::get('/v1/database/collections/:collectionId/attributes')
@ -639,12 +652,12 @@ App::get('/v1/database/collections/:collectionId/attributes')
->label('sdk.response.model', Response::MODEL_ATTRIBUTE_LIST) ->label('sdk.response.model', Response::MODEL_ATTRIBUTE_LIST)
->param('collectionId', '', new UID(), 'Collection unique ID. You can create a new collection using the Database service [server integration](/docs/server/database#createCollection).') ->param('collectionId', '', new UID(), 'Collection unique ID. You can create a new collection using the Database service [server integration](/docs/server/database#createCollection).')
->inject('response') ->inject('response')
->inject('dbForExternal') ->inject('dbForInternal')
->action(function ($collectionId, $response, $dbForExternal) { ->action(function ($collectionId, $response, $dbForInternal) {
/** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Utopia\Response $response */
/** @var Utopia\Database\Database $dbForExternal */ /** @var Utopia\Database\Database $dbForInternal */
$collection = $dbForExternal->getCollection($collectionId); $collection = $dbForInternal->getDocument('collections', $collectionId);
if ($collection->isEmpty()) { if ($collection->isEmpty()) {
throw new Exception('Collection not found', 404); throw new Exception('Collection not found', 404);
@ -678,12 +691,12 @@ App::get('/v1/database/collections/:collectionId/attributes/:attributeId')
->param('collectionId', '', new UID(), 'Collection unique ID. You can create a new collection using the Database service [server integration](/docs/server/database#createCollection).') ->param('collectionId', '', new UID(), 'Collection unique ID. You can create a new collection using the Database service [server integration](/docs/server/database#createCollection).')
->param('attributeId', '', new Key(), 'Attribute ID.') ->param('attributeId', '', new Key(), 'Attribute ID.')
->inject('response') ->inject('response')
->inject('dbForExternal') ->inject('dbForInternal')
->action(function ($collectionId, $attributeId, $response, $dbForExternal) { ->action(function ($collectionId, $attributeId, $response, $dbForInternal) {
/** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Utopia\Response $response */
/** @var Utopia\Database\Database $dbForExternal */ /** @var Utopia\Database\Database $dbForInternal */
$collection = $dbForExternal->getCollection($collectionId); $collection = $dbForInternal->getDocument('collections', $collectionId);
if (empty($collection)) { if (empty($collection)) {
throw new Exception('Collection not found', 404); throw new Exception('Collection not found', 404);
@ -719,18 +732,18 @@ App::delete('/v1/database/collections/:collectionId/attributes/:attributeId')
->param('collectionId', '', new UID(), 'Collection unique ID. You can create a new collection using the Database service [server integration](/docs/server/database#createCollection).') ->param('collectionId', '', new UID(), 'Collection unique ID. You can create a new collection using the Database service [server integration](/docs/server/database#createCollection).')
->param('attributeId', '', new Key(), 'Attribute ID.') ->param('attributeId', '', new Key(), 'Attribute ID.')
->inject('response') ->inject('response')
->inject('dbForExternal') ->inject('dbForInternal')
->inject('database') ->inject('database')
->inject('events') ->inject('events')
->inject('audits') ->inject('audits')
->action(function ($collectionId, $attributeId, $response, $dbForExternal, $database, $events, $audits) { ->action(function ($collectionId, $attributeId, $response, $dbForInternal, $database, $events, $audits) {
/** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Utopia\Response $response */
/** @var Utopia\Database\Database $dbForExternal */ /** @var Utopia\Database\Database $dbForInternal */
/** @var Appwrite\Event\Event $database */ /** @var Appwrite\Event\Event $database */
/** @var Appwrite\Event\Event $events */ /** @var Appwrite\Event\Event $events */
/** @var Appwrite\Event\Event $audits */ /** @var Appwrite\Event\Event $audits */
$collection = $dbForExternal->getCollection($collectionId); $collection = $dbForInternal->getDocument('collections', $collectionId);
if ($collection->isEmpty()) { if ($collection->isEmpty()) {
throw new Exception('Collection not found', 404); throw new Exception('Collection not found', 404);
@ -788,16 +801,16 @@ App::post('/v1/database/collections/:collectionId/indexes')
->param('attributes', null, new ArrayList(new Key()), 'Array of attributes to index.') ->param('attributes', null, new ArrayList(new Key()), 'Array of attributes to index.')
->param('orders', [], new ArrayList(new WhiteList(['ASC', 'DESC'], false, Database::VAR_STRING)), 'Array of index orders.', true) ->param('orders', [], new ArrayList(new WhiteList(['ASC', 'DESC'], false, Database::VAR_STRING)), 'Array of index orders.', true)
->inject('response') ->inject('response')
->inject('dbForExternal') ->inject('dbForInternal')
->inject('database') ->inject('database')
->inject('audits') ->inject('audits')
->action(function ($collectionId, $id, $type, $attributes, $orders, $response, $dbForExternal, $database, $audits) { ->action(function ($collectionId, $id, $type, $attributes, $orders, $response, $dbForInternal, $database, $audits) {
/** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Utopia\Response $response */
/** @var Utopia\Database\Database $dbForExternal */ /** @var Utopia\Database\Database $dbForInternal */
/** @var Appwrite\Event\Event $database */ /** @var Appwrite\Event\Event $database */
/** @var Appwrite\Event\Event $audits */ /** @var Appwrite\Event\Event $audits */
$collection = $dbForExternal->getCollection($collectionId); $collection = $dbForInternal->getDocument('collections', $collectionId);
if ($collection->isEmpty()) { if ($collection->isEmpty()) {
throw new Exception('Collection not found', 404); throw new Exception('Collection not found', 404);
@ -827,7 +840,7 @@ App::post('/v1/database/collections/:collectionId/indexes')
$lengths[$key] = ($attributeType === Database::VAR_STRING) ? $attributeSize : null; $lengths[$key] = ($attributeType === Database::VAR_STRING) ? $attributeSize : null;
} }
$success = $dbForExternal->addIndexInQueue($collectionId, $id, $type, $attributes, $lengths, $orders); $dbForInternal->addIndexInQueue($collectionId, $id, $type, $attributes, $lengths, $orders);
// Database->createIndex() does not return a document // Database->createIndex() does not return a document
// So we need to create one for the response // So we need to create one for the response
@ -871,12 +884,12 @@ App::get('/v1/database/collections/:collectionId/indexes')
->label('sdk.response.model', Response::MODEL_INDEX_LIST) ->label('sdk.response.model', Response::MODEL_INDEX_LIST)
->param('collectionId', '', new UID(), 'Collection unique ID. You can create a new collection using the Database service [server integration](/docs/server/database#createCollection).') ->param('collectionId', '', new UID(), 'Collection unique ID. You can create a new collection using the Database service [server integration](/docs/server/database#createCollection).')
->inject('response') ->inject('response')
->inject('dbForExternal') ->inject('dbForInternal')
->action(function ($collectionId, $response, $dbForExternal) { ->action(function ($collectionId, $response, $dbForInternal) {
/** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Utopia\Response $response */
/** @var Utopia\Database\Database $dbForExternal */ /** @var Utopia\Database\Database $dbForInternal */
$collection = $dbForExternal->getCollection($collectionId); $collection = $dbForInternal->getDocument('collections', $collectionId);
if ($collection->isEmpty()) { if ($collection->isEmpty()) {
throw new Exception('Collection not found', 404); throw new Exception('Collection not found', 404);
@ -910,12 +923,12 @@ App::get('/v1/database/collections/:collectionId/indexes/:indexId')
->param('collectionId', '', new UID(), 'Collection unique ID. You can create a new collection using the Database service [server integration](/docs/server/database#createCollection).') ->param('collectionId', '', new UID(), 'Collection unique ID. You can create a new collection using the Database service [server integration](/docs/server/database#createCollection).')
->param('indexId', null, new Key(), 'Index ID.') ->param('indexId', null, new Key(), 'Index ID.')
->inject('response') ->inject('response')
->inject('dbForExternal') ->inject('dbForInternal')
->action(function ($collectionId, $indexId, $response, $dbForExternal) { ->action(function ($collectionId, $indexId, $response, $dbForInternal) {
/** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Utopia\Response $response */
/** @var Utopia\Database\Database $dbForExternal */ /** @var Utopia\Database\Database $dbForInternal */
$collection = $dbForExternal->getCollection($collectionId); $collection = $dbForInternal->getDocument('collections', $collectionId);
if ($collection->isEmpty()) { if ($collection->isEmpty()) {
throw new Exception('Collection not found', 404); throw new Exception('Collection not found', 404);
@ -923,7 +936,7 @@ App::get('/v1/database/collections/:collectionId/indexes/:indexId')
$indexes = $collection->getAttribute('indexes'); $indexes = $collection->getAttribute('indexes');
// // Search for index // Search for index
$indexIndex = array_search($indexId, array_column($indexes, '$id')); $indexIndex = array_search($indexId, array_column($indexes, '$id'));
if ($indexIndex === false) { if ($indexIndex === false) {
@ -951,18 +964,18 @@ App::delete('/v1/database/collections/:collectionId/indexes/:indexId')
->param('collectionId', null, new UID(), 'Collection unique ID. You can create a new collection using the Database service [server integration](/docs/server/database#createCollection).') ->param('collectionId', null, new UID(), 'Collection unique ID. You can create a new collection using the Database service [server integration](/docs/server/database#createCollection).')
->param('indexId', '', new Key(), 'Index ID.') ->param('indexId', '', new Key(), 'Index ID.')
->inject('response') ->inject('response')
->inject('dbForExternal') ->inject('dbForInternal')
->inject('database') ->inject('database')
->inject('events') ->inject('events')
->inject('audits') ->inject('audits')
->action(function ($collectionId, $indexId, $response, $dbForExternal, $database, $events, $audits) { ->action(function ($collectionId, $indexId, $response, $dbForInternal, $database, $events, $audits) {
/** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Utopia\Response $response */
/** @var Utopia\Database\Database $dbForExternal */ /** @var Utopia\Database\Database $dbForInternal */
/** @var Appwrite\Event\Event $database */ /** @var Appwrite\Event\Event $database */
/** @var Appwrite\Event\Event $events */ /** @var Appwrite\Event\Event $events */
/** @var Appwrite\Event\Event $audits */ /** @var Appwrite\Event\Event $audits */
$collection = $dbForExternal->getCollection($collectionId); $collection = $dbForInternal->getDocument('collections', $collectionId);
if ($collection->isEmpty()) { if ($collection->isEmpty()) {
throw new Exception('Collection not found', 404); throw new Exception('Collection not found', 404);
@ -1017,11 +1030,13 @@ App::post('/v1/database/collections/:collectionId/documents')
->param('read', null, new Permissions(), 'An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](/docs/permissions) and get a full list of available permissions.', true) ->param('read', null, new Permissions(), 'An array of strings with read permissions. By default only the current user is granted with read permissions. [learn more about permissions](/docs/permissions) and get a full list of available permissions.', true)
->param('write', null, new Permissions(), 'An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](/docs/permissions) and get a full list of available permissions.', true) ->param('write', null, new Permissions(), 'An array of strings with write permissions. By default only the current user is granted with write permissions. [learn more about permissions](/docs/permissions) and get a full list of available permissions.', true)
->inject('response') ->inject('response')
->inject('dbForInternal')
->inject('dbForExternal') ->inject('dbForExternal')
->inject('user') ->inject('user')
->inject('audits') ->inject('audits')
->action(function ($documentId, $collectionId, $data, $read, $write, $response, $dbForExternal, $user, $audits) { ->action(function ($documentId, $collectionId, $data, $read, $write, $response, $dbForInternal, $dbForExternal, $user, $audits) {
/** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Utopia\Response $response */
/** @var Utopia\Database\Database $dbForInternal */
/** @var Utopia\Database\Database $dbForExternal */ /** @var Utopia\Database\Database $dbForExternal */
/** @var Utopia\Database\Document $user */ /** @var Utopia\Database\Document $user */
/** @var Appwrite\Event\Event $audits */ /** @var Appwrite\Event\Event $audits */
@ -1036,7 +1051,7 @@ App::post('/v1/database/collections/:collectionId/documents')
throw new Exception('$id is not allowed for creating new documents, try update instead', 400); throw new Exception('$id is not allowed for creating new documents, try update instead', 400);
} }
$collection = $dbForExternal->getCollection($collectionId); $collection = $dbForInternal->getDocument('collections', $collectionId);
if ($collection->isEmpty()) { if ($collection->isEmpty()) {
throw new Exception('Collection not found', 404); throw new Exception('Collection not found', 404);
@ -1082,12 +1097,13 @@ App::get('/v1/database/collections/:collectionId/documents')
->param('orderAttributes', [], new ArrayList(new Text(128)), 'Array of attributes used to sort results.', true) ->param('orderAttributes', [], new ArrayList(new Text(128)), 'Array of attributes used to sort results.', true)
->param('orderTypes', [], new ArrayList(new WhiteList(['DESC', 'ASC'], true)), 'Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.', true) ->param('orderTypes', [], new ArrayList(new WhiteList(['DESC', 'ASC'], true)), 'Array of order directions for sorting attribtues. Possible values are DESC for descending order, or ASC for ascending order.', true)
->inject('response') ->inject('response')
->inject('dbForInternal')
->inject('dbForExternal') ->inject('dbForExternal')
->action(function ($collectionId, $queries, $limit, $offset, $orderAttributes, $orderTypes, $response, $dbForExternal) { ->action(function ($collectionId, $queries, $limit, $offset, $orderAttributes, $orderTypes, $response, $dbForInternal, $dbForExternal) {
/** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Utopia\Response $response */
/** @var Utopia\Database\Database $dbForExternal */ /** @var Utopia\Database\Database $dbForExternal */
$collection = $dbForExternal->getCollection($collectionId); $collection = $dbForInternal->getDocument('collections', $collectionId);
if ($collection->isEmpty()) { if ($collection->isEmpty()) {
throw new Exception('Collection not found', 404); throw new Exception('Collection not found', 404);
@ -1109,11 +1125,9 @@ App::get('/v1/database/collections/:collectionId/documents')
throw new Exception($validator->getDescription(), 400); throw new Exception($validator->getDescription(), 400);
} }
$documents = $dbForExternal->find($collectionId, $queries, $limit, $offset, $orderAttributes, $orderTypes);
$response->dynamic(new Document([ $response->dynamic(new Document([
'sum' => \count($documents), 'sum' => $dbForInternal->find($collectionId, $queries, $limit, $offset, ['_id'], $orderTypes),
'documents' => $documents, 'documents' => $dbForExternal->find($collectionId, $queries, $limit, $offset, $orderAttributes, $orderTypes),
]), Response::MODEL_DOCUMENT_LIST); ]), Response::MODEL_DOCUMENT_LIST);
}); });
@ -1131,12 +1145,14 @@ App::get('/v1/database/collections/:collectionId/documents/:documentId')
->param('collectionId', null, new UID(), 'Collection unique ID. You can create a new collection using the Database service [server integration](/docs/server/database#createCollection).') ->param('collectionId', null, new UID(), 'Collection unique ID. You can create a new collection using the Database service [server integration](/docs/server/database#createCollection).')
->param('documentId', null, new UID(), 'Document unique ID.') ->param('documentId', null, new UID(), 'Document unique ID.')
->inject('response') ->inject('response')
->inject('$dbForInternal')
->inject('dbForExternal') ->inject('dbForExternal')
->action(function ($collectionId, $documentId, $response, $dbForExternal) { ->action(function ($collectionId, $documentId, $response, $dbForInternal, $dbForExternal) {
/** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Utopia\Response $response */
/** @var Utopia\Database\Database $$dbForInternal */
/** @var Utopia\Database\Database $dbForExternal */ /** @var Utopia\Database\Database $dbForExternal */
$collection = $dbForExternal->getCollection($collectionId); $collection = $dbForInternal->getDocument('collections', $collectionId);
if ($collection->isEmpty()) { if ($collection->isEmpty()) {
throw new Exception('Collection not found', 404); throw new Exception('Collection not found', 404);
@ -1169,14 +1185,16 @@ App::patch('/v1/database/collections/:collectionId/documents/:documentId')
->param('read', null, new Permissions(), 'An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](/docs/permissions) and get a full list of available permissions.', true) ->param('read', null, new Permissions(), 'An array of strings with read permissions. By default inherits the existing read permissions. [learn more about permissions](/docs/permissions) and get a full list of available permissions.', true)
->param('write', null, new Permissions(), 'An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](/docs/permissions) and get a full list of available permissions.', true) ->param('write', null, new Permissions(), 'An array of strings with write permissions. By default inherits the existing write permissions. [learn more about permissions](/docs/permissions) and get a full list of available permissions.', true)
->inject('response') ->inject('response')
->inject('dbForInternal')
->inject('dbForExternal') ->inject('dbForExternal')
->inject('audits') ->inject('audits')
->action(function ($collectionId, $documentId, $data, $read, $write, $response, $dbForExternal, $audits) { ->action(function ($collectionId, $documentId, $data, $read, $write, $response, $dbForInternal, $dbForExternal, $audits) {
/** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Utopia\Response $response */
/** @var Utopia\Database\Database $dbForInternal */
/** @var Utopia\Database\Database $dbForExternal */ /** @var Utopia\Database\Database $dbForExternal */
/** @var Appwrite\Event\Event $audits */ /** @var Appwrite\Event\Event $audits */
$collection = $dbForExternal->getCollection($collectionId); $collection = $dbForInternal->getDocument('collections', $collectionId);
if ($collection->isEmpty()) { if ($collection->isEmpty()) {
throw new Exception('Collection not found', 404); throw new Exception('Collection not found', 404);
@ -1236,16 +1254,17 @@ App::delete('/v1/database/collections/:collectionId/documents/:documentId')
->param('collectionId', null, new UID(), 'Collection unique ID. You can create a new collection using the Database service [server integration](/docs/server/database#createCollection).') ->param('collectionId', null, new UID(), 'Collection unique ID. You can create a new collection using the Database service [server integration](/docs/server/database#createCollection).')
->param('documentId', null, new UID(), 'Document unique ID.') ->param('documentId', null, new UID(), 'Document unique ID.')
->inject('response') ->inject('response')
->inject('dbForInternal')
->inject('dbForExternal') ->inject('dbForExternal')
->inject('events') ->inject('events')
->inject('audits') ->inject('audits')
->action(function ($collectionId, $documentId, $response, $dbForExternal, $events, $audits) { ->action(function ($collectionId, $documentId, $response, $dbForInternal, $dbForExternal, $events, $audits) {
/** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Utopia\Response $response */
/** @var Utopia\Database\Database $dbForExternal */ /** @var Utopia\Database\Database $dbForExternal */
/** @var Appwrite\Event\Event $events */ /** @var Appwrite\Event\Event $events */
/** @var Appwrite\Event\Event $audits */ /** @var Appwrite\Event\Event $audits */
$collection = $dbForExternal->getCollection($collectionId); $collection = $dbForInternal->getDocument('collections', $collectionId);
if ($collection->isEmpty()) { if ($collection->isEmpty()) {
throw new Exception('Collection not found', 404); throw new Exception('Collection not found', 404);
@ -1257,7 +1276,7 @@ App::delete('/v1/database/collections/:collectionId/documents/:documentId')
throw new Exception('No document found', 404); throw new Exception('No document found', 404);
} }
$success = $dbForExternal->deleteDocument($collectionId, $documentId); $dbForExternal->deleteDocument($collectionId, $documentId);
$events $events
->setParam('eventData', $response->output($document, Response::MODEL_DOCUMENT)) ->setParam('eventData', $response->output($document, Response::MODEL_DOCUMENT))

View file

@ -45,7 +45,7 @@
"utopia-php/cache": "0.4.*", "utopia-php/cache": "0.4.*",
"utopia-php/cli": "0.11.*", "utopia-php/cli": "0.11.*",
"utopia-php/config": "0.2.*", "utopia-php/config": "0.2.*",
"utopia-php/database": "0.6.*", "utopia-php/database": "0.8.*",
"utopia-php/locale": "0.4.*", "utopia-php/locale": "0.4.*",
"utopia-php/registry": "0.5.*", "utopia-php/registry": "0.5.*",
"utopia-php/preloader": "0.2.*", "utopia-php/preloader": "0.2.*",
@ -53,6 +53,7 @@
"utopia-php/swoole": "0.2.*", "utopia-php/swoole": "0.2.*",
"utopia-php/storage": "0.5.*", "utopia-php/storage": "0.5.*",
"utopia-php/image": "0.5.*", "utopia-php/image": "0.5.*",
"resque/php-resque": "1.3.6", "resque/php-resque": "1.3.6",
"matomo/device-detector": "4.2.3", "matomo/device-detector": "4.2.3",
"dragonmantank/cron-expression": "3.1.0", "dragonmantank/cron-expression": "3.1.0",

44
composer.lock generated
View file

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "c2bda60e7b774a0c813f52033a268c6c", "content-hash": "c43b186a794c614272806e6530ada496",
"packages": [ "packages": [
{ {
"name": "adhocore/jwt", "name": "adhocore/jwt",
@ -1666,22 +1666,22 @@
}, },
{ {
"name": "utopia-php/abuse", "name": "utopia-php/abuse",
"version": "0.6.1", "version": "0.6.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/utopia-php/abuse.git", "url": "https://github.com/utopia-php/abuse.git",
"reference": "c9078aa3a87750d66060f0ed7642e03e5815da17" "reference": "d63e928c2c50b367495a499a85ba9806ee274c5e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/utopia-php/abuse/zipball/c9078aa3a87750d66060f0ed7642e03e5815da17", "url": "https://api.github.com/repos/utopia-php/abuse/zipball/d63e928c2c50b367495a499a85ba9806ee274c5e",
"reference": "c9078aa3a87750d66060f0ed7642e03e5815da17", "reference": "d63e928c2c50b367495a499a85ba9806ee274c5e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-pdo": "*", "ext-pdo": "*",
"php": ">=7.4", "php": ">=7.4",
"utopia-php/database": "0.6.*" "utopia-php/database": ">=0.6 <1.0"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^9.4", "phpunit/phpunit": "^9.4",
@ -1713,9 +1713,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/utopia-php/abuse/issues", "issues": "https://github.com/utopia-php/abuse/issues",
"source": "https://github.com/utopia-php/abuse/tree/0.6.1" "source": "https://github.com/utopia-php/abuse/tree/0.6.3"
}, },
"time": "2021-08-03T19:31:07+00:00" "time": "2021-08-16T18:38:31+00:00"
}, },
{ {
"name": "utopia-php/analytics", "name": "utopia-php/analytics",
@ -1774,22 +1774,22 @@
}, },
{ {
"name": "utopia-php/audit", "name": "utopia-php/audit",
"version": "0.6.1", "version": "0.6.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/utopia-php/audit.git", "url": "https://github.com/utopia-php/audit.git",
"reference": "971dcd5c88309656df31ac20f326d3ac8b555594" "reference": "d79b467fbc7d03e5e02f12cdeb08761507a60ca0"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/utopia-php/audit/zipball/971dcd5c88309656df31ac20f326d3ac8b555594", "url": "https://api.github.com/repos/utopia-php/audit/zipball/d79b467fbc7d03e5e02f12cdeb08761507a60ca0",
"reference": "971dcd5c88309656df31ac20f326d3ac8b555594", "reference": "d79b467fbc7d03e5e02f12cdeb08761507a60ca0",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-pdo": "*", "ext-pdo": "*",
"php": ">=7.4", "php": ">=7.4",
"utopia-php/database": "0.6.*" "utopia-php/database": ">=0.6 <1.0"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^9.3", "phpunit/phpunit": "^9.3",
@ -1821,9 +1821,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/utopia-php/audit/issues", "issues": "https://github.com/utopia-php/audit/issues",
"source": "https://github.com/utopia-php/audit/tree/0.6.1" "source": "https://github.com/utopia-php/audit/tree/0.6.3"
}, },
"time": "2021-08-03T19:29:34+00:00" "time": "2021-08-16T18:49:55+00:00"
}, },
{ {
"name": "utopia-php/cache", "name": "utopia-php/cache",
@ -1984,16 +1984,16 @@
}, },
{ {
"name": "utopia-php/database", "name": "utopia-php/database",
"version": "0.6.1", "version": "0.8.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/utopia-php/database.git", "url": "https://github.com/utopia-php/database.git",
"reference": "59d9d34164b6fb896bc43085a9a82a292b43473a" "reference": "2645c150267aaf73c70fb8a8d1a74430c9e6f336"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/utopia-php/database/zipball/59d9d34164b6fb896bc43085a9a82a292b43473a", "url": "https://api.github.com/repos/utopia-php/database/zipball/2645c150267aaf73c70fb8a8d1a74430c9e6f336",
"reference": "59d9d34164b6fb896bc43085a9a82a292b43473a", "reference": "2645c150267aaf73c70fb8a8d1a74430c9e6f336",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2041,9 +2041,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/utopia-php/database/issues", "issues": "https://github.com/utopia-php/database/issues",
"source": "https://github.com/utopia-php/database/tree/0.6.1" "source": "https://github.com/utopia-php/database/tree/0.8.0"
}, },
"time": "2021-08-05T17:19:16+00:00" "time": "2021-08-16T17:19:07+00:00"
}, },
{ {
"name": "utopia-php/domains", "name": "utopia-php/domains",
@ -6278,5 +6278,5 @@
"platform-overrides": { "platform-overrides": {
"php": "8.0" "php": "8.0"
}, },
"plugin-api-version": "2.1.0" "plugin-api-version": "2.0.0"
} }