UNPKG

dc-management-sdk-js

Version:
168 lines 15.2 kB
import { HalResource } from '../hal/models/HalResource'; import { AssignedContentType, AssignedContentTypePage, } from './AssignedContentType'; import { Page } from './Page'; import { SearchIndexKey } from './SearchIndexKey'; import { SearchIndexSettings } from './SearchIndexSettings'; import { SearchIndexStatistics } from './SearchIndexStatistics'; import { SearchIndexTopHitsCollection } from './SearchIndexTopHits'; import { SearchIndexTopSearchesCollection, } from './SearchIndexTopSearches'; import { SearchIndexSearchesWithNoResultsCollection } from './SearchIndexSearchesWithNoResults'; import { SearchIndexTopFiltersNoResultSearchCollection } from './SearchIndexTopFiltersNoResultSearch'; import { SearchIndexUsersCount } from './SearchIndexUsersCount'; import { SearchIndexSearchesCount } from './SearchIndexSearchesCount'; import { SearchIndexNoResultsRate } from './SearchIndexNoResultsRate'; import { Hub } from './Hub'; import { retry } from '../utils/Retryer'; import isEqual from '../utils/isEqual'; export const SEARCH_INDEX_RETRY_OPTIONS = { timeout: 3 * 60 * 1000, }; /** * Class representing an Algolia Search Index. */ export class SearchIndex extends HalResource { constructor() { super(...arguments); /** * Resources and actions related to a Search Index. */ this.related = { /** * Retrieves the Hub this search index is stored in */ hub: () => this.fetchLinkedResource('hub', {}, Hub), clear: () => this.performActionThatReturnsResource('clear', {}, {}, SearchIndex), delete: () => this.deleteResource(), update: (resource) => this.updateResource(resource, SearchIndex), assignedContentTypes: { create: (resource) => this.createLinkedResource('create-assigned-content-types', {}, resource, AssignedContentType), get: (id) => this.client.fetchResource( // tslint:disable-next-line:no-string-literal `${this._links['self'].href}/assigned-content-types/${id}`, AssignedContentType), list: (options) => this.fetchLinkedResource('assigned-content-types', { options }, AssignedContentTypePage), }, indexObject: { delete: (id) => // tslint:disable-next-line:no-string-literal this.client.deleteResource(`${this._links['self'].href}/objects/${id}`), }, keys: { get: () => this.fetchLinkedResource('hub-search-key', {}, SearchIndexKey), }, replicas: { list: (projection, options) => this.fetchLinkedResource('list-replicas', { projection, options }, SearchIndexesPage), }, settings: { get: () => retry(() => this.fetchLinkedResource('settings', {}, SearchIndexSettings), SEARCH_INDEX_RETRY_OPTIONS), update: async (resource, forwardToReplicas, options) => { const updatedResource = await this.updateLinkedResource('update-settings', { forwardToReplicas }, resource, SearchIndexSettings); if (!options || !options.waitUntilApplied) { return updatedResource; } const entriesToCheckFor = Object.entries(resource.toJSON()).filter((entry) => { if (Array.isArray(options.waitUntilApplied)) { // include the entries that are supplied return options.waitUntilApplied.includes(entry[0]); } if (options.waitUntilApplied == true) { // include entry return true; } // unknown value return false; }); const checkForUpdate = async () => { const savedSettings = (await this.fetchLinkedResource('settings', {}, SearchIndexSettings)).toJSON(); const areTheSame = entriesToCheckFor.findIndex((entry) => !isEqual(savedSettings[entry[0]], entry[1])) === -1; if (!areTheSame) { throw new Error('Settings are not the same'); } return updatedResource; }; return retry(checkForUpdate, SEARCH_INDEX_RETRY_OPTIONS); }, }, stats: { get: (period) => this.fetchLinkedResource('stats', { period }, SearchIndexStatistics), }, 'top-searches': { get: ({ clickAnalytics = false, orderBy, direction, startDate, endDate, limit, offset, tags, includeReplicas, }) => this.fetchLinkedResource('top-searches', { clickAnalytics, direction, endDate, limit, offset, orderBy, startDate, tags, includeReplicas, }, SearchIndexTopSearchesCollection), }, 'top-hits': { get: ({ search, startDate, endDate, limit, offset, tags, includeReplicas, }) => this.fetchLinkedResource('top-hits', { endDate, limit, offset, search, startDate, tags, includeReplicas, }, SearchIndexTopHitsCollection), }, 'searches-with-no-results': { get: ({ startDate, endDate, limit, offset, tags, includeReplicas, }) => this.fetchLinkedResource('searches-with-no-results', { endDate, limit, offset, startDate, tags, includeReplicas, }, SearchIndexSearchesWithNoResultsCollection), }, 'top-filters-no-result-search': { get: ({ search, startDate, endDate, limit, offset, tags, includeReplicas, }) => this.fetchLinkedResource('top-filters-no-result-search', { endDate, limit, offset, search, startDate, tags, includeReplicas, }, SearchIndexTopFiltersNoResultSearchCollection), }, 'users-count': { get: ({ startDate, endDate, tags, includeReplicas, }) => this.fetchLinkedResource('users-count', { startDate, endDate, tags, includeReplicas, }, SearchIndexUsersCount), }, 'searches-count': { get: ({ startDate, endDate, tags, includeReplicas, }) => this.fetchLinkedResource('searches-count', { startDate, endDate, tags, includeReplicas, }, SearchIndexSearchesCount), }, 'no-results-rate': { get: ({ startDate, endDate, tags, includeReplicas, }) => this.fetchLinkedResource('no-results-rate', { startDate, endDate, tags, includeReplicas, }, SearchIndexNoResultsRate), }, }; } } /** * @hidden */ export class SearchIndexesPage extends Page { constructor(data) { super('indexes', SearchIndex, data); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VhcmNoSW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL21vZGVsL1NlYXJjaEluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLHVCQUF1QixHQUN4QixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFOUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BFLE9BQU8sRUFFTCxnQ0FBZ0MsR0FDakMsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQUUsMENBQTBDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRyxPQUFPLEVBQUUsNkNBQTZDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzVCLE9BQU8sRUFBRSxLQUFLLEVBQWdCLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFFdkMsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQWlCO0lBQ3RELE9BQU8sRUFBRSxDQUFDLEdBQUcs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