Skip to content

Commit 6198f87

Browse files
committed
Add facetStats compatibility to be aware of min and max for MS v1.1.0
1 parent 1bcbcfc commit 6198f87

File tree

3 files changed

+50
-1
lines changed

3 files changed

+50
-1
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import {
2+
AlgoliaSearchResponse,
3+
MeiliFacetStats,
4+
AlgoliaFacetStats,
5+
} from '../../types'
6+
7+
export function adaptFacetStats(
8+
meiliFacetStats: MeiliFacetStats
9+
): AlgoliaSearchResponse['facets_stats'] {
10+
const facetStats = Object.keys(meiliFacetStats).reduce(
11+
(stats: AlgoliaFacetStats, facet: string) => {
12+
stats[facet] = { ...meiliFacetStats[facet], avg: 0, sum: 0 } // Set at 0 as these numbers are not provided by Meilisearch
13+
14+
return stats
15+
},
16+
{} as AlgoliaFacetStats
17+
)
18+
return facetStats
19+
}

packages/instant-meilisearch/src/adapter/search-response-adapter/search-response-adapter.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { adaptHits } from './hits-adapter'
88
import { adaptTotalHits } from './total-hits-adapter'
99
import { adaptPaginationParameters } from './pagination-adapter'
1010
import { adaptFacetDistribution } from './facet-distribution-adapter'
11+
import { adaptFacetStats } from './adapt-facet-stats'
1112

1213
/**
1314
* Adapt multiple search results from Meilisearch
@@ -54,6 +55,7 @@ export function adaptSearchResult<T>(
5455
query,
5556
indexUid,
5657
facetDistribution: responseFacetDistribution = {},
58+
facetStats = {},
5759
} = meiliSearchResult
5860

5961
const facets = Object.keys(responseFacetDistribution)
@@ -86,6 +88,7 @@ export function adaptSearchResult<T>(
8688
hits,
8789
params: '',
8890
exhaustiveNbHits: false,
91+
facets_stats: adaptFacetStats(facetStats),
8992
}
9093
return adaptedSearchResult
9194
}

packages/instant-meilisearch/src/types/types.ts

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,12 @@ export type {
1515
}
1616
export type { SearchResponse as AlgoliaSearchResponse } from '@algolia/client-search'
1717

18-
export type { Filter, FacetDistribution, MeiliSearch } from 'meilisearch'
18+
export type {
19+
Filter,
20+
FacetDistribution,
21+
MeiliSearch,
22+
FacetStats as MeiliFacetStats,
23+
} from 'meilisearch'
1924

2025
export type InstantSearchParams = AlgoliaMultipleQueriesQuery['params']
2126

@@ -109,3 +114,25 @@ export type MultiSearchResolver = {
109114
instantSearchPagination: PaginationState[]
110115
) => Promise<MeilisearchMultiSearchResult[]>
111116
}
117+
118+
export type AlgoliaFacetStats = Record<
119+
string,
120+
{
121+
/**
122+
* The minimum value in the result set.
123+
*/
124+
min: number
125+
/**
126+
* The maximum value in the result set.
127+
*/
128+
max: number
129+
/**
130+
* The average facet value in the result set.
131+
*/
132+
avg: number
133+
/**
134+
* The sum of all values in the result set.
135+
*/
136+
sum: number
137+
}
138+
>

0 commit comments

Comments
 (0)