UNPKG

@ixily/activ

Version:

Alpha Capture Trade Idea Verification. Blockchain ownership proven trade ideas and strategies.

77 lines (66 loc) 1.48 kB
import { ICacheDBConfig, ICacheStorage, ICacheStorageConfig, isNullOrUndefined, } from '../../activ-v4' let memoryDB: any = {} const state = { dbParams: { provider: 'memory', } as ICacheDBConfig | undefined, isBrowser: false as boolean, } const config = async (_config: ICacheStorageConfig) => { state.dbParams = _config.dbParams state.isBrowser = _config.isBrowser } export const addData = <T>( key: string, data: T, expiration: number = 0, ): Promise<void> => { memoryDB[key] = data return Promise.resolve() } export const getData = <T>(key: string): Promise<T | undefined> => { const dt = memoryDB[key] if (isNullOrUndefined(dt)) { return Promise.resolve(undefined) } return Promise.resolve(memoryDB[key] as T) } export const updateData = <T>( key: string, data: T, expiration: number = 0, ): Promise<void> => { memoryDB[key] = data return Promise.resolve() } export const removeData = (key: string): Promise<void> => { delete memoryDB[key] return Promise.resolve() } export const removeDataByPattern = (pattern: string): Promise<void> => { const regex = new RegExp(pattern) for (const key in memoryDB) { if (regex.test(key)) { delete memoryDB[key] } } return Promise.resolve() } export const resetData = (): Promise<void> => { memoryDB = {} return Promise.resolve() } export const CacheNodeMemoryStorageModule: ICacheStorage = { config, addData, getData, updateData, removeData, removeDataByPattern, resetData, }