@ceramicnetwork/common
Version:
Ceramic common types and utilities
83 lines • 2.53 kB
TypeScript
import type { StreamID } from '@ceramicnetwork/streamid';
import type { StreamState } from './stream.js';
export declare type ForwardPagination = {
first: number;
after?: string;
};
export declare type BackwardPagination = {
last: number;
before?: string;
};
export declare type Pagination = ForwardPagination | BackwardPagination;
export declare type BooleanValueFilter = {
isNull: boolean;
} | {
equalTo: boolean;
} | {
notEqualTo: boolean;
};
export declare type CommonValueFilter<T> = {
isNull: boolean;
} | {
equalTo: T;
} | {
notEqualTo: T;
} | {
in: Array<T>;
} | {
notIn: Array<T>;
};
export declare type EnumValueFilter = CommonValueFilter<string>;
export declare type GreaterThanValueFilter<T extends string | number> = {
greaterThan: T;
} | {
greaterThanOrEqualTo: T;
};
export declare type LessThanValueFilter<T extends string | number> = {
lessThan: T;
} | {
lessThanOrEqualTo: T;
};
export declare type RangeValueFilter<T extends string | number> = (GreaterThanValueFilter<T> & Partial<LessThanValueFilter<T>>) | (LessThanValueFilter<T> & Partial<GreaterThanValueFilter<T>>);
export declare type ScalarValueFilter<T extends string | number = string | number> = CommonValueFilter<T> | RangeValueFilter<T>;
export declare type AnyValueFilter = BooleanValueFilter | EnumValueFilter | ScalarValueFilter;
export declare type ObjectFilter = Record<string, AnyValueFilter>;
export declare type QueryFilters = {
where: ObjectFilter;
} | {
and: Array<QueryFilters>;
} | {
or: Array<QueryFilters>;
} | {
not: QueryFilters;
};
export declare type SortOrder = 'ASC' | 'DESC';
export declare type Sorting = Record<string, SortOrder>;
export declare type BaseQuery = {
model?: StreamID | string;
models?: Array<StreamID | string>;
account?: string;
filter?: Record<string, string>;
queryFilters?: QueryFilters;
sorting?: Sorting;
};
export declare type PaginationQuery = BaseQuery & Pagination;
export interface IndexApi {
count(query: BaseQuery): Promise<number>;
query(query: PaginationQuery): Promise<Page<StreamState | null>>;
}
export declare type Edge<T> = {
cursor: string;
node: T;
};
export interface Page<T> {
readonly edges: Array<Edge<T>>;
readonly pageInfo: PageInfo;
}
export declare type PageInfo = {
readonly hasNextPage: boolean;
readonly hasPreviousPage: boolean;
readonly startCursor?: string;
readonly endCursor?: string;
};
//# sourceMappingURL=index-api.d.ts.map