UNPKG

@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
"use strict"; 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: [], };