@ixily/activ
Version:
Alpha Capture Trade Idea Verification. Blockchain ownership proven trade ideas and strategies.
96 lines (91 loc) • 2.67 kB
text/typescript
const CacheProviders = ['none', 'redis', 'memory', 'level'] as const
export type CacheProvider = (typeof CacheProviders)[number]
export interface ICacheDBConfig {
provider: CacheProvider
redisSettings?: {
instance: any
url: string
password: string
database: number
}
levelSettings?: {
instance: any
database: string
}
}
export interface ICacheStorageConfig {
module: ICacheStorage
dbParams?: ICacheDBConfig
isBrowser: boolean
useCache?: boolean
}
export interface ICacheStorage {
/**
* Configure the cache storage
* @param {ICacheStorageConfig} config
* @returns {Promise<void>}
* @description
* - config (general) is the configuration object
* - config.module is the module instance
* - config.dbInstance is the database instance
* - config.isBrowser is a boolean to indicate if the cache storage is running in a browser
*/
config: (config: ICacheStorageConfig) => Promise<void>
/**
* Add data to the cache storage
* @param {string} key
* @param {T} data
* @param {number} expiration
* @returns {Promise<void>}
* @description
* - key is the key to store the data under
* - data is the data to store
* - expiration is the time of life for the data (in seconds)
*/
addData: <T>(key: string, data: T, expiration?: number) => Promise<void>
/**
* Get data from the cache storage
* @param {string} key
* @returns {Promise<T>}
* @description
* - key is the key to retrieve the data from
* - data is the data retrieved
*/
getData: <T>(key: string) => Promise<T | undefined>
/**
* Update data in the cache storage
* @param {string} key
* @param {T} data
* @returns {Promise<void>}
* @description
* - key is the key to update the data under
* - data is the data to update
* - expiration is the time of life for the data (in seconds)
*/
updateData: <T>(key: string, data: T, expiration?: number) => Promise<void>
/**
* Remove data from the cache storage
* @param {string} key
* @returns {Promise<void>}
* @description
* - key is the key to remove the data from
* - data is the data removed
*/
removeData: (key: string) => Promise<void>
/**
* Remove data from the cache storage
* @param {string} pattern
* @returns {Promise<void>}
* @description
* - pattern is the pattern to remove the data
* example: key stored is 'my-data-123-test' then the pattern to remove it is '123'
*/
removeDataByPattern?: (pattern: string) => Promise<void>
/**
* Reset the cache storage
* @returns {Promise<void>}
* @description
* - method to remove all data from the cache storage and delete the database
*/
resetData: () => Promise<void>
}