@loopback/repository
Version:
Define and implement a common set of interfaces for interacting with databases
75 lines (74 loc) • 2.34 kB
TypeScript
import { DataObject, Options } from '../common-types';
import { Model } from '../model';
import { Repository } from './repository';
/**
* Filter for keys
*/
export type KeyValueFilter = {
/**
* Glob string to use to filter returned keys (i.e. `userid.*`). All
* connectors are required to support `*` and `?`. They may also support
* additional special characters that are specific to the backing database.
*/
match: string;
};
/**
* Key/Value operations for connector implementations
*/
export interface KeyValueRepository<T extends Model> extends Repository<T> {
/**
* Delete an entry by key
*
* @param key - Key for the entry
* @param options - Options for the operation
*/
delete(key: string, options?: Options): Promise<void>;
/**
* Delete all entries
*
* @param key - Key for the entry
* @param options - Options for the operation
*/
deleteAll(options?: Options): Promise<void>;
/**
* Get an entry by key
*
* @param key - Key for the entry
* @param options - Options for the operation
* @returns A promise of the entry
*/
get(key: string, options?: Options): Promise<T>;
/**
* Set an entry with key/value
*
* @param key - Key for the entry
* @param value - Value for the entry
* @param options - Options for the operation
*/
set(key: string, value: DataObject<T>, options?: Options): Promise<void>;
/**
* Set up ttl for an entry by key
*
* @param key - Key for the entry
* @param ttl - Ttl for the entry
* @param options - Options for the operation
*/
expire(key: string, ttl: number, options?: Options): Promise<void>;
/**
* Get ttl for an entry by key
*
* @param key - Key for the entry
* @param options - Options for the operation
* @returns A promise of the TTL value
*/
ttl?(key: string, options?: Options): Promise<number>;
/**
* Get an Iterator for matching keys
*
* @param filter - Filter for keys
* @param options - Options for the operation
* @returns An async iteratable iterator of keys so that the return value can
* be used with `for-await-of`.
*/
keys?(filter?: KeyValueFilter, options?: Options): AsyncIterable<string>;
}