UNPKG

ottoman

Version:
60 lines 2.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getProjectionFields = exports.extractSelect = void 0; /** * Extract the values to be used on select clause. */ const query_1 = require("../../query"); const constants_1 = require("../constants"); const extractSelect = (select, options = {}, excludeMeta = false, modelKey) => { const { noCollection } = options; let selectProjection = []; if (select) { selectProjection = Array.isArray(select) ? select : (0, query_1.parseStringSelectExpr)(select); } const metadata = excludeMeta ? [] : getMetadata(noCollection, modelKey); return [...new Set([...selectProjection, ...metadata])]; }; exports.extractSelect = extractSelect; const getProjectionFields = (selectDot, select = '', options = {}, modelKey = constants_1.MODEL_KEY) => { let fields = []; let projection = ''; const metadata = getMetadata(options.noCollection, modelKey); if (typeof select === 'string') { if (!select) { projection = [`\`${selectDot}\`.*`].join(','); } else { projection = [select, ...metadata].join(','); } fields = (0, exports.extractSelect)(select, { noCollection: options.noCollection }, true, modelKey); } else if (Array.isArray(select) && select.length > 0) { if (typeof select[0] === 'string') { projection = [select, ...metadata].join(','); fields = (0, exports.extractSelect)(select, { noCollection: options.noCollection, }, true, modelKey); } else { const selectExpr = (0, query_1.buildSelectArrayExpr)(select); projection = [selectExpr, ...metadata].join(','); fields = (0, exports.extractSelect)(selectExpr.replace(/`/g, ''), { noCollection: options.noCollection, }, true, modelKey); } } return { projection, fields, }; }; exports.getProjectionFields = getProjectionFields; const getMetadata = (noCollection, modelKey) => { const metadataSelect = []; if (!noCollection && modelKey) { metadataSelect.push(modelKey); } return metadataSelect; }; //# sourceMappingURL=extract-select.js.map