type QueryParam = string | (string | null)[] | null; type QueryRecord = Record; /** * Строит query для range-фильтра, проставляя `filter__from` / `_to`. Если выбранный * диапазon совпадает с полным (`from === min && to === max`) — параметры убираются из query. * @param params.query - текущий query * @param params.name - имя фильтра * @param params.from - нижняя граница выбора * @param params.to - верхняя граница выбора * @param params.rangeInfo - полный диапазон фильтра (min/max) */ export function buildRangeFilterQuery(params: { query: QueryRecord; name: string; from: string | number; to: string | number; rangeInfo: { min: number; max: number }; }): QueryRecord { const { query: currentQuery, name, from, to, rangeInfo } = params; const query = { ...currentQuery }; query[`filter_${name}_from`] = String(from); query[`filter_${name}_to`] = String(to); if (from === rangeInfo.min && to === rangeInfo.max) { delete query[`filter_${name}_from`]; delete query[`filter_${name}_to`]; } return query; }