From 48b12152e3858dfcdea2230c8d075ef09ea82cd3 Mon Sep 17 00:00:00 2001 From: kodumbeats Date: Tue, 23 Mar 2021 17:19:19 -0400 Subject: [PATCH] Outline createIndex --- app/controllers/api/database.php | 39 ++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/app/controllers/api/database.php b/app/controllers/api/database.php index 2c32ae981e..3e48fea244 100644 --- a/app/controllers/api/database.php +++ b/app/controllers/api/database.php @@ -283,6 +283,45 @@ App::delete('/v1/database/collections/:collectionId') $response->noContent(); }); +App::post('/v1/database/collections/:collectionId/indexes') + ->desc('Create Index') + ->groups(['api', 'database']) + ->label('event', 'database.indexes.create') + ->label('scope', 'indexes.write') + ->label('sdk.namespace', 'database') + ->label('sdk.platform', [APP_PLATFORM_CLIENT, APP_PLATFORM_SERVER]) + ->label('sdk.method', 'createIndex') + ->label('sdk.description', '/docs/references/database/create-index.md') + ->label('sdk.response.code', Response::STATUS_CODE_CREATED) + ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) + ->label('sdk.response.model', Response::MODEL_INDEX) + ->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('name', null, new Text(256), 'Index name.') + ->param('type', null, new Text(256), 'Index type.') + ->inject('response') + ->action(function ($collectionId, $name, $type, $response, $projectDB, $audits) { + /** @var Appwrite\Utopia\Response $response */ + /** @var Appwrite\Database\Database $projectDB */ + /** @var Appwrite\Event\Event $audits */ + + try { + $data = $projectDB->createIndex($collectionId, $name, $type); + } catch (\Exception $exception) { + throw new Exception('Failed creating index', 500); + } + + $audits + ->setParam('event', 'database.indexes.create') + ->setParam('resource', 'database/indexes/'.$data['$id']) + ->setParam('data', $data->getArrayCopy()) + ; + + $response + ->setStatusCode(Response::STATUS_CODE_CREATED) + ->dynamic($data, Response::MODEL_INDEX) + ; + }); + App::post('/v1/database/collections/:collectionId/documents') ->desc('Create Document') ->groups(['api', 'database'])