@visactor/vmind
Version:
<div align="center"> <a href="https://github.com/VisActor#gh-light-mode-only" target="_blank"> <img alt="VisActor Logo" width="200" src="https://github.com/VisActor/.github/blob/main/profile/logo_500_200_light.svg"/> </a> <a href="https://githu
76 lines (65 loc) • 4.09 kB
JavaScript
;
var __importDefault = this && this.__importDefault || function(mod) {
return mod && mod.__esModule ? mod : {
default: mod
};
};
Object.defineProperty(exports, "__esModule", {
value: !0
}), exports.getFinalQueryResult = exports.restoreDatasetAfterQuery = exports.executeDataQuery = exports.patchSQLBeforeQuery = void 0;
const alasql_1 = __importDefault(require("alasql")), utils_1 = require("./utils"), const_1 = require("./const"), patchSQLBeforeQuery = context => {
const {sql: sql, dataTable: dataTable, fieldInfo: fieldInfo, llmFieldInfo: propsLLMFieldInfo} = context, fieldNames = fieldInfo.map((field => field.fieldName)), {validStr: validStr, sqlReplaceMap: sqlReplaceMap, columnReplaceMap: columnReplaceMap} = (0,
utils_1.replaceInvalidWords)(sql, fieldNames), validColumnDataset = (0, utils_1.replaceDataset)(dataTable, columnReplaceMap, !0), validDataset = (0,
utils_1.replaceDataset)(validColumnDataset, sqlReplaceMap, !1), replacedFieldNames = fieldNames.map((field => (0,
utils_1.replaceString)(field, columnReplaceMap))).map((field => (0, utils_1.replaceString)(field, sqlReplaceMap))), validSql = (0,
utils_1.replaceBlankSpace)(validStr, replacedFieldNames), llmFieldInfo = propsLLMFieldInfo.map((field => {
const {fieldName: fieldName} = field, temp = (0, utils_1.replaceString)(fieldName, columnReplaceMap), validFieldName = (0,
utils_1.replaceString)(temp, sqlReplaceMap), matchedFieldName = replacedFieldNames.find((f => (0,
utils_1.matchColumnName)(validFieldName, f)));
return Object.assign(Object.assign({}, field), {
fieldName: null != matchedFieldName ? matchedFieldName : validFieldName
});
}));
return {
finalSql: (0, utils_1.sumAllMeasureFields)(validSql, fieldInfo, columnReplaceMap, sqlReplaceMap),
validDataset: validDataset,
columnReplaceMap: columnReplaceMap,
sqlReplaceMap: sqlReplaceMap,
llmFieldInfo: llmFieldInfo
};
};
exports.patchSQLBeforeQuery = patchSQLBeforeQuery;
const executeDataQuery = context => {
const {finalSql: finalSql, validDataset: validDataset} = context, sqlParts = (finalSql + " ").split(const_1.VMIND_DATA_SOURCE), sqlCount = sqlParts.length - 1, alasqlQuery = sqlParts.join("?");
return {
alasqlDataset: (0, alasql_1.default)(alasqlQuery, new Array(sqlCount).fill(validDataset))
};
};
exports.executeDataQuery = executeDataQuery;
const restoreDatasetAfterQuery = context => {
const {columnReplaceMap: columnReplaceMap, sqlReplaceMap: sqlReplaceMap, alasqlDataset: alasqlDataset, llmFieldInfo: propsLLMFieldInfo} = context, columnReversedMap = (0,
utils_1.swapMap)(columnReplaceMap), columnRestoredDataset = (0, utils_1.replaceDataset)(alasqlDataset, columnReversedMap, !0), sqlReversedMap = (0,
utils_1.swapMap)(sqlReplaceMap);
return {
datasetAfterQuery: (0, utils_1.replaceDataset)(columnRestoredDataset, sqlReversedMap, !1),
llmFieldInfo: propsLLMFieldInfo.map((field => {
const {fieldName: fieldName} = field, temp = (0, utils_1.replaceString)(fieldName, columnReversedMap), validFieldName = (0,
utils_1.replaceString)(temp, sqlReversedMap);
return Object.assign(Object.assign({}, field), {
fieldName: validFieldName
});
}))
};
};
exports.restoreDatasetAfterQuery = restoreDatasetAfterQuery;
const getFinalQueryResult = context => {
const {dataTable: sourceDataset, fieldInfo: fieldInfo, llmFieldInfo: responseFieldInfo, datasetAfterQuery: datasetAfterQuery} = context, fieldInfoNew = (0,
utils_1.parseRespondField)(responseFieldInfo, datasetAfterQuery);
return 0 === datasetAfterQuery.length && console.warn("empty dataset after query!"),
{
dataTable: 0 === datasetAfterQuery.length ? sourceDataset : datasetAfterQuery,
fieldInfo: 0 === datasetAfterQuery.length ? fieldInfo : fieldInfoNew
};
};
exports.getFinalQueryResult = getFinalQueryResult;
//# sourceMappingURL=executeQuery.js.map