UNPKG

@azure/cosmos

Version:
117 lines (116 loc) 3.8 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var EncryptionQueryBuilder_exports = {}; __export(EncryptionQueryBuilder_exports, { EncryptionQueryBuilder: () => EncryptionQueryBuilder }); module.exports = __toCommonJS(EncryptionQueryBuilder_exports); var import_TypeMarker = require("./enums/TypeMarker.js"); var import_CosmosEncryptedNumber = require("./CosmosEncryptedNumber.js"); class EncryptionQueryBuilder { query; parameters; constructor(query) { this.query = query; this.parameters = []; } /** * Adds parameter to query */ addParameter(name, value, path) { if (value === null) { this.parameters.push({ name, value: null, path }); return; } switch (true) { case typeof value === "boolean": this.parameters.push({ name, value, type: import_TypeMarker.TypeMarker.Boolean, path }); break; case typeof value === "string": this.parameters.push({ name, value, type: import_TypeMarker.TypeMarker.String, path }); break; case value instanceof Date: { const date = value.toISOString(); this.parameters.push({ name, value: date, type: import_TypeMarker.TypeMarker.String, path }); break; } case isCosmosEncryptedNumber(value): { const num = value.value; if (value.numberType === import_CosmosEncryptedNumber.CosmosEncryptedNumberType.Integer) { this.parameters.push({ name, value: num, type: import_TypeMarker.TypeMarker.Long, path }); } else if (value.numberType === import_CosmosEncryptedNumber.CosmosEncryptedNumberType.Float) { this.parameters.push({ name, value: num, type: import_TypeMarker.TypeMarker.Double, path }); } break; } case Array.isArray(value): this.parameters.push({ name, value, path }); break; case typeof value === "object": this.parameters.push({ name, value, path }); break; default: throw new Error(`Unsupported parameter type for parameter "${name}": ${typeof value}`); } } /** Adds unencrypted parameter to query */ addUnencryptedParameter(name, value, path) { this.parameters.push({ name, value, path }); } /* * @internal */ toEncryptionSqlQuerySpec() { return { query: this.query, parameters: this.parameters }; } } function isCosmosEncryptedNumber(val) { return val !== null && typeof val === "object" && typeof val.value === "number" && typeof val.numberType === "string" && (val.numberType === import_CosmosEncryptedNumber.CosmosEncryptedNumberType.Integer || val.numberType === import_CosmosEncryptedNumber.CosmosEncryptedNumberType.Float); } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { EncryptionQueryBuilder });