UNPKG

lemon-core

Version:
81 lines (80 loc) 2.36 kB
import { GeneralItem } from 'lemon-model'; import { CosmosOption } from './cosmos-service'; /** * ComparisonCondition - arithmetic comparison (EQ, NE, LE, LT, GE, GT) * NOTE: '!=' is shortcut to { not: { comparator: '=' } } */ type Condition = ComparisonCondition | BetweenCondition | ExistenceCondition | StringCondition; interface ComparisonCondition { key: string; comparator: '=' | '!=' | '<=' | '<' | '>=' | '>'; value: number | string; } interface BetweenCondition { key: string; from: number | string; to: number | string; } interface ExistenceCondition { key: string; exists: boolean; } interface StringCondition { key: string; operator: 'begins_with' | 'contains'; value: string; } export type CosmosQueryFilter = (Condition | { not: Condition; }) | CosmosQueryFilter[] | { or: CosmosQueryFilter[]; }; /** * class: CosmosQueryResult * - result information of scan. */ export interface CosmosQueryResult<T> { list: T[]; total?: number; last?: any; } /** * feature: `CosmosScannable` * - simple scan capable class. */ export interface CosmosScannable<T extends GeneralItem> { /** * simple scan w/ limit. * @param limit limit of page * @param last last result on previous page using continuation token * @param conditions */ scan(limit?: number, last?: any, conditions?: CosmosQueryFilter): Promise<CosmosQueryResult<T>>; } export declare class QueryBuilder { buildConditionExpression(condition: Condition): Promise<string>; buildQueryByConditions(conditions: CosmosQueryFilter): Promise<string>; } export declare class QueryService { protected options: CosmosOption; constructor(options: CosmosOption); queryItems(query: string, limit?: number, last?: any): Promise<{ queryResult: any[]; continuationToken?: any; }>; } export declare class CosmosQueryService<T extends GeneralItem> implements CosmosScannable<T> { protected options: CosmosOption; private queryService; private queryBuilder; constructor(options: CosmosOption); /** * say hello of identity. */ hello: () => string; /** * Read items by conditions using dynamic query */ scan(limit?: number, last?: any, conditions?: CosmosQueryFilter): Promise<CosmosQueryResult<T>>; } export {};