UNPKG

@configurator/ravendb

Version:
80 lines 3.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CompareExchangeValueResultParser = void 0; const CompareExchangeValue_1 = require("./CompareExchangeValue"); const Exceptions_1 = require("../../../Exceptions"); const TypeUtil_1 = require("../../../Utility/TypeUtil"); const ObjectUtil_1 = require("../../../Utility/ObjectUtil"); const Constants_1 = require("../../../Constants"); const MetadataAsDictionary_1 = require("../../../Mapping/MetadataAsDictionary"); class CompareExchangeValueResultParser { static getValues(responseObj, materializeMetadata, conventions, clazz) { const items = responseObj.results; if (!items) { (0, Exceptions_1.throwError)("InvalidOperationException", "Response is invalid. Results is missing."); } const results = {}; for (const item of items) { if (!item) { (0, Exceptions_1.throwError)("InvalidOperationException", "Response is invalid. Item is null"); } const value = CompareExchangeValueResultParser.getSingleValue(item, materializeMetadata, conventions, clazz); results[value.key] = value; } return results; } static getValue(response, materializeMetadata, conventions, clazz) { if (!response) { return null; } const values = CompareExchangeValueResultParser.getValues(response, materializeMetadata, conventions, clazz); const itemsKeys = Object.keys(values); if (!values || !itemsKeys.length) { return null; } return values[itemsKeys[0]]; } static getSingleValue(item, materializeMetadata, conventions, clazz) { if (!item) { return null; } const key = item.key || (0, Exceptions_1.throwError)("InvalidOperationException", "Response is invalid. Key is missing."); const index = item.index; if (TypeUtil_1.TypeUtil.isNullOrUndefined(index)) { (0, Exceptions_1.throwError)("InvalidOperationException", `Response is invalid. Index is ${item.index}.`); } const raw = item.value; const cv = item.changeVector; if (TypeUtil_1.TypeUtil.isNullOrUndefined(raw)) { return new CompareExchangeValue_1.CompareExchangeValue(key, index, null, cv, null); } let metadata; const metadataRaw = raw[Constants_1.CONSTANTS.Documents.Metadata.KEY]; if (metadataRaw && TypeUtil_1.TypeUtil.isObject(metadataRaw)) { metadata = !materializeMetadata ? MetadataAsDictionary_1.MetadataDictionary.create(metadataRaw) : MetadataAsDictionary_1.MetadataDictionary.materializeFromJson(metadataRaw); } let rawValue = raw.object; if (clazz && TypeUtil_1.TypeUtil.isPrimitiveType(clazz) || TypeUtil_1.TypeUtil.isPrimitive(rawValue)) { return new CompareExchangeValue_1.CompareExchangeValue(key, index, rawValue, cv, metadata); } else { if (!rawValue) { return new CompareExchangeValue_1.CompareExchangeValue(key, index, null, cv, metadata); } else { const entityType = conventions.getJsTypeByDocumentType(clazz); if (conventions.entityFieldNameConvention) { rawValue = ObjectUtil_1.ObjectUtil.transformObjectKeys(rawValue, { defaultTransform: conventions.entityFieldNameConvention, recursive: true, arrayRecursive: true }); } const entity = conventions.deserializeEntityFromJson(entityType, rawValue); return new CompareExchangeValue_1.CompareExchangeValue(key, index, entity, cv, metadata); } } } } exports.CompareExchangeValueResultParser = CompareExchangeValueResultParser; //# sourceMappingURL=CompareExchangeValueResultParser.js.map