UNPKG

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
// // 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));