feat: add document response model that extends any type
This commit is contained in:
parent
7ee487a0cb
commit
3ff66179c5
5 changed files with 67 additions and 11 deletions
|
@ -84,17 +84,17 @@ return [
|
||||||
],
|
],
|
||||||
'database.documents.create' => [
|
'database.documents.create' => [
|
||||||
'description' => 'This event triggers when a database document is created.',
|
'description' => 'This event triggers when a database document is created.',
|
||||||
'model' => Response::MODEL_ANY,
|
'model' => Response::MODEL_DOCUMENT,
|
||||||
'note' => '',
|
'note' => '',
|
||||||
],
|
],
|
||||||
'database.documents.update' => [
|
'database.documents.update' => [
|
||||||
'description' => 'This event triggers when a database document is updated.',
|
'description' => 'This event triggers when a database document is updated.',
|
||||||
'model' => Response::MODEL_ANY,
|
'model' => Response::MODEL_DOCUMENT,
|
||||||
'note' => '',
|
'note' => '',
|
||||||
],
|
],
|
||||||
'database.documents.delete' => [
|
'database.documents.delete' => [
|
||||||
'description' => 'This event triggers when a database document is deleted.',
|
'description' => 'This event triggers when a database document is deleted.',
|
||||||
'model' => Response::MODEL_ANY,
|
'model' => Response::MODEL_DOCUMENT,
|
||||||
'note' => '',
|
'note' => '',
|
||||||
],
|
],
|
||||||
'storage.files.create' => [
|
'storage.files.create' => [
|
||||||
|
|
|
@ -294,7 +294,7 @@ App::post('/v1/database/collections/:collectionId/documents')
|
||||||
->label('sdk.description', '/docs/references/database/create-document.md')
|
->label('sdk.description', '/docs/references/database/create-document.md')
|
||||||
->label('sdk.response.code', Response::STATUS_CODE_CREATED)
|
->label('sdk.response.code', Response::STATUS_CODE_CREATED)
|
||||||
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
|
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
|
||||||
->label('sdk.response.model', Response::MODEL_ANY)
|
->label('sdk.response.model', Response::MODEL_DOCUMENT)
|
||||||
->param('collectionId', null, new UID(), 'Collection unique ID. You can create a new collection with validation rules using the Database service [server integration](/docs/server/database#createCollection).')
|
->param('collectionId', null, new UID(), 'Collection unique ID. You can create a new collection with validation rules using the Database service [server integration](/docs/server/database#createCollection).')
|
||||||
->param('data', [], new JSON(), 'Document data as JSON object.')
|
->param('data', [], new JSON(), 'Document data as JSON object.')
|
||||||
->param('read', null, new ArrayList(new Text(64)), '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 ArrayList(new Text(64)), '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)
|
||||||
|
@ -401,7 +401,7 @@ App::post('/v1/database/collections/:collectionId/documents')
|
||||||
|
|
||||||
$response
|
$response
|
||||||
->setStatusCode(Response::STATUS_CODE_CREATED)
|
->setStatusCode(Response::STATUS_CODE_CREATED)
|
||||||
->dynamic($data, Response::MODEL_ANY)
|
->dynamic($data, Response::MODEL_DOCUMENT)
|
||||||
;
|
;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -478,7 +478,7 @@ App::get('/v1/database/collections/:collectionId/documents/:documentId')
|
||||||
->label('sdk.description', '/docs/references/database/get-document.md')
|
->label('sdk.description', '/docs/references/database/get-document.md')
|
||||||
->label('sdk.response.code', Response::STATUS_CODE_OK)
|
->label('sdk.response.code', Response::STATUS_CODE_OK)
|
||||||
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
|
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
|
||||||
->label('sdk.response.model', Response::MODEL_ANY)
|
->label('sdk.response.model', Response::MODEL_DOCUMENT)
|
||||||
->param('collectionId', null, new UID(), 'Collection unique ID. You can create a new collection with validation rules using the Database service [server integration](/docs/server/database#createCollection).')
|
->param('collectionId', null, new UID(), 'Collection unique ID. You can create a new collection with validation rules 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')
|
||||||
|
@ -494,7 +494,7 @@ App::get('/v1/database/collections/:collectionId/documents/:documentId')
|
||||||
throw new Exception('No document found', 404);
|
throw new Exception('No document found', 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
$response->dynamic($document, Response::MODEL_ANY);
|
$response->dynamic($document, Response::MODEL_DOCUMENT);
|
||||||
});
|
});
|
||||||
|
|
||||||
App::patch('/v1/database/collections/:collectionId/documents/:documentId')
|
App::patch('/v1/database/collections/:collectionId/documents/:documentId')
|
||||||
|
@ -508,7 +508,7 @@ App::patch('/v1/database/collections/:collectionId/documents/:documentId')
|
||||||
->label('sdk.description', '/docs/references/database/update-document.md')
|
->label('sdk.description', '/docs/references/database/update-document.md')
|
||||||
->label('sdk.response.code', Response::STATUS_CODE_OK)
|
->label('sdk.response.code', Response::STATUS_CODE_OK)
|
||||||
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
|
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
|
||||||
->label('sdk.response.model', Response::MODEL_ANY)
|
->label('sdk.response.model', Response::MODEL_DOCUMENT)
|
||||||
->param('collectionId', null, new UID(), 'Collection unique ID. You can create a new collection with validation rules using the Database service [server integration](/docs/server/database#createCollection).')
|
->param('collectionId', null, new UID(), 'Collection unique ID. You can create a new collection with validation rules 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.')
|
||||||
->param('data', [], new JSON(), 'Document data as JSON object.')
|
->param('data', [], new JSON(), 'Document data as JSON object.')
|
||||||
|
@ -566,7 +566,7 @@ App::patch('/v1/database/collections/:collectionId/documents/:documentId')
|
||||||
->setParam('data', $data->getArrayCopy())
|
->setParam('data', $data->getArrayCopy())
|
||||||
;
|
;
|
||||||
|
|
||||||
$response->dynamic($data, Response::MODEL_ANY);
|
$response->dynamic($data, Response::MODEL_DOCUMENT);
|
||||||
});
|
});
|
||||||
|
|
||||||
App::delete('/v1/database/collections/:collectionId/documents/:documentId')
|
App::delete('/v1/database/collections/:collectionId/documents/:documentId')
|
||||||
|
@ -614,7 +614,7 @@ App::delete('/v1/database/collections/:collectionId/documents/:documentId')
|
||||||
}
|
}
|
||||||
|
|
||||||
$events
|
$events
|
||||||
->setParam('payload', $response->output($document, Response::MODEL_ANY))
|
->setParam('payload', $response->output($document, Response::MODEL_DOCUMENT))
|
||||||
;
|
;
|
||||||
|
|
||||||
$audits
|
$audits
|
||||||
|
|
|
@ -15,6 +15,7 @@ use Appwrite\Utopia\Response\Model\Collection;
|
||||||
use Appwrite\Utopia\Response\Model\Continent;
|
use Appwrite\Utopia\Response\Model\Continent;
|
||||||
use Appwrite\Utopia\Response\Model\Country;
|
use Appwrite\Utopia\Response\Model\Country;
|
||||||
use Appwrite\Utopia\Response\Model\Currency;
|
use Appwrite\Utopia\Response\Model\Currency;
|
||||||
|
use Appwrite\Utopia\Response\Model\Document as ModelDocument;
|
||||||
use Appwrite\Utopia\Response\Model\Domain;
|
use Appwrite\Utopia\Response\Model\Domain;
|
||||||
use Appwrite\Utopia\Response\Model\Error;
|
use Appwrite\Utopia\Response\Model\Error;
|
||||||
use Appwrite\Utopia\Response\Model\ErrorDev;
|
use Appwrite\Utopia\Response\Model\ErrorDev;
|
||||||
|
@ -61,6 +62,7 @@ class Response extends SwooleResponse
|
||||||
const MODEL_COLLECTION = 'collection';
|
const MODEL_COLLECTION = 'collection';
|
||||||
const MODEL_COLLECTION_LIST = 'collectionList';
|
const MODEL_COLLECTION_LIST = 'collectionList';
|
||||||
const MODEL_RULE = 'rule';
|
const MODEL_RULE = 'rule';
|
||||||
|
const MODEL_DOCUMENT = 'document';
|
||||||
const MODEL_DOCUMENT_LIST = 'documentList';
|
const MODEL_DOCUMENT_LIST = 'documentList';
|
||||||
|
|
||||||
// Users
|
// Users
|
||||||
|
@ -145,7 +147,7 @@ class Response extends SwooleResponse
|
||||||
->setModel(new ErrorDev())
|
->setModel(new ErrorDev())
|
||||||
// Lists
|
// Lists
|
||||||
->setModel(new BaseList('Collections List', self::MODEL_COLLECTION_LIST, 'collections', self::MODEL_COLLECTION))
|
->setModel(new BaseList('Collections List', self::MODEL_COLLECTION_LIST, 'collections', self::MODEL_COLLECTION))
|
||||||
->setModel(new BaseList('Documents List', self::MODEL_DOCUMENT_LIST, 'documents', self::MODEL_ANY))
|
->setModel(new BaseList('Documents List', self::MODEL_DOCUMENT_LIST, 'documents', self::MODEL_DOCUMENT))
|
||||||
->setModel(new BaseList('Users List', self::MODEL_USER_LIST, 'users', self::MODEL_USER))
|
->setModel(new BaseList('Users List', self::MODEL_USER_LIST, 'users', self::MODEL_USER))
|
||||||
->setModel(new BaseList('Sessions List', self::MODEL_SESSION_LIST, 'sessions', self::MODEL_SESSION))
|
->setModel(new BaseList('Sessions List', self::MODEL_SESSION_LIST, 'sessions', self::MODEL_SESSION))
|
||||||
->setModel(new BaseList('Logs List', self::MODEL_LOG_LIST, 'logs', self::MODEL_LOG, false))
|
->setModel(new BaseList('Logs List', self::MODEL_LOG_LIST, 'logs', self::MODEL_LOG, false))
|
||||||
|
@ -169,6 +171,7 @@ class Response extends SwooleResponse
|
||||||
// Entities
|
// Entities
|
||||||
->setModel(new Permissions())
|
->setModel(new Permissions())
|
||||||
->setModel(new Collection())
|
->setModel(new Collection())
|
||||||
|
->setModel(new ModelDocument())
|
||||||
->setModel(new Rule())
|
->setModel(new Rule())
|
||||||
->setModel(new Log())
|
->setModel(new Log())
|
||||||
->setModel(new User())
|
->setModel(new User())
|
||||||
|
|
|
@ -108,6 +108,7 @@ class V06 extends Filter {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Response::MODEL_ANY :
|
case Response::MODEL_ANY :
|
||||||
|
case Response::MODEL_DOCUMENT :
|
||||||
$parsedResponse = $content;
|
$parsedResponse = $content;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
52
src/Appwrite/Utopia/Response/Model/Document.php
Normal file
52
src/Appwrite/Utopia/Response/Model/Document.php
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Appwrite\Utopia\Response\Model;
|
||||||
|
|
||||||
|
use Appwrite\Utopia\Response;
|
||||||
|
|
||||||
|
class Document extends Any
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get Name
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getName(): string
|
||||||
|
{
|
||||||
|
return 'Document';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Collection
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getType(): string
|
||||||
|
{
|
||||||
|
return Response::MODEL_DOCUMENT;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this
|
||||||
|
->addRule('$id', [
|
||||||
|
'type' => self::TYPE_STRING,
|
||||||
|
'description' => 'Document ID.',
|
||||||
|
'default' => '',
|
||||||
|
'example' => '5e5ea5c16897e',
|
||||||
|
])
|
||||||
|
->addRule('$collection', [
|
||||||
|
'type' => self::TYPE_STRING,
|
||||||
|
'description' => 'Collection ID.',
|
||||||
|
'default' => '',
|
||||||
|
'example' => '5e5ea5c15117e',
|
||||||
|
])
|
||||||
|
->addRule('$permissions', [
|
||||||
|
'type' => Response::MODEL_PERMISSIONS,
|
||||||
|
'description' => 'Document permissions.',
|
||||||
|
'default' => new \stdClass,
|
||||||
|
'example' => new \stdClass,
|
||||||
|
'array' => false,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue