@nasriya/cachify
Version:
A lightweight, extensible in-memory caching library for storing anything, with built-in TTL and customizable cache types.
83 lines (82 loc) • 3.55 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const consts_1 = __importDefault(require("../../core/consts/consts"));
const helpers_1 = __importDefault(require("../../core/persistence/helpers/helpers"));
class ExtPersistenceManager {
#_cache;
#_persistence;
constructor(persistence, client) {
this.#_persistence = persistence;
this.#_cache = client;
}
/**
* Initiates a backup process for the specified cache flavor and storage service.
*
* This function dispatches the backup operation to the appropriate cache manager
* based on the provided cache flavor. The `kvs` flavor targets the key-value cache,
* while the `files` flavor targets the file cache.
*
* @template F - The cache flavor type, indicating the cache source.
* @template S - The type of storage service to back up to.
* @param {S} to - The target storage service for the backup.
* @param {...BackupParameters<S>} args - Additional parameters for the backup operation.
* @returns {Promise<void>} Resolves when the backup operation completes.
* @throws {Error} If the specified cache flavor is unsupported.
*/
async backup(to, ...args) {
for (const flavor of consts_1.default.CACHE_FLAVORS) {
const manager = this.#_cache[flavor];
if (manager && typeof manager.backup === 'function') {
if (manager.size === 0) {
continue;
}
await manager.backup(to, ...args);
}
}
}
/**
* Initiates a restore process from the specified storage service for all cache flavors.
*
* This function dispatches the restore operation to the appropriate cache manager
* based on the provided cache flavor. The `kvs` flavor targets the key-value cache,
* while the `files` flavor targets the file cache.
*
* @template S - The type of storage service to restore from.
* @param {S} service - The target storage service for the restore.
* @param {...RestoreParameters<S>} args - Additional parameters for the restore operation.
* @returns {Promise<void>} Resolves when the restore operation completes.
* @throws {Error} If the specified cache flavor is unsupported.
*/
async restore(service, ...args) {
for (const flavor of consts_1.default.CACHE_FLAVORS) {
const manager = this.#_cache[flavor];
if (manager && typeof manager.backup === 'function') {
await manager.restore(service, ...args);
}
}
}
/**
* Schedules a persistence operation for the specified cache flavor and storage service.
*
* This function is a no-op until the persistence manager is fully implemented.
*
*/
schedule() {
}
/**
* Registers a persistence service with the external persistence manager.
*
* @template S - The type of storage service.
* @param {S} service - The type of storage service to be added.
* @param {PersistanceStorageServices[S]['configs']} configs - The configuration settings for the service.
* @since v1.0.0
*/
use(service, configs) {
helpers_1.default.validateService(service, configs);
this.#_persistence.defineAdapter(service, configs);
}
}
exports.default = ExtPersistenceManager;