-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Extending the JS SDK with controllers #284
Conversation
Is it really necessary to have 3 pages for |
We have the same documentation structure for every core class, it feel weird to have a different one for BaseController only because there is not a lot of content. And this content can also grow in the futur |
## What does this PR do? *I'm not sure if this is a new feature or an enhancement* This PR intend to unify the way we add/use controllers with the SDK. In this way we can have the same API when using our core controllers (`document`, `collection`, etc.) and custom controllers made by users. All existing controllers are now inheriting from the `BaseController` class and they are added to the SDK with `Kuzzle.useController` instead of been manually instantiated. Example of custom controller ``` class TaxiController extends BaseController { constructor (kuzzle) { super(kuzzle, 'my-plugin/taxi'); } startDuty (driver) { return this.query({ driver, action: 'startDuty' }); } } kuzzle.useController(TaxiController, 'taxi'); kuzzle.taxi.startDuty('Martin'); ``` I know this look like a breaking change but since we never documented this feature by now it is not really one. Documentation kuzzleio/documentation#284 ### How should this be manually tested? - Step 1 : Run unit tests
} | ||
|
||
enroll () { | ||
return 'Success'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
should use "this.query" instead
This probably means a custom template with either a mocked version of Kuzzle.query, or more simply a dedicated try...catch returning a success response if the error is exactly about a missing API method, paving the way for more thorough end-to-end tests with plugins.
…io/documentation into use-controller-and-basecontroller
Co-Authored-By: Aschen <[email protected]>
BaseController | ||
} = require('kuzzle-sdk'); | ||
|
||
BaseController.prototype.query = () => Promise.resolve(null); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Clever and efficient 👍
* Add documentation page about mappings (#271) Adds a documentation essentials page about mappings: dynamic mapping policy collection metadata properties types definitions Also update SDKs See kuzzleio/kuzzle#1257 * Embedded protocols (#286) Documentation for embedded protocols, notably for MQTT. * Extending the JS SDK with controllers (#284) Add a page about how to extend the JS SDK with custom controllers. https://deploy-preview-284--kuzzle-doc-v2.netlify.com/sdk-reference/js/6/extend-sdk/ Also document: - BaseController class - Kuzzle.useController method See kuzzleio/sdk-javascript#388 * [KZL-907] Getting started dev plugin (#276) ## What does this PR do? This PR responds to this [ticket](https://jira.kaliop.net/browse/KZL-907). Also, it increases the readability of documentation's plugin part. ### How should this be manually tested? [Netify](https://deploy-preview-276--kuzzle-doc-v2.netlify.com/plugins/1/essentials/introduction/) ### Other changes - Re-arrange plugin documentation path - Update dead link in boilerplate repository ### Boyscout Prettier * Release 2.1.1
# [3.0.0](https://github.com/kuzzleio/documentation/releases/tag/3.0.0) (2019-06-12) #### Bug fixes - [ [#298](#298) ] Fix bulk import return ([Aschen](https://github.com/Aschen)) - [ [#325](#325) ] Adapt legacy redirection ([Aschen](https://github.com/Aschen)) - [ [#322](#322) ] Fix remaining dead links and add check_link to CI ([Aschen](https://github.com/Aschen)) - [ [#304](#304) ] Fix sdk js tests ([benoitvidis](https://github.com/benoitvidis)) #### New features - [ [#299](#299) ] Documentation for wildcard events ([thomasarbona](https://github.com/thomasarbona)) - [ [#321](#321) ] Add guide about secrets management with the Vault ([Aschen](https://github.com/Aschen)) - [ [#300](#300) ] Add page about bulk:write and bulk:mwrite ([Aschen](https://github.com/Aschen)) #### Enhancements - [ [#327](#327) ] SPA mode ([xbill82](https://github.com/xbill82)) - [ [#324](#324) ] Update Redis version ([Aschen](https://github.com/Aschen)) - [ [#316](#316) ] Sdks authenticated connected props ([Aschen](https://github.com/Aschen)) - [ [#317](#317) ] Add new way for updateSpecifications & validateSpecifications ([thomasarbona](https://github.com/thomasarbona)) - [ [#296](#296) ] Rewrite the Realtime guide ([Aschen](https://github.com/Aschen)) - [ [#301](#301) ] Deprecate realtime join ([Aschen](https://github.com/Aschen)) - [ [#291](#291) ] Getting started React + improve snippetManager ([thomasarbona](https://github.com/thomasarbona)) - [ [#294](#294) ] Add s3 plugin ([Aschen](https://github.com/Aschen)) - [ [#292](#292) ] Add since ([Aschen](https://github.com/Aschen)) - [ [#276](#276) ] [KZL-907] Getting started dev plugin ([Yoann-Abbes](https://github.com/Yoann-Abbes)) - [ [#284](#284) ] Extending the JS SDK with controllers ([Aschen](https://github.com/Aschen)) - [ [#271](#271) ] Add documentation page about mappings ([Aschen](https://github.com/Aschen)) #### Others - [ [#314](#314) ] Add a clustering guide ([scottinet](https://github.com/scottinet)) - [ [#319](#319) ] Getting-started-sdk-JS6-architecture ([berthieresteban](https://github.com/berthieresteban)) - [ [#311](#311) ] Add PDF sending example for Request.setResult ([Aschen](https://github.com/Aschen)) - [ [#315](#315) ] Normalize directories and generate redirections ([Aschen](https://github.com/Aschen)) - [ [#309](#309) ] Port #284 to 3-dev ([berthieresteban](https://github.com/berthieresteban)) - [ [#308](#308) ] Port #283 to 3-dev ([berthieresteban](https://github.com/berthieresteban)) - [ [#307](#307) ] Port #282 to 3-dev ([berthieresteban](https://github.com/berthieresteban)) - [ [#306](#306) ] Port #280 to 3-dev ([berthieresteban](https://github.com/berthieresteban)) - [ [#312](#312) ] Port 278 to 3-dev ([Aschen](https://github.com/Aschen)) - [ [#310](#310) ] Port #277 to 3-dev ([Aschen](https://github.com/Aschen)) - [ [#305](#305) ] Port #275 to 3-dev ([Aschen](https://github.com/Aschen)) - [ [#303](#303) ] Port #274 to 3-dev ([Aschen](https://github.com/Aschen)) - [ [#302](#302) ] Port #271 to 3-dev ([Aschen](https://github.com/Aschen)) - [ [#313](#313) ] Port #266 to 3-dev ([Yoann-Abbes](https://github.com/Yoann-Abbes)) - [ [#290](#290) ] [KZL-1050] Role template example in the documentation ([Yoann-Abbes](https://github.com/Yoann-Abbes)) - [ [#293](#293) ] [KZL-1036] Add available plugins ([Yoann-Abbes](https://github.com/Yoann-Abbes)) - [ [#286](#286) ] Embedded protocols ([benoitvidis](https://github.com/benoitvidis)) ---
What does this PR do?
Add a page about how to extend the JS SDK with custom controllers.
https://deploy-preview-284--kuzzle-doc-v2.netlify.com/sdk-reference/js/6/extend-sdk/
Also document:
See kuzzleio/sdk-javascript#388
How should this be manually tested?