Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions doc/7/controllers/security/refresh/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
code: true
type: page
title: refresh
---

# refresh

Forces an immediate [reindexation](https://www.elastic.co/guide/en/elasticsearch/reference/7.4/docs-refresh.html) of the provided security collection.

The available security collections are: `users`, `profiles`, `roles`.

When writing or deleting documents in Kuzzle, the changes need to be indexed before being reflected in the search results.
By default, this operation can take up to 1 second.

::: warning
Forcing immediate refreshes comes with performance costs, and should only performed when absolutely necessary.
:::


```js
refresh(collection);
```

## Arguments

- `collection`: collection name to refresh

## Resolves

Resolves when the refresh has been done.

## Usage

<<< ./snippets/refresh.js
6 changes: 6 additions & 0 deletions doc/7/controllers/security/refresh/snippets/refresh.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
try {
await kuzzle.security.refresh('users');
console.log('Success');
} catch (e) {
console.error(e);
}
5 changes: 5 additions & 0 deletions doc/7/controllers/security/refresh/snippets/refresh.test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
name: security#refresh
description: Refreshes security collection
hooks:
template: default
expected: Success
7 changes: 7 additions & 0 deletions src/controllers/Security.js
Original file line number Diff line number Diff line change
Expand Up @@ -376,6 +376,13 @@ class SecurityController extends BaseController {
.then(response => response.result.hits.map(hit => new Role(this.kuzzle, hit._id, hit._source.controllers)));
}

refresh(collection) {
return this.query({
collection,
action: 'refresh'
});
}

replaceUser (_id, body, options = {}) {
const request = {
_id,
Expand Down
19 changes: 19 additions & 0 deletions test/controllers/security.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -909,6 +909,25 @@ describe('Security Controller', () => {
});
});

describe('refresh', () => {
it('should call security/refresh query and return a Promise', () => {
kuzzle.query.resolves(null);

return kuzzle.security.refresh('collection')
.then(res => {
should(kuzzle.query)
.be.calledOnce()
.be.calledWith({
controller: 'security',
action: 'refresh',
collection: 'collection'
});

should(res).be.Null();
});
});
});

describe('replaceUser', () => {
it('should call security/replaceUser query with the user content and return a Promise which resolves a User object', () => {
kuzzle.query.resolves({
Expand Down