35 lines
675 B
TypeScript
35 lines
675 B
TypeScript
import { Meilisearch, type SearchResponse } from 'meilisearch'
|
|
|
|
const MAX_HITS_PER_PAGE = 100
|
|
|
|
export async function createSearch({
|
|
query,
|
|
filter = undefined,
|
|
index,
|
|
page,
|
|
hitsPerPage,
|
|
sort,
|
|
env
|
|
}: {
|
|
query?: string
|
|
filter?: string
|
|
index: string
|
|
page?: number
|
|
hitsPerPage: number
|
|
sort: string[]
|
|
env: Env
|
|
}): Promise<SearchResponse> {
|
|
const host = env.MEILI_HOST
|
|
const apiKey = env.MEILI_API_KEY
|
|
const client = new Meilisearch({ host, apiKey })
|
|
const index_ = client.index(index)
|
|
|
|
return index_.search(query, {
|
|
sort,
|
|
filter,
|
|
page,
|
|
hitsPerPage:
|
|
hitsPerPage > MAX_HITS_PER_PAGE ? MAX_HITS_PER_PAGE : hitsPerPage
|
|
})
|
|
}
|