UNPKG

lemon-core

Version:
71 lines (70 loc) 1.95 kB
import { GeneralItem } from 'lemon-model'; import { DynamoOption } from './dynamo-service'; 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; } /** * interface: DynamoScanFilter * - for joining multiple conditions with logical AND -> Array * - for joining multiple conditions with logical OR -> { or: Array } */ declare type Condition = ComparisonCondition | BetweenCondition | ExistenceCondition | StringCondition; export declare type DynamoScanFilter = (Condition | { not: Condition; }) | DynamoScanFilter[] | { or: DynamoScanFilter[]; }; /** * class: DynamoScanResult * - result information of scan. */ export interface DynamoScanResult<T> { list: T[]; count?: number; last?: any; } /** * feature: `DynamoSimpleScannable` * - simple scan capable class. */ export interface DynamoSimpleScannable<T extends GeneralItem> { /** * simple filtered scan w/ limit. * * @param limit limit of page * @param last the last evaluated key * @param filter scan filter */ scan(limit?: number, last?: any, filter?: DynamoScanFilter): Promise<DynamoScanResult<T>>; } /** * class: `DynamoScanService` * - support simple scan like range scan. */ export declare class DynamoScanService<T extends GeneralItem> implements DynamoSimpleScannable<T> { protected options: DynamoOption; constructor(options: DynamoOption); /** * say hello of identity. */ hello: () => string; scan(limit?: number, last?: any, filter?: DynamoScanFilter): Promise<DynamoScanResult<T>>; private buildPayload; } export {};