lemon-core
Version:
Lemon Serverless Micro-Service Platform
71 lines (70 loc) • 1.95 kB
TypeScript
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 {};