-
Notifications
You must be signed in to change notification settings - Fork 216
/
setSettings.ts
31 lines (27 loc) · 1.17 KB
/
setSettings.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import { createWaitablePromise, encode, WaitablePromise } from '@algolia/client-common';
import { MethodEnum } from '@algolia/requester-common';
import { createMappedRequestOptions, RequestOptions } from '@algolia/transporter';
import { SearchIndex, SetSettingsOptions, SetSettingsResponse, Settings, waitTask } from '../..';
export const setSettings = (base: SearchIndex) => {
return (
settings: Settings,
requestOptions?: RequestOptions & SetSettingsOptions
): Readonly<WaitablePromise<SetSettingsResponse>> => {
const { forwardToReplicas, ...options } = requestOptions || {};
const mappedRequestOptions = createMappedRequestOptions(options);
if (forwardToReplicas) {
mappedRequestOptions.queryParameters.forwardToReplicas = 1; // eslint-disable-line functional/immutable-data
}
return createWaitablePromise<SetSettingsResponse>(
base.transporter.write(
{
method: MethodEnum.Put,
path: encode('1/indexes/%s/settings', base.indexName),
data: settings,
},
mappedRequestOptions
),
(response, waitRequestOptions) => waitTask(base)(response.taskID, waitRequestOptions)
);
};
};