@ixily/activ
Version:
Alpha Capture Trade Idea Verification. Blockchain ownership proven trade ideas and strategies.
77 lines (66 loc) • 1.48 kB
text/typescript
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,
}