From cc34719768eacbaaf3d2b09a15e474d1d4c2e96e Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Wed, 21 Apr 2021 15:37:51 +0200 Subject: [PATCH] feat: preferences response model --- app/controllers/api/account.php | 6 ++-- app/controllers/api/users.php | 8 ++--- src/Appwrite/Utopia/Response.php | 3 ++ src/Appwrite/Utopia/Response/Filters/V06.php | 1 + .../Utopia/Response/Model/Preferences.php | 33 +++++++++++++++++++ src/Appwrite/Utopia/Response/Model/User.php | 2 +- 6 files changed, 45 insertions(+), 8 deletions(-) create mode 100644 src/Appwrite/Utopia/Response/Model/Preferences.php diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index 902a6a1f65..7cdc0d2416 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -776,7 +776,7 @@ App::get('/v1/account/prefs') ->label('sdk.description', '/docs/references/account/get-prefs.md') ->label('sdk.response.code', Response::STATUS_CODE_OK) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) - ->label('sdk.response.model', Response::MODEL_ANY) + ->label('sdk.response.model', Response::MODEL_PREFERENCES) ->inject('response') ->inject('user') ->action(function ($response, $user) { @@ -785,7 +785,7 @@ App::get('/v1/account/prefs') $prefs = $user->getAttribute('prefs', new \stdClass()); - $response->dynamic(new Document($prefs), Response::MODEL_ANY); + $response->dynamic(new Document($prefs), Response::MODEL_PREFERENCES); }); App::get('/v1/account/sessions') @@ -1069,7 +1069,7 @@ App::patch('/v1/account/prefs') ->label('sdk.description', '/docs/references/account/update-prefs.md') ->label('sdk.response.code', Response::STATUS_CODE_OK) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) - ->label('sdk.response.model', Response::MODEL_ANY) + ->label('sdk.response.model', Response::MODEL_USER) ->param('prefs', [], new Assoc(), 'Prefs key-value JSON object.') ->inject('response') ->inject('user') diff --git a/app/controllers/api/users.php b/app/controllers/api/users.php index 3ad2360cca..6b5bfbdbd9 100644 --- a/app/controllers/api/users.php +++ b/app/controllers/api/users.php @@ -151,7 +151,7 @@ App::get('/v1/users/:userId/prefs') ->label('sdk.description', '/docs/references/users/get-user-prefs.md') ->label('sdk.response.code', Response::STATUS_CODE_OK) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) - ->label('sdk.response.model', Response::MODEL_ANY) + ->label('sdk.response.model', Response::MODEL_PREFERENCES) ->param('userId', '', new UID(), 'User unique ID.') ->inject('response') ->inject('projectDB') @@ -167,7 +167,7 @@ App::get('/v1/users/:userId/prefs') $prefs = $user->getAttribute('prefs', new \stdClass()); - $response->dynamic(new Document($prefs), Response::MODEL_ANY); + $response->dynamic(new Document($prefs), Response::MODEL_PREFERENCES); }); App::get('/v1/users/:userId/sessions') @@ -378,7 +378,7 @@ App::patch('/v1/users/:userId/prefs') ->label('sdk.description', '/docs/references/users/update-user-prefs.md') ->label('sdk.response.code', Response::STATUS_CODE_OK) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) - ->label('sdk.response.model', Response::MODEL_ANY) + ->label('sdk.response.model', Response::MODEL_PREFERENCES) ->param('userId', '', new UID(), 'User unique ID.') ->param('prefs', '', new Assoc(), 'Prefs key-value JSON object.') ->inject('response') @@ -401,7 +401,7 @@ App::patch('/v1/users/:userId/prefs') throw new Exception('Failed saving user to DB', 500); } - $response->dynamic(new Document($prefs), Response::MODEL_ANY); + $response->dynamic(new Document($prefs), Response::MODEL_PREFERENCES); }); App::delete('/v1/users/:userId/sessions/:sessionId') diff --git a/src/Appwrite/Utopia/Response.php b/src/Appwrite/Utopia/Response.php index 0bed14e45c..ef9d48f4ee 100644 --- a/src/Appwrite/Utopia/Response.php +++ b/src/Appwrite/Utopia/Response.php @@ -40,6 +40,7 @@ use Appwrite\Utopia\Response\Model\Tag; use Appwrite\Utopia\Response\Model\Task; use Appwrite\Utopia\Response\Model\Token; use Appwrite\Utopia\Response\Model\Webhook; +use Appwrite\Utopia\Response\Model\Preferences; use Appwrite\Utopia\Response\Model\Mock; // Keep last use stdClass; @@ -72,6 +73,7 @@ class Response extends SwooleResponse const MODEL_SESSION_LIST = 'sessionList'; const MODEL_TOKEN = 'token'; const MODEL_JWT = 'jwt'; + const MODEL_PREFERENCES = 'preferences'; // Storage const MODEL_FILE = 'file'; @@ -175,6 +177,7 @@ class Response extends SwooleResponse ->setModel(new Rule()) ->setModel(new Log()) ->setModel(new User()) + ->setModel(new Preferences()) ->setModel(new Session()) ->setModel(new Token()) ->setModel(new JWT()) diff --git a/src/Appwrite/Utopia/Response/Filters/V06.php b/src/Appwrite/Utopia/Response/Filters/V06.php index 13ee89cbb7..673755e7d1 100644 --- a/src/Appwrite/Utopia/Response/Filters/V06.php +++ b/src/Appwrite/Utopia/Response/Filters/V06.php @@ -109,6 +109,7 @@ class V06 extends Filter { case Response::MODEL_ANY : case Response::MODEL_DOCUMENT : + case Response::MODEL_PREFERENCES : $parsedResponse = $content; break; diff --git a/src/Appwrite/Utopia/Response/Model/Preferences.php b/src/Appwrite/Utopia/Response/Model/Preferences.php new file mode 100644 index 0000000000..24196f6a84 --- /dev/null +++ b/src/Appwrite/Utopia/Response/Model/Preferences.php @@ -0,0 +1,33 @@ + true, ]) ->addRule('prefs', [ - 'type' => self::TYPE_JSON, + 'type' => Response::MODEL_PREFERENCES, 'description' => 'User preferences as a key-value object', 'default' => new \stdClass, 'example' => ['theme' => 'pink', 'timezone' => 'UTC'],