UNPKG

azurite

Version:

An open source Azure Storage API compatible server

79 lines 2.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const StorageErrorFactory_1 = tslib_1.__importDefault(require("../errors/StorageErrorFactory")); const QueryParser_1 = tslib_1.__importDefault(require("./QueryInterpreter/QueryParser")); const QueryInterpreter_1 = tslib_1.__importDefault(require("./QueryInterpreter/QueryInterpreter")); const QueryValidator_1 = require("./QueryInterpreter/QueryValidator"); /** * Handles Query Logic For LokiJs Table Implementation * * @export * @class LokiTableStoreQueryGenerator */ class LokiTableStoreQueryGenerator { /** * Will throw an exception on invalid query syntax * * @param queryOptions * @param context * @returns (entity: Entity) => boolean */ static generateQueryForPersistenceLayer(queryOptions, context) { let queryWhere; try { queryWhere = LokiTableStoreQueryGenerator.generateQueryEntityWhereFunction(queryOptions.filter); } catch (e) { throw StorageErrorFactory_1.default.getQueryConditionInvalid(context); } return queryWhere; } /** * Generates the table query function * * @static * @param {(string | undefined)} query * @return {*} {(entity: Table) => boolean} * @memberof LokiTableStoreQueryGenerator */ static generateQueryTableWhereFunction(query) { if (query === undefined) { return () => true; } const queryTree = (0, QueryParser_1.default)(query); (0, QueryValidator_1.validateQueryTree)(queryTree); return (entity) => (0, QueryInterpreter_1.default)(entity, queryTree); } /** * generates a table query for the Loki Js table store * * @static * @param {string} query * @return {*} {string} * @memberof LokiTableStoreQueryGenerator */ static transformTableQuery(query) { const queryTree = (0, QueryParser_1.default)(query); return queryTree.toString(); } /** * generates an entity query for the Loki Js table store * * @static * @param {(string | undefined)} query * @return {*} {(entity: Entity) => boolean} * @memberof LokiTableStoreQueryGenerator */ static generateQueryEntityWhereFunction(query) { if (query === undefined || query === "") { return () => true; } const queryTree = (0, QueryParser_1.default)(query); (0, QueryValidator_1.validateQueryTree)(queryTree); return (entity) => (0, QueryInterpreter_1.default)(entity, queryTree); } } exports.default = LokiTableStoreQueryGenerator; //# sourceMappingURL=LokiTableStoreQueryGenerator.js.map