@looker/embed-services
Version:
39 lines (38 loc) • 1.42 kB
TypeScript
import type { IAPIMethods } from '@looker/sdk-rtl';
import { EntityService } from './EntityService';
export declare const DEFAULT_TTL = 900;
export interface GetOptions {
useCache?: boolean;
[key: string]: any;
}
export interface IItemList<T extends Record<string, any>> {
readonly timeToLive: number;
items: T[];
readonly expiresAt: number;
index(key?: keyof T): ItemList<T>;
indexedItems: Record<string, T>;
expired(): boolean;
setExpiration(): void;
clearIfExpired(): void;
find(key: keyof T | Array<keyof T>, value: any): T | undefined;
getCacheDefault(options?: GetOptions): boolean;
}
export interface IEntityService<T extends Record<string, any>> extends IItemList<T> {
get(id: string, options?: GetOptions): Promise<T>;
set(id: string, item: T): Promise<T>;
getAll(...options: any[]): Promise<IItemList<T>>;
delete(id: string): void;
}
export declare abstract class ItemList<T extends Record<string, any>> extends EntityService implements IItemList<T> {
items: T[];
indexedItems: Record<string, T>;
expiresAt: number;
private keyField;
constructor(sdk: IAPIMethods, timeToLive?: number);
index(key?: keyof T): this;
setExpiration(): void;
expired(): boolean;
clearIfExpired(): void;
find(key: keyof T | Array<keyof T>, expression: string): T | undefined;
getCacheDefault(options?: GetOptions): boolean;
}