sqlparser-devexpress 2.1.0 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sqlparser-devexpress",
3
- "version": "2.1.0",
3
+ "version": "2.1.1",
4
4
  "main": "src/index.js",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -11,6 +11,10 @@
11
11
  "require": "./src/index.js"
12
12
  },
13
13
  "types": "src/@types/default.d.ts",
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://github.com/RohitM-IN/SQLParser.git"
17
+ },
14
18
  "keywords": [
15
19
  "sql",
16
20
  "parser",
@@ -31,7 +31,7 @@ function DevExpressConverter() {
31
31
  let result = processAstNode(ast);
32
32
 
33
33
  // Handle special cases for short circuit
34
- if(result === true || result === false || result === null) return [];
34
+ if (result === true || result === false || result === null) return [];
35
35
 
36
36
  return processAstNode(ast);
37
37
  }
@@ -192,17 +192,13 @@ function DevExpressConverter() {
192
192
  }
193
193
  }
194
194
 
195
- if(Array.isArray(resolvedValue) && resolvedValue.length){
195
+ if (Array.isArray(resolvedValue) && resolvedValue.length) {
196
+
197
+ return resolvedValue.flatMap(i => [[ast.field, '=', i], 'or']).slice(0, -1);
196
198
 
197
- return Array.prototype.concat
198
- .apply(
199
- [],
200
- resolvedValue.map((i) => [[ast.field, '=', i], 'or']),
201
- )
202
- .slice(0, -1)
203
199
  }
204
200
 
205
- return [ast.field, "in", resolvedValue];
201
+ return [ast.field, "=", resolvedValue];
206
202
  }
207
203
 
208
204
  /**
@@ -329,7 +325,14 @@ function DevExpressConverter() {
329
325
  * @returns {boolean|null} The result of the evaluation or null if not evaluable.
330
326
  */
331
327
  function evaluateExpression(left, operator, right) {
332
- if (isNaN(left) || isNaN(right) || left === null || right === null) return null;
328
+ if ((left !== null && isNaN(left)) || (right !== null && isNaN(right))) return null;
329
+
330
+ if (left === null || right === null) {
331
+ if (operator === '=' || operator === '==') return left === right;
332
+ if (operator === '<>' || operator === '!=') return left !== right;
333
+ return null; // Any comparison with null should return null
334
+ }
335
+
333
336
  switch (operator) {
334
337
  case '=': case '==': return left === right;
335
338
  case '<>': case '!=': return left !== right;
@@ -337,7 +340,7 @@ function DevExpressConverter() {
337
340
  case '>=': return left >= right;
338
341
  case '<': return left < right;
339
342
  case '<=': return left <= right;
340
- default: return false;
343
+ default: return null; // Invalid operator
341
344
  }
342
345
  }
343
346
 
@@ -25,9 +25,9 @@ export function parse(input, variables = []) {
25
25
  // const tokens = [];
26
26
  // let tempToken = currentToken;
27
27
  // while (tempToken) {
28
- // tokens.push(tempToken);
29
- // tempToken = tokenizer.peekNextToken();
30
- // tokenizer.nextToken();
28
+ // tokens.push(tempToken);
29
+ // tempToken = tokenizer.peekNextToken();
30
+ // tokenizer.nextToken();
31
31
  // }
32
32
 
33
33
  // console.log("Tokens:", tokens);
package/src/debug.js ADDED
@@ -0,0 +1,40 @@
1
+ // // Example usage
2
+ // // const devExpressFilter = parseFilterString("((ISNULL({0}, 0) = 0 AND CompanyID = {1}) OR CompanyID IS NULL) OR BranchID = {0} | [LeadDocument.BranchID] | [LeadDocument.CompanyID]", sampleResultObject);
3
+ // // const devExpressFilter = parseFilterString("FromDate <= '{TransferOutwardDocument.DocDate}' ", sampleResultObject, "TransferOutwardDocument", "789");
4
+ // // const devExpressFilter = parseFilterString("(RS2ID in ({SaleOrderStatusStmtGlobalRpt.StateID}) Or ({SaleOrderStatusStmtGlobalRpt.StateID} =0)) And (RS3ID in (0,{SaleOrderStatusStmtGlobalRpt.RegionID}) Or {SaleOrderStatusStmtGlobalRpt.RegionID} =0 )", sampleResultObject,);
5
+
6
+ // import { convertToDevExpressFormat } from "./core/converter.js";
7
+ // import { parse } from "./core/parser.js";
8
+ // import { sanitizeQuery } from "./core/sanitizer.js";
9
+ // import { convertAstToDevextreme, convertSQLToAst } from "./index.js";
10
+
11
+ // const sampleData = {
12
+ // 'LeadStatementGlobalRpt.StateID': null,
13
+ // 'LeadStatementGlobalRpt.RegionID': null,
14
+ // 'ServiceOrderDocument.SourceID': 2
15
+ // }
16
+
17
+ // export function parseFilterString(filterString, sampleData = null) {
18
+ // if (filterString.toUpperCase().startsWith("SELECT")) return null; // Skip full SQL queries
19
+
20
+ // let { sanitizedSQL, extractedVariables } = sanitizeQuery(filterString);
21
+ // console.log("Sanitized SQL:", sanitizedSQL, "\n");
22
+
23
+ // const parsedResult = parse(sanitizedSQL, extractedVariables);
24
+ // extractedVariables = parsedResult.variables;
25
+ // console.log("Extracted Variables:", JSON.stringify(extractedVariables, null, 2), "\n");
26
+
27
+ // const astTree = parsedResult.ast;
28
+ // console.log("AST Tree:", JSON.stringify(astTree, null, 2), "\n");
29
+
30
+ // return convertToDevExpressFormat({ ast: astTree, variables: extractedVariables, resultObject: sampleData });
31
+ // }
32
+
33
+ // // const devexpress = parseFilterString("(RS2ID in ({LeadStatementGlobalRpt.StateID}) Or ({LeadStatementGlobalRpt.StateID} =0)) And (RS3ID in (0,{LeadStatementGlobalRpt.RegionID}) Or {LeadStatementGlobalRpt.RegionID} =0 )", sampleData);
34
+ // const devexpress = parseFilterString("{LeadStatementGlobalRpt.RegionID} =0", sampleData);
35
+ // console.log("DevExpress Filter:", JSON.stringify(devexpress, null, 2));
36
+
37
+ // // const devExpressFilter = convertSQLToAst("(RS2ID in ({LeadStatementGlobalRpt.StateID}) Or ({LeadStatementGlobalRpt.StateID} =0)) And (RS3ID in (0,{LeadStatementGlobalRpt.RegionID}) Or {LeadStatementGlobalRpt.RegionID} =0 ) ");
38
+ // // const devExpressFilterresult = convertAstToDevextreme(devExpressFilter.ast, devExpressFilter.variables, sampleData);
39
+ // // console.log("DevExpress Filter:", JSON.stringify(devExpressFilter, null, 2));
40
+ // // console.log("DevExpress Result:", JSON.stringify(devExpressFilterresult, null, 2));
package/src/index.js CHANGED
@@ -19,29 +19,5 @@ export function convertAstToDevextreme(ast, variables, state) {
19
19
  return convertToDevExpressFormat({ ast, variables, resultObject: state })
20
20
  }
21
21
 
22
- // export function parseFilterString(filterString, sampleData = null) {
23
- // if (filterString.toUpperCase().startsWith("SELECT")) return null; // Skip full SQL queries
24
22
 
25
- // let { sanitizedSQL, extractedVariables } = sanitizeQuery(filterString);
26
- // console.log("Sanitized SQL:", sanitizedSQL, "\n");
27
-
28
- // const parsedResult = parse(sanitizedSQL, extractedVariables);
29
- // extractedVariables = parsedResult.variables;
30
- // console.log("Extracted Variables:", JSON.stringify(extractedVariables, null, 2), "\n");
31
-
32
- // const astTree = parsedResult.ast;
33
- // console.log("AST Tree:", JSON.stringify(astTree, null, 2), "\n");
34
-
35
- // return convertToDevExpressFormat({ ast: astTree, variables: extractedVariables, resultObject: sampleData });
36
- // }
37
-
38
- // Example usage
39
- // const devExpressFilter = parseFilterString("((ISNULL({0}, 0) = 0 AND CompanyID = {1}) OR CompanyID IS NULL) OR BranchID = {0} | [LeadDocument.BranchID] | [LeadDocument.CompanyID]", sampleResultObject);
40
- // const devExpressFilter = parseFilterString("FromDate <= '{TransferOutwardDocument.DocDate}' ", sampleResultObject, "TransferOutwardDocument", "789");
41
- // const devExpressFilter = parseFilterString("(RS2ID in ({SaleOrderStatusStmtGlobalRpt.StateID}) Or ({SaleOrderStatusStmtGlobalRpt.StateID} =0)) And (RS3ID in (0,{SaleOrderStatusStmtGlobalRpt.RegionID}) Or {SaleOrderStatusStmtGlobalRpt.RegionID} =0 )", sampleResultObject,);
42
-
43
- // const devExpressFilter = convertSQLToAst("CompanyID = CompanyID2 = {AccountingRule.CompanyID}");
44
- // const devExpressFilterresult = convertAstToDevextreme(devExpressFilter.ast, devExpressFilter.variables,{'ServiceOrderDocument.SourceID': 2});
45
- // console.log("DevExpress Filter:", JSON.stringify(devExpressFilter, null, 2));
46
- // console.log("DevExpress Result:", JSON.stringify(devExpressFilterresult, null, 2));
47
23