lemon-core
Version:
Lemon Serverless Micro-Service Platform
72 lines (71 loc) • 1.83 kB
TypeScript
import { GeneralItem, Incrementable } from 'lemon-model';
import 'dotenv/config';
export interface CosmosOption {
databaseName: string;
tableName: string;
idName: string;
sortName?: string;
}
/**
* type `Updatable`: parameter for updateItem
* - update field
* - 'setIndex': array of [index, value] - replace elements in list field
* - 'removeIndex': array of indices - remove elements from list field
*/
interface Updatable {
[key: string]: GeneralItem['key'] | {
setIndex: [number, string | number][];
} | {
removeIndex: number[];
};
}
/**
* class: `CosmosService`
* - basic CRUD service for AZURE CosmosDB.
*/
export declare class CosmosService<T extends GeneralItem> {
protected options: CosmosOption;
constructor(options: CosmosOption);
hello: () => string;
static instance(): Promise<{
client: any;
}>;
createTable(): Promise<void>;
/**
* save-item
* - save whole data with param (use update if partial save)
*
* **WARN** overwrited if exists.
*
* @param id
* @param item
*/
saveItem(_id: string, item: T): Promise<any>;
/**
* read-item
* - read whole data of item.
*
* @param id
* @param sort
*/
readItem(_id: string, sort?: string | number): Promise<any>;
/**
* delete-item
* - destroy whole data of item.
*
* @param id
* @param sort
*/
deleteItem(_id: string, sort?: string | number): Promise<any>;
/**
* update-item (or increment-item)
* - update or create if not exists.
*
* @param id
* @param sort
* @param updates
* @param increments
*/
updateItem(_id: string, sort: string | number, updates: Updatable, increments?: Incrementable): Promise<any>;
}
export {};