@sap-ux/store
Version:
NPM module for storing persistent data
58 lines • 2.06 kB
JavaScript
;
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