@atomiqlabs/sdk-lib
Version:
Basic SDK functionality library for atomiq
44 lines (43 loc) • 1.61 kB
TypeScript
export type QueryParams = {
key: string;
value: any | any[];
};
export type UnifiedStoredObject = {
id: string;
} & any;
/**
* Defines simple indexes (for queries that use a single key)
*/
export type UnifiedStorageIndexes = readonly {
key: string;
type: "number" | "string" | "boolean";
unique: boolean;
nullable: boolean;
}[];
/**
* Defines composite indexes (for queries that use multiple keys)
*/
export type UnifiedStorageCompositeIndexes = readonly {
keys: readonly string[];
unique: boolean;
}[];
export interface IUnifiedStorage<I extends UnifiedStorageIndexes, C extends UnifiedStorageCompositeIndexes> {
/**
* Initializes the storage with given indexes and composite indexes
* @param indexes
* @param compositeIndexes
*/
init(indexes: I, compositeIndexes: C): Promise<void>;
/**
* Params are specified in the following way:
* - [[condition1, condition2]] - returns all rows where condition1 AND condition2 is met
* - [[condition1], [condition2]] - returns all rows where condition1 OR condition2 is met
* - [[condition1, condition2], [condition3]] - returns all rows where (condition1 AND condition2) OR condition3 is met
* @param params
*/
query(params: Array<Array<QueryParams>>): Promise<Array<UnifiedStoredObject>>;
save(value: UnifiedStoredObject): Promise<void>;
saveAll(value: UnifiedStoredObject[]): Promise<void>;
remove(value: UnifiedStoredObject): Promise<void>;
removeAll(value: UnifiedStoredObject[]): Promise<void>;
}