@ministryofjustice/hmpps-digital-prison-reporting-frontend
Version:
The Digital Prison Reporting Frontend contains templates and code to help display data effectively in UI applications.
43 lines (42 loc) • 1.55 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const logger_1 = __importDefault(require("../utils/logger"));
class ReportDataStore {
constructor(redisClient, prefix = 'dprReportStoreUser:') {
this.redisClient = redisClient;
redisClient.on('error', (error) => {
logger_1.default.error(error, `Redis error`);
});
this.prefix = prefix;
}
async ensureConnected() {
if (!this.redisClient.isOpen) {
await this.redisClient.connect();
}
}
async setUserConfig(userId, config) {
await this.ensureConnected();
await this.redisClient.set(`${this.prefix}${userId}`, JSON.stringify(config));
}
async getUserConfig(userId) {
await this.ensureConnected();
const userConfig = await this.redisClient.get(`${this.prefix}${userId}`);
return userConfig ? JSON.parse(userConfig) : this.setBaseplate(userId);
}
async setBaseplate(userId) {
logger_1.default.info(`Initialising new DPR user config in store. prefix: ${this.prefix}`);
const userConfig = { ...baseplateStore };
await this.setUserConfig(userId, userConfig);
return { ...baseplateStore };
}
}
exports.default = ReportDataStore;
const baseplateStore = {
requestedReports: [],
recentlyViewedReports: [],
bookmarks: [],
downloadPermissions: [],
};