sqlparser-devexpress
Version:
SQLParser is a JavaScript library that converts SQL `WHERE` clauses into a structured **Abstract Syntax Tree (AST)** and transforms them into DevExpress filter format. It removes inline parameters while preserving them as dynamic variables for flexible qu
39 lines (31 loc) • 2.83 kB
JavaScript
// // Example usage
// // const devExpressFilter = parseFilterString("((ISNULL({0}, 0) = 0 AND CompanyID = {1}) OR CompanyID IS NULL) OR BranchID = {0} | [LeadDocument.BranchID] | [LeadDocument.CompanyID]", sampleResultObject);
// // const devExpressFilter = parseFilterString("FromDate <= '{TransferOutwardDocument.DocDate}' ", sampleResultObject, "TransferOutwardDocument", "789");
// // const devExpressFilter = parseFilterString("(RS2ID in ({SaleOrderStatusStmtGlobalRpt.StateID}) Or ({SaleOrderStatusStmtGlobalRpt.StateID} =0)) And (RS3ID in (0,{SaleOrderStatusStmtGlobalRpt.RegionID}) Or {SaleOrderStatusStmtGlobalRpt.RegionID} =0 )", sampleResultObject,);
// import { convertToDevExpressFormat } from "./core/converter.js";
// import { parse } from "./core/parser.js";
// import { sanitizeQuery } from "./core/sanitizer.js";
// const sampleData = {
// 'LeadStatementGlobalRpt.StateID': null,
// 'LeadStatementGlobalRpt.RegionID': null,
// 'ServiceOrderDocument.SourceID': 2,
// 'CustomerOrders.OrderID': 76548,
// "TransferOutwardDocument.CompanyID": 7,
// }
// export function parseFilterString(filterString, sampleData = null) {
// let { sanitizedSQL, extractedVariables } = sanitizeQuery(filterString);
// console.log("Sanitized SQL:", sanitizedSQL, "\n");
// const parsedResult = parse(sanitizedSQL, extractedVariables);
// extractedVariables = parsedResult.variables;
// console.log("Extracted Variables:", JSON.stringify(extractedVariables, null, 2), "\n");
// const astTree = parsedResult.ast;
// console.log("AST Tree:", JSON.stringify(astTree, null, 2), "\n");
// return convertToDevExpressFormat({ ast: astTree, resultObject: sampleData, options: { isValueNullShortCircuit: true, treatNumberAsNullableBit: true } });
// }
// const devexpress = parseFilterString("ISNULL(CompanyID,0) = ISNULL({TransferOutwardDocument.CompanyID},0) OR ISNULL(CompanyID,0) = 0", sampleData);
// console.log("DevExpress Filter:", JSON.stringify(devexpress, null, 2));
// // const devexpress = parseFilterString("(RS2ID in ({LeadStatementGlobalRpt.StateID}) Or ({LeadStatementGlobalRpt.StateID} =0)) And (RS3ID in (0,{LeadStatementGlobalRpt.RegionID}) Or {LeadStatementGlobalRpt.RegionID} =0 )", sampleData);
// // const devExpressFilter = convertSQLToAst("(RS2ID in ({LeadStatementGlobalRpt.StateID}) Or ({LeadStatementGlobalRpt.StateID} =0)) And (RS3ID in (0,{LeadStatementGlobalRpt.RegionID}) Or {LeadStatementGlobalRpt.RegionID} =0 ) ");
// // const devExpressFilterresult = convertAstToDevextreme(devExpressFilter.ast, devExpressFilter.variables, sampleData);
// // console.log("DevExpress Filter:", JSON.stringify(devExpressFilter, null, 2));
// // console.log("DevExpress Result:", JSON.stringify(devExpressFilterresult, null, 2));