@kwiz/node
Version:
KWIZ utilities and helpers for node applications
80 lines (79 loc) • 3.67 kB
TypeScript
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 {};