UNPKG

@lableb/javascript-sdk

Version:

Lableb cloud search client for javascript

55 lines (45 loc) 2.01 kB
import { convertFacetsObjectIntoString, customIdentity, customPickBy } from '../../utils'; import { GlobalRequestOptions } from '../main/main.request.type'; import { buildSearchRequestSchema } from './search.schema'; import { SearchRequestParams, SearchRequestResult, SelectedFacets } from './search.request.type'; export async function buildSearchRequest(this: GlobalRequestOptions, params: SearchRequestParams): Promise<SearchRequestResult> { const validatedParams = await buildSearchRequestSchema .validate( customPickBy({ ...params, indexName: params.indexName || this?.indexName || process.env.GLOBAL_DEFAULT_INDEX_NAME, platformName: params.platformName || this?.platformName, searchHandler: params.searchHandler || this?.searchHandler || process.env.GLOBAL_DEFAULT_SEARCH_HANDLER, APIKey: params.APIKey || this?.APIKey, userCountry: params.userCountry || this?.userCountry, userId: params.userId || this?.userId, userIp: params.userIp || this?.userIp, sessionId: params.sessionId || this?.sessionId, sessionIdGenerator: params.sessionIdGenerator || this?.sessionIdGenerator, }, customIdentity) ); const { indexName, platformName, searchHandler, APIKey, query, facets, ...restOfOptions } = validatedParams; let facetsString = ''; if (params.facets) { const facetsStringResult = convertFacetsObjectIntoString(params.facets); facetsString = facetsStringResult ? `?${facetsStringResult}` : ''; } return { method: 'GET', url: `${process.env.API_BASE_URL}/projects/${platformName}/indices/${indexName}/search/${searchHandler}${facetsString}`, params: { apikey: APIKey, q: query, ...restOfOptions }, headers: {}, } }