UNPKG

@sap-ux/store

Version:

NPM module for storing persistent data

58 lines 2.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SystemService = void 0; exports.getInstance = getInstance; const backend_system_1 = require("../data-provider/backend-system"); const backend_system_2 = require("../entities/backend-system"); const i18n_1 = require("../i18n"); class SystemService { dataProvider; logger; constructor(logger, options = {}) { this.logger = logger; this.dataProvider = new backend_system_1.SystemDataProvider(this.logger, options); } async partialUpdate(key, entity) { this.validatePartialUpdateInput(entity); const existingSystem = await this.readOrThrow(key); const updatedEntity = this.mergeProperties(entity, existingSystem); return this.write(updatedEntity); } mergeProperties(update, existingSystem) { const patch = { ...update }; // Make sure we don't mess with key fields delete patch.url; delete patch.client; const updatedEntity = { ...existingSystem, ...patch }; return new backend_system_2.BackendSystem({ ...updatedEntity }); } async readOrThrow(key) { const existingSystem = await this.read(key); if (!existingSystem) { throw new Error((0, i18n_1.text)('error.systemDoesNotExist', { system: key })); } return existingSystem; } validatePartialUpdateInput(entity) { if (!entity || !Object.keys(entity).length) { throw new Error((0, i18n_1.text)('error.noPropertiesSpecified')); } } async read(key) { return this.dataProvider.read(key); } async write(entity) { return this.dataProvider.write(entity); } async delete(entity) { return this.dataProvider.delete(entity); } async getAll() { return this.dataProvider.getAll(); } } exports.SystemService = SystemService; function getInstance(logger, options = {}) { return new SystemService(logger, options); } //# sourceMappingURL=backend-system.js.map