Skip to content

Releases: kuzzleio/kuzzle

0.9.0

12 Jan 10:50
Compare
Choose a tag to compare

Refactor the response from Kuzzle in order to have a consistent response like the following object:

  • When we have just one element (e.g with a get):
{
    "action": "get",
    "collection": "user",
    "controller": "read",
    "error": null,
    "index": "mainindex",
    "metadata": {},
    "requestId": "a39f348b-f73d-4518-9cb4-32a4b0dc2040",
    "result": {
        "_id": "AVItAloUTHHcXT3l6WXg",
        "_index": "mainindex",
        "_source": {
            "username": "toto"
        },
        "_type": "user",
        "_version": 1,
        "found": true
    },
    "scope": null,
    "state": "done",
    "status": 200
}
  • When we have a list (e.g getAllStats)
{
    "action": "getAllStats",
    "controller": "admin",
    "error": null,
    "metadata": {},
    "requestId": "608fef72-da25-48e1-8b77-ae351d33bae2",
    "result": {
        "hits": [
            {
                "completedRequests": {
                    "rest": 1
                },
                "connections": {},
                "failedRequests": {},
                "ongoingRequests": {
                    "rest": 0
                },
                "timestamp": "2016-01-10T19:30:06.328Z"
            }
        ],
        "total": 1
    },
    "scope": null,
    "state": "done",
    "status": 200
}

We have now a result directly in result entry with the object requested or with an entry hits which is an array.

_Note:_

  • We have no more hits.hits in result object. All previous entries in hits are now in root object result, i.e:
"result": {
        "_shards": {
            "failed": 0,
            "successful": 5,
            "total": 5
        },
        "hits": [
            {
                "_id": "AVItE6_7THHcXT3l6WZH",
                "_index": "mainindex",
                "_score": 1,
                "_source": {
                    "username": "toto"
                },
                "_type": "user"
            }
        ],
        "max_score": 1,
        "timed_out": false,
        "took": 1,
        "total": 1
    }
  • The error entry can contains a _source to find out which query failed.

0.8.0

12 Jan 09:38
Compare
Choose a tag to compare
  • Implemented protocol plugins support
  • Added a new plugin configuration argument: "loadedBy", taking "all", "server" or "worker". Its purpose is to limit plugin installation & loading only by the corresponding kuzzle instance type
  • Added socket.io plugin as a default plugin
  • removed socket.io dependency
  • updated unit and functional tests
  • updated plugin documentation
  • REST protocol is now linked to the port 7511 instead of 7512
  • Reworked plugin installation so that servers and workers can act independantly. This removes the "normal" errors we got when starting Kuzzle
  • Added a banner to inform users when a Kuzzle instance is up, running, and accepting requests

Others:

  • removed winston dependency

0.7.2

21 Dec 13:09
Compare
Choose a tag to compare

To remove unnecessary Kuzzle dependencies from the router controller and to prepare the incoming protocol plugins, this pull request changes the way the router controller handles worker responses, following @stafyniaksacha suggestion:

  • renamed core/responseListener to core/workerListener to make it easier to understand what it does
  • removed all references to the workerListener from the router controller. Also removed empty promises handling. Promises resulting from calls to the funnel controller now always resolve to the according responseObject
  • the main Kuzzle object now contains a global workerListener instance
  • controllers behind the funnel controller now always return a promise resolving to the awaited response, either directly, or by returning the result of workerListener.add
  • the workerListener now awaits worker responses using the internal broker, and resolve/reject the stored promises, letting the router controller respond to the requesting client. It doesn't notify directly anymore.

0.7.1

18 Dec 15:11
Compare
Choose a tag to compare
  • implemented the possibility to get realtime collections using the existing "listCollections" API method
  • updated unit tests, functional tests and API documentation
  • tidied up the readController unit tests
  • removed remnants of the old roomName argument in the hotelClerk.removeCustomerFromAllRooms unit tests
  • added missing unit tests on the removeRooms method of the adminController

0.7.0

18 Dec 13:32
Compare
Choose a tag to compare
  • Support multi-index (persistent & realtime layers)
  • Add : CRUDL operations on indexes
  • Add : _createIndex role policy
  • Add : _createCollection role policy
  • Add : internal cache for index hierarchy (used by when checking policies)
  • Refactor : ReadEngine & WriteEngine allways fulify promises with a ResponseObject : no need to recreate it in worker when Response is delayed
  • Refactor : Change api route to /api/v1
  • Refactor : Mock elasticsearch in units tests

0.6.5

17 Dec 09:21
Compare
Choose a tag to compare

The admin/putRole REST API method now requires a role identifier

Added a lazy-loading repositories() getter

16 Dec 17:47
Compare
Choose a tag to compare

Useful for authentication plugins, and probably other kinds of plugins in a future.

0.6.3

16 Dec 10:09
Compare
Choose a tag to compare

Optional request arguments are now case insensitive

0.6.1

14 Dec 16:35
Compare
Choose a tag to compare

Roles: added a load method to abstract the Repository class that tries to retrieve a content from the cacheEngine. If the content is not cached, fallback to the readEngine.

0.6.0

09 Dec 10:59
Compare
Choose a tag to compare
  • Fix: the responseListener core component waited for queries not forwarded to workers, effectively creating a memleak
  • Publishing messages is now done using the publish route from the write controller, instead of using a persist flag in the create route
  • create, createOrUpdate and delete requests now notify subscribed users as-if the requests itself was a realtime message
  • additional arguments can be provided in the subscribe.on request, allowing to filter notifications depending on their state, scope, or if this is a user event
  • kuzzle rooms are now multi-channel, each channel corresponding to a subscription configuration. A user can subscribe multiple times on the same room using different channels
  • subscribers now have to listen to the channel tag provided in the subscribe.on response, instead of the roomId. The channel tag is only that: the channel on which the user needs to listen in order to receive notifications