Skip to content
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

Add pagination system on resources for v0.28.0 #1269

Merged
merged 11 commits into from
Jun 27, 2022

Conversation

bidoubiwa
Copy link
Contributor

@bidoubiwa bidoubiwa commented Jun 22, 2022

Add pagination system on the following resources: keys, indexes, documents

  • GET /keys has pagination parameters, added limit (default: 20), offset (default: 0).
  • GET /indexes has pagination parameters, added limit (default: 20), offset (default: 0).
  • GET /documents has pagination parameters, added limit (default: 20), offset (default: 0).

@bidoubiwa bidoubiwa added the breaking-change The related changes are breaking for the users label Jun 22, 2022
@bidoubiwa bidoubiwa marked this pull request as draft June 23, 2022 11:00
@bidoubiwa bidoubiwa force-pushed the pagination_system_v0.28.0 branch from 02e1f24 to 5f9f741 Compare June 23, 2022 12:42
@bidoubiwa bidoubiwa requested review from brunoocasali and mdubus June 23, 2022 13:16
@bidoubiwa bidoubiwa force-pushed the pagination_system_v0.28.0 branch from 2964fc3 to 2c7ad8c Compare June 23, 2022 13:21
@bidoubiwa bidoubiwa marked this pull request as ready for review June 23, 2022 13:51
Copy link
Member

@brunoocasali brunoocasali left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome work @bidoubiwa 🎉 🎉

README.md Outdated Show resolved Hide resolved
@@ -76,21 +80,24 @@ class Client {
* @memberof MeiliSearch
* @method getRawIndex
* @param {string} indexUid The index UID
* @returns {Promise<IndexResponse>} Promise returning index information
* @returns {Promise<IndexObject>} Promise returning index information
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems a kind of https://en.wikipedia.org/wiki/Hungarian_notation not sure if this is the best choice, why not just Index are you using it somewhere else??

Copy link
Contributor Author

@bidoubiwa bidoubiwa Jun 27, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes! Index is the instance of an Index class. While IndexObject is the object representation of that same information.

Index(...) vs { ... }

see here:

  async getIndexes(
    parameters: IndexesQuery = {}
  ): Promise<IndexesResults<Index[]>> {

src/task.ts Show resolved Hide resolved
src/clients/client.ts Outdated Show resolved Hide resolved
src/clients/client.ts Outdated Show resolved Hide resolved
src/clients/client.ts Outdated Show resolved Hide resolved
@bidoubiwa bidoubiwa requested a review from brunoocasali June 27, 2022 12:10
@bidoubiwa bidoubiwa requested a review from mdubus June 27, 2022 12:26
Copy link
Member

@brunoocasali brunoocasali left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! 🎉

Copy link
Member

@mdubus mdubus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perfect ! ! 🚀 🔥

@bidoubiwa bidoubiwa merged commit d4a2a8a into bump-meilisearch-v0.28.0 Jun 27, 2022
@bidoubiwa bidoubiwa deleted the pagination_system_v0.28.0 branch June 27, 2022 14:54
meili-bors bot added a commit that referenced this pull request Jul 11, 2022
1294: Update version for the next release (v0.27.0) r=bidoubiwa a=bidoubiwa

This version makes this package compatible with Meilisearch v0.28.0 🎉
Check out the changelog of [Meilisearch v0.28.0](https://github.com/meilisearch/meilisearch/releases/tag/v0.28.0) for more information on the changes.

## 💥 Breaking changes

- `client.updateKey(key: string, options: KeyPayload): Promise<Key>` now can just update the `description` and/or the name. #1266
- The type `EnqueuedTask` now returns an `taskUid` instead of an `uid`
- `client.getTasks(...)` and `index.getTasks()` now returns a  TasksResults type containing the following fields: `results`, `limit`, `from`, `next`  #1269 
- `index.search` changes in the response parameters: #1263
    - `nbHits` replaced with `estimatedTotalHits`
    - `exhaustiveNbHits` is deleted
    - `exhaustiveFacetsCount` is deleted
- `index.search` changes in the request parameters:  #1263
    -  `matches` renamed `showMatchesPosition`
    -  `_matchesInfo` response parameter is renamed `_matchesPosition`
    - `facetsDistribution` request parameter is renamed `facets`.
    -  `facetsDistribution` response parameter is renamed `facetDistribution`.
- The `Index` type and returned `IndexObject` does not contain a `name` field anymore
- `client.getIndexes` and `client.getRawIndexes` now returns an `IndexesResults` type containing the following fields: `results`, `limit`, `offset`, `total` #1269
- `index.getDocuments` and `client.getDocuments` now returns an `DocumentsResults` type containing the following fields: `results`, `limit`, `offset`, `total` #1269
- `index.getDocuments` and `index.getDocument`  query parameter `attributesToRetrieve` is now called `fields` #1264
- `client.getDumpStatus` has been removed #1267
- `client.createDump()` now returns an `EnqueuedTask` #1267
- `client.generateTenantToken(apiKeyUid, searchRules, options)` has now a mandatory `apiKeyUid` parameter which should contain the uid of a specific API key. #1268  


## 🚀 Enhancements

- `client.getKeys(parameters: KeysQuery  = {})` now accepts pagination parameters: `limit`, `offset` #1269 
- `client.getKey(keyOrUid: string)` can now also find keys based on their key uid. #1266 
- `client.createKey(options: KeyCreation)` lets you specify a custom uid (optionally) to create a new Key #1269
- The returned `Key` now has an additional `name` and `uid` string fields. #1266 
- The `indexUid` field in both `EnqueuedTask` and `Task` can be null #1259 
- `client.getTasks(parameters: TasksQuery = {})` and   `index.getTasks(parameters: TasksQuery)` now accepts pagination parameters: `limit`, `from`, `next` and filters parameters: `type`, `status`, `indexUid` (same for `index.getTasks`) #1269 
- `client.getIndexes` and `client.getRawIndexes` now accepts pagination parameters: `limit`, `offset` #1269 
- `index.getDocuments` now accepts pagination parameters: `limit`, `offset` #1269 
- `new MeiliSearch({ host, apiKey, headers, clientAgents })` now accept a new parameter `clientAgents` that should contain the agent from which the library is used. #1272

Analytics is enabled by default in the server, but you can disable them by following [this guide](https://docs.meilisearch.com/learn/what_is_meilisearch/telemetry.html#how-to-disable-data-collection)
Also, of course, every analytics data we collect are **ANONYMOUS** [read the guide for more information](https://docs.meilisearch.com/learn/what_is_meilisearch/telemetry.html).

Thanks again to `@bidoubiwa` ! 🎉

Co-authored-by: Charlotte Vermandel <charlottevermandel@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
breaking-change The related changes are breaking for the users
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants