claire-framework
Version:
- được viết bằng TypeScript - hỗ trợ websocket và HTTP request - hỗ trợ CLI để generate base project (claire-cli)
87 lines • 6.83 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const redis_1 = __importDefault(require("redis"));
const AbstractCacheAdapter_1 = require("../cache/AbstractCacheAdapter");
const ClaireError_1 = require("../system/ClaireError");
const errors_1 = require("../system/errors");
class DefaultRedisCacheAdapter extends AbstractCacheAdapter_1.AbstractCacheAdapter {
constructor(serverUrl, namespace) {
super();
this.serverUrl = serverUrl;
this.namespace = namespace;
}
isPersistent() {
return true;
}
init() {
return __awaiter(this, void 0, void 0, function* () {
this.redisClient = redis_1.default.createClient(this.serverUrl, {
prefix: this.namespace,
});
return yield new Promise((resolve, reject) => {
this.redisClient.on("connect", (err) => {
if (err) {
return reject(new ClaireError_1.ClaireError(errors_1.CONNECTION_ERROR, err.stack || String(err)));
}
return resolve();
});
});
});
}
setCache(key, value, expireAfterSecond) {
return __awaiter(this, void 0, void 0, function* () {
return new Promise((resolve, reject) => {
if (!!expireAfterSecond) {
this.redisClient.set(key, JSON.stringify(value), "EX", expireAfterSecond, (err) => {
if (err) {
return reject(new ClaireError_1.ClaireError(errors_1.QUERY_ERROR, err.stack || String(err)));
}
return resolve();
});
}
else {
this.redisClient.set(key, JSON.stringify(value), (err) => {
if (err) {
return reject(new ClaireError_1.ClaireError(errors_1.QUERY_ERROR, err.stack || String(err)));
}
return resolve();
});
}
});
});
}
getCache(key) {
return new Promise((resolve, reject) => {
this.redisClient.get(key, (err, reply) => {
if (err || (reply === null)) {
return reject(new ClaireError_1.ClaireError(errors_1.QUERY_ERROR));
}
return resolve(JSON.parse(reply));
});
});
}
flush() {
return new Promise((resolve, reject) => {
this.redisClient.flushall("ASYNC", (err) => {
if (!!err) {
reject(err);
}
resolve();
});
});
}
}
exports.DefaultRedisCacheAdapter = DefaultRedisCacheAdapter;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdFJlZGlzQ2FjaGVBZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2RlZmF1bHQtaW1wbGVtZW50YXRpb25zL0RlZmF1bHRSZWRpc0NhY2hlQWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLGtEQUEwQjtBQUMxQix3RUFBbUU7QUFDbkUsdURBQWtEO0FBQ2xELDZDQUErRDtBQUUvRCxNQUFhLHdCQUF5QixTQUFRLDJDQUFvQjtJQU85RCxZQUFtQixTQUFpQixFQUFFLFNBQWlCO1FBQ25ELEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDL0IsQ0FBQztJQUVNLFlBQVk7UUFDZixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRVksSUFBSTs7WUFDYixJQUFJLENBQUMsV0FBVyxHQUFHLGVBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDbEQsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTO2FBQ3pCLENBQUMsQ0FBQztZQUNILE9BQU8sTUFBTSxJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDL0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7b0JBQ3hDLElBQUksR0FBRyxFQUFFO3dCQUNMLE9BQU8sTUFBTSxDQUFDLElBQUkseUJBQVcsQ0FBQyx5QkFBZ0IsRUFBRSxHQUFHLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQzlFO29CQUNELE9BQU8sT0FBTyxFQUFFLENBQUM7Z0JBQ3JCLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0tBQUE7SUFFWSxRQUFRLENBQWdCLEdBQVcsRUFBRSxLQUFRLEVBQUUsaUJBQTBCOztZQUNsRixPQUFPLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUN6QyxJQUFJLENBQUMsQ0FBQyxpQkFBaUIsRUFBRTtvQkFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7d0JBQ25GLElBQUksR0FBRyxFQUFFOzRCQUNMLE9BQU8sTUFBTSxDQUFDLElBQUkseUJBQVcsQ0FBQyxvQkFBVyxFQUFFLEdBQUcsQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzt5QkFDekU7d0JBQ0QsT0FBTyxPQUFPLEVBQUUsQ0FBQztvQkFDckIsQ0FBQyxDQUFDLENBQUM7aUJBQ047cUJBQU07b0JBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTt3QkFDMUQsSUFBSSxHQUFHLEVBQUU7NEJBQ0wsT0FBTyxNQUFNLENBQUMsSUFBSSx5QkFBVyxDQUFDLG9CQUFXLEVBQUUsR0FBRyxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO3lCQUN6RTt3QkFDRCxPQUFPLE9BQU8sRUFBRSxDQUFDO29CQUNyQixDQUFDLENBQUMsQ0FBQztpQkFDTjtZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztLQUFBO0lBRU0sUUFBUSxDQUFnQixHQUFXO1FBQ3RDLE9BQU8sSUFBSSxPQUFPLENBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBUSxFQUFFLEtBQWEsRUFBRSxFQUFFO2dCQUNsRCxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsRUFBRTtvQkFDekIsT0FBTyxNQUFNLENBQUMsSUFBSSx5QkFBVyxDQUFDLG9CQUFXLENBQUMsQ0FBQyxDQUFDO2lCQUMvQztnQkFDRCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBTSxDQUFDLENBQUM7WUFDM0MsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxLQUFLO1FBQ1IsT0FBTyxJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN6QyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDNUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFO29CQUNQLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDZjtnQkFDRCxPQUFPLEVBQUUsQ0FBQztZQUNkLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBRUo7QUF6RUQsNERBeUVDIn0=