1
0
Fork 0
mirror of synced 2024-06-27 18:50:47 +12:00

feat: add document response model that extends any type

This commit is contained in:
Torsten Dittmann 2021-04-08 10:39:23 +02:00
parent 7ee487a0cb
commit 3ff66179c5
5 changed files with 67 additions and 11 deletions

View file

@ -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' => [

View file

@ -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

View file

@ -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())

View file

@ -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;

View 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,
]);
}
}