UNPKG

@lableb/javascript-sdk

Version:

Lableb cloud search client for javascript

69 lines (53 loc) 2.69 kB
import { customIdentity, customPickBy } from '../../utils'; import { RecommendFeedbackDocument } from '../feedback/feedback.document.type'; import { GlobalRequestOptions } from '../main/main.request.type'; import { buildBatchRecommendFeedbackRequestSchema } from './recommend-feedback.schema'; import { BatchRecommendFeedbackRequestParams, BatchRecommendFeedbackRequestResult, SingleRecommendFeedbackRequestParams } from './recommend-feedback.request.type'; export async function buildSingleRecommendFeedbackRequest(this: GlobalRequestOptions, params: SingleRecommendFeedbackRequestParams): Promise<BatchRecommendFeedbackRequestResult> { const { documentFeedback, ...rest } = params; const options: any = { ...rest, } if (documentFeedback) { options.documentsFeedbacks = [documentFeedback]; } return buildBatchRecommendFeedbackRequest.bind(this)(options); } export async function buildBatchRecommendFeedbackRequest(this: GlobalRequestOptions, params: BatchRecommendFeedbackRequestParams): Promise<BatchRecommendFeedbackRequestResult> { const validatedParams = await buildBatchRecommendFeedbackRequestSchema .validate( customPickBy({ ...params, indexName: params.indexName || this?.indexName || process.env.GLOBAL_DEFAULT_INDEX_NAME, platformName: params.platformName || this?.platformName, recommendHandler: params.recommendHandler || this?.recommendHandler || process.env.GLOBAL_DEFAULT_RECOMMEND_HANDLER, APIKey: params.APIKey || this?.APIKey, documentsFeedbacks: params.documentsFeedbacks?.map(feedback => customPickBy({ ...feedback, userCountry: feedback.userCountry || this?.userCountry, userId: feedback.userId || this?.userId, userIp: feedback.userIp || this?.userIp, sessionId: feedback.sessionId || this?.sessionId || (this.sessionIdGenerator ? this.sessionIdGenerator() : undefined), }, customIdentity)), }, customIdentity) ); const { indexName, platformName, recommendHandler, APIKey, documentsFeedbacks, } = validatedParams; return { method: 'POST', url: `${process.env.API_BASE_URL}/projects/${platformName}/indices/${indexName}/recommend/${recommendHandler}/feedback/hits`, params: { apikey: APIKey, }, headers: {}, body: documentsFeedbacks as RecommendFeedbackDocument[], } }