UNPKG

sanity

Version:

Sanity is a real-time content infrastructure with a scalable, hosted backend featuring a Graph Oriented Query Language (GROQ), asset pipelines and fast edge caches

39 lines (33 loc) 1.13 kB
import {type SearchStrategy} from '@sanity/types' import {isReleasePerspective, RELEASES_STUDIO_CLIENT_OPTIONS} from '../releases/util/releasesClient' import {versionedClient} from '../studioClient' import { type Groq2024SearchResults, type SearchStrategyFactory, type WeightedSearchResults, } from './common' import {createGroq2024Search} from './groq2024' import {createWeightedSearch} from './weighted' const searchStrategies = { groqLegacy: createWeightedSearch, groq2024: createGroq2024Search, } satisfies Record< SearchStrategy, SearchStrategyFactory<WeightedSearchResults | Groq2024SearchResults> > const DEFAULT_SEARCH_STRATEGY: SearchStrategy = 'groqLegacy' /** @internal */ export const createSearch: SearchStrategyFactory<WeightedSearchResults | Groq2024SearchResults> = ( searchableTypes, client, options, ) => { const factory = searchStrategies[options.strategy ?? DEFAULT_SEARCH_STRATEGY] return factory( searchableTypes, isReleasePerspective(options?.perspective) ? versionedClient(client, RELEASES_STUDIO_CLIENT_OPTIONS.apiVersion) : client, options, ) }