import { ILeadSearchConfig } from './lead-search-config.interface'; export class LeadSearchParamsBuilder { public build(query: string, config: ILeadSearchConfig): { [key: string]: any } { const searchParams: { [key: string]: any } = { index: 'org-' + config.organizationId, type: 'lead', body: { query: { multi_match: { fields: config.searchableFields, type: 'phrase_prefix', query } }, sort: [ { _score: { order: 'desc' } } ] } }; if (config.page && config.perPage) { searchParams.from = (config.page - 1) * config.perPage; searchParams.size = config.perPage; } if (config.assigneeId) { searchParams.body.post_filter = { term: { assignee_id: config.assigneeId } }; } return searchParams; } }