UNPKG

@kwiz/node

Version:

KWIZ utilities and helpers for node applications

80 lines (79 loc) 3.67 kB
import { UpdateMode } from "@azure/data-tables"; import { IDictionary } from "@kwiz/common"; import { IOdataFilterStatement } from "./odata"; export declare function ConfigureTableStorage(config: { connectionString: string; }): void; export type TableOperationResult<T = never> = { success: true; result?: T; errorCode?: string; } | { success: false; result?: T; errorCode: string; }; type TableEntityBase = { /** * The PartitionKey property of the entity. * Does not allow / \ # ? any control characted (like \n) */ partitionKey: string; /** * The RowKey property of the entity. */ rowKey: string; }; export type TableEntityType<DataType extends TableEntityBase> = { [P in keyof DataType]: string | boolean | Date | number; }; export declare function findTable(tableName: string): Promise<TableOperationResult>; export declare function listTables(): Promise<string[]>; export declare function ensureTable(tableName: string): Promise<TableOperationResult>; export declare function deleteTable(tableName: string): Promise<TableOperationResult>; export declare function getItems<DataType extends TableEntityBase & TableEntityType<DataType>>(tableName: string, options?: { filterStatment?: IOdataFilterStatement<DataType>; postFilter?: (item: DataType) => boolean; }): Promise<TableOperationResult<DataType[]>>; export declare function addItem<DataType extends TableEntityBase & TableEntityType<DataType>>(tableName: string, item: DataType): Promise<TableOperationResult>; export declare function deleteItem(tableName: string, partitionKey: string, rowKey: string): Promise<TableOperationResult>; export declare function upsertItem<DataType extends TableEntityBase & TableEntityType<DataType>>(tableName: string, item: DataType, options?: { mode?: UpdateMode; }): Promise<TableOperationResult>; export declare class Table<KeysType extends TableEntityBase, GetKeysParam, SavedRow extends KeysType & TableEntityType<SavedRow>, ParsedRow = SavedRow> { private tableName; private transform; getKeys: (p: GetKeysParam) => KeysType; /** If your type contains complex values, provide a transforer to serialize/deserialize those complex columns */ constructor(tableName: string, options: { getKeys: (p: GetKeysParam) => KeysType; transform?: { save: (parsed: ParsedRow, table: Table<KeysType, GetKeysParam, SavedRow, ParsedRow>) => SavedRow; load: (saved: SavedRow, table: Table<KeysType, GetKeysParam, SavedRow, ParsedRow>) => ParsedRow; }; }); delete(): Promise<TableOperationResult<never>>; ensure(): Promise<TableOperationResult<never>>; getItems(options?: { filterStatment?: IOdataFilterStatement<SavedRow>; postFilter?: (item: SavedRow) => boolean; }): Promise<{ result: ParsedRow[]; success: true; errorCode?: string; } | { result: ParsedRow[]; success: false; errorCode: string; }>; addItem(item: ParsedRow): Promise<TableOperationResult<never>>; upsertItem(item: ParsedRow, options?: { mode?: UpdateMode; }): Promise<TableOperationResult<never>>; deleteItemByKey(param: GetKeysParam): Promise<TableOperationResult<never>>; deleteItem(item: KeysType): Promise<TableOperationResult<never>>; } export declare const tableColumnLengthLimit = 31999; export declare function overflowColumnValue<T = IDictionary<any>>(item: T, longProps: string | string[], overrideLimit?: number): T; export declare function restoreOverflowColumnValue<T = IDictionary<any>>(item: T, longProps: string | string[]): T; export {};