UNPKG

typesense-utils

Version:

A list of utilities for typesense search engine

96 lines 2.41 kB
import { FilterByQuery } from './buildFilterBy'; import { Geopoint } from './Geopoint'; export declare enum NullOrder { First = 0, Last = 1 } export declare enum Order { Asc = 0, Desc = 1 } export interface SortByBoolean { /** * Sorts in the specified order */ $order: Order; /** * Specify sort for null, empty or missing values */ $null?: NullOrder; } export interface SortByNumber { /** * Sorts in the specified order */ $order: Order; /** * Specify sort for null, empty or missing values */ $null?: NullOrder; } export interface SortByString { /** * Sorts in the specified order */ $order: Order; /** * Specify sort for null, empty or missing values */ $null?: NullOrder; } export type SortByGeopoint = { /** * Sorts within a geo point */ $point: Geopoint; /** * Sorts in the specified order */ $order: Order; /** * Sorts nearby places within a radius based on another attribute */ $exclude_radius?: number; /** * Buckets geo points into "groups" around the $point */ $precision?: number; }; export interface SortByCondition<T> { /** * Sorts based on conditions */ $expr: FilterByQuery<T>; $order: Order; } export interface SortByTextMatch { /** * Sorts based on conditions */ $order: Order; /** * Divides the result set into 10 buckets from most relevant results to the least relevant */ $buckets?: number; /** * The size of each bucket */ $bucket_size?: number; } type Operator<T> = T extends [lat: number, lng: number] ? SortByGeopoint : T extends (infer U)[] ? Operator<U> : T extends object ? SortByField<T> : T extends boolean ? SortByBoolean : T extends number ? SortByNumber : T extends string ? SortByString : never; type SortByField<T> = { [K in keyof T]?: Operator<T[K]>; }; export type SortBy<T> = { _text_match?: SortByTextMatch; } | { _eval?: SortByCondition<T>[]; } | SortByField<T>; /** * Builds a sort expression with a list of fields and their corresponding sort orders that will be used for ordering your results. * * https://typesense.org/docs/0.24.0/api/search.html#sort-results */ export declare function buildSortBy<T>(query: SortBy<T>): string; export {}; //# sourceMappingURL=buildSortBy.d.ts.map