@darlean/tables-suite
Version:
Tables Suite that provides fast, indexed access to structured data
44 lines (43 loc) • 2.15 kB
TypeScript
/// <reference types="node" />
import { ITableIndexItem, IPersistenceService, ITableGetRequest, ITableGetResponse, ITablePutRequest, ITablePutResponse, ITableSearchRequest, ITableSearchResponse, ITablesService } from '@darlean/base';
import { BufferOf, IDeSer } from '@darlean/utils';
interface IIndexReference {
name: string;
keys: string[];
hash: string;
}
interface IBaseLine {
indexes: IIndexReference[];
}
type Operator = 'none' | 'exact' | 'prefix' | 'lte' | 'gte' | 'between';
export declare class TableActor implements ITablesService {
private id;
private internalId;
private persistence;
private shard;
private deser;
constructor(persistence: IPersistenceService, deser: IDeSer, id: string[], shard: number);
put(request: ITablePutRequest): Promise<ITablePutResponse>;
get(request: ITableGetRequest): Promise<ITableGetResponse>;
search(request: ITableSearchRequest): Promise<ITableSearchResponse>;
searchBuffer(request: ITableSearchRequest): Promise<BufferOf<ITableSearchResponse>>;
private searchImpl;
protected extractDataFields(data?: {
[key: string]: unknown;
} | Buffer): {
[key: string]: unknown;
} | undefined;
protected extractDataBuffer(data?: {
[key: string]: unknown;
} | Buffer): Buffer | undefined;
protected deriveKeyInfo(operator: Operator, sortKey: string[] | undefined, sortKey2: string[] | undefined): [string[] | undefined, string[] | undefined, 'strict' | 'loose'];
protected prefixSortKey(prefix: string[], key: string[] | undefined): string[];
protected fetchBaseline(keys: string[], specifier: string | undefined): Promise<IBaseLine>;
protected getImpl(request: ITableGetRequest): Promise<ITableGetResponse>;
protected calculateHash(item: ITableIndexItem): string;
protected encodeBaseline(baseline: IBaseLine | undefined): string;
protected decodeBaseline(baseline: string | undefined): IBaseLine | undefined;
protected enhanceProjection(filter: string[]): string[];
protected isEmptyProjection(filter?: string[]): boolean;
}
export {};