typesense-utils
Version:
A list of utilities for typesense search engine
96 lines • 2.41 kB
TypeScript
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