@digitalwalletcorp/sql-builder 2.0.0 → 2.1.0

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.
@@ -181,45 +181,98 @@ class SQLBuilder {
181
181
  */
182
182
  const matches = template.matchAll(this.REGEX_TAG_PATTERN);
183
183
  // まず最初にREGEX_TAG_PATTERNで解析した情報をそのままフラットにTagContextの配列に格納
184
- let pos = 0;
184
+ let lastIndex = 0;
185
185
  const tagContexts = [];
186
186
  for (const match of matches) {
187
187
  const matchContent = match[0];
188
188
  const index = match.index;
189
- pos = index + 1;
190
- const tagContext = {
189
+ if (lastIndex < index) {
190
+ tagContexts.push({
191
+ type: 'TEXT',
192
+ match: '',
193
+ contents: template.substring(lastIndex, index),
194
+ startIndex: lastIndex,
195
+ endIndex: index,
196
+ parent: null
197
+ });
198
+ }
199
+ let tagContext = {
191
200
  type: 'BIND', // ダミーの初期値。後続処理で適切なタイプに変更する。
192
- match: matchContent,
193
201
  contents: '',
194
202
  startIndex: index,
195
203
  endIndex: index + matchContent.length,
196
- sub: [],
197
204
  parent: null,
198
- status: 0
205
+ match: matchContent
199
206
  };
200
207
  switch (true) {
201
208
  case matchContent === '/*BEGIN*/': {
202
- tagContext.type = 'BEGIN';
209
+ tagContext = {
210
+ ...tagContext,
211
+ type: 'BEGIN',
212
+ sub: [],
213
+ conditionMatched: false,
214
+ childConditionMatched: false
215
+ };
203
216
  break;
204
217
  }
205
218
  case matchContent.startsWith('/*IF'): {
206
- tagContext.type = 'IF';
219
+ tagContext = {
220
+ ...tagContext,
221
+ type: 'IF',
222
+ sub: [],
223
+ conditionMatched: false,
224
+ childConditionMatched: false
225
+ };
207
226
  const contentMatcher = matchContent.match(/^\/\*IF\s+(.*?)\*\/$/);
208
227
  tagContext.contents = contentMatcher && contentMatcher[1] || '';
209
228
  break;
210
229
  }
230
+ case matchContent.startsWith('/*ELSEIF'): {
231
+ tagContext = {
232
+ ...tagContext,
233
+ type: 'ELSEIF',
234
+ sub: [],
235
+ conditionMatched: false,
236
+ childConditionMatched: false
237
+ };
238
+ const contentMatcher = matchContent.match(/^\/\*ELSEIF\s+(.*?)\*\/$/);
239
+ tagContext.contents = contentMatcher && contentMatcher[1] || '';
240
+ break;
241
+ }
242
+ case matchContent.startsWith('/*ELSE*/'): {
243
+ tagContext = {
244
+ ...tagContext,
245
+ type: 'ELSE',
246
+ sub: [],
247
+ conditionMatched: false,
248
+ childConditionMatched: false
249
+ };
250
+ break;
251
+ }
211
252
  case matchContent.startsWith('/*FOR'): {
212
- tagContext.type = 'FOR';
253
+ tagContext = {
254
+ ...tagContext,
255
+ type: 'FOR',
256
+ sub: [],
257
+ conditionMatched: false,
258
+ childConditionMatched: false
259
+ };
213
260
  const contentMatcher = matchContent.match(/^\/\*FOR\s+(.*?)\*\/$/);
214
261
  tagContext.contents = contentMatcher && contentMatcher[1] || '';
215
262
  break;
216
263
  }
217
264
  case matchContent === '/*END*/': {
218
- tagContext.type = 'END';
265
+ tagContext = {
266
+ ...tagContext,
267
+ type: 'END'
268
+ };
219
269
  break;
220
270
  }
221
271
  default: {
222
- tagContext.type = 'BIND';
272
+ tagContext = {
273
+ ...tagContext,
274
+ type: 'BIND'
275
+ };
223
276
  const contentMatcher = matchContent.match(/\/\*(.*?)\*\//);
224
277
  tagContext.contents = contentMatcher && contentMatcher[1]?.trim() || '';
225
278
  // ダミー値の終了位置をendIndexに設定
@@ -239,15 +292,32 @@ class SQLBuilder {
239
292
  }
240
293
  }
241
294
  tagContexts.push(tagContext);
295
+ lastIndex = tagContext.endIndex;
242
296
  }
243
- // できあがったTagContextの配列から、BEGEN、IFの場合は次の対応するENDが出てくるまでをsubに入れ直して構造化し、
244
- // 以下のような構造の変更する
297
+ // ループを抜けた後に残った部分をTEXTタグとして追加
298
+ if (lastIndex < template.length) {
299
+ tagContexts.push({
300
+ type: 'TEXT',
301
+ match: '',
302
+ contents: template.substring(lastIndex),
303
+ startIndex: lastIndex,
304
+ endIndex: template.length,
305
+ parent: null
306
+ });
307
+ }
308
+ // できあがったTagContextの配列から、
309
+ // BEGENの場合は対応するENDが出てくるまで、
310
+ // IFの場合は次の対応するENDが出てくるまでをsubに入れ直して構造化し、
311
+ // 以下のような構造に変更する
245
312
  /**
246
313
  * ```
247
314
  * BEGIN
248
315
  * ├ IF
249
- * ├ BIND
250
- * ├ BIND
316
+ * ├ BIND(無いこともある)
317
+ * ├ ELSEIF
318
+ * ├ BIND(無いこともある)
319
+ * ├ ELSE
320
+ * ├ BIND(無いこともある)
251
321
  * ├ END
252
322
  * ├ BIND
253
323
  * END
@@ -257,6 +327,20 @@ class SQLBuilder {
257
327
  const newTagContexts = [];
258
328
  for (const tagContext of tagContexts) {
259
329
  switch (tagContext.type) {
330
+ case 'TEXT':
331
+ case 'BIND': {
332
+ const parentTagContext = parentTagContexts[parentTagContexts.length - 1];
333
+ if (parentTagContext) {
334
+ // 親タグがある
335
+ tagContext.parent = parentTagContext;
336
+ parentTagContext.sub.push(tagContext);
337
+ }
338
+ else {
339
+ // 親タグがない(最上位)
340
+ newTagContexts.push(tagContext);
341
+ }
342
+ break;
343
+ }
260
344
  case 'BEGIN':
261
345
  case 'IF':
262
346
  case 'FOR': {
@@ -274,24 +358,41 @@ class SQLBuilder {
274
358
  parentTagContexts.push(tagContext);
275
359
  break;
276
360
  }
361
+ case 'ELSEIF':
362
+ case 'ELSE': {
363
+ const ifTagContext = this.findParentTagContext(parentTagContexts[parentTagContexts.length - 1], 'IF');
364
+ if (ifTagContext) {
365
+ // 親タグ(IF)がある
366
+ tagContext.parent = ifTagContext;
367
+ ifTagContext.sub.push(tagContext);
368
+ }
369
+ else {
370
+ throw new Error(`[SQLBuilder] ${tagContext.type} must be inside IF.`);
371
+ }
372
+ // 後続処理で自身が親になるので自身を追加
373
+ parentTagContexts.push(tagContext); // これは暫定的なものなのでENDで削除する必要がある
374
+ break;
375
+ }
277
376
  case 'END': {
278
- const parentTagContext = parentTagContexts.pop();
279
- // ENDのときは必ず対応するIF/BEGINがあるので、親のsubに追加
377
+ let parentTagContext = parentTagContexts[parentTagContexts.length - 1];
378
+ if (!parentTagContext) {
379
+ throw new Error(`[SQLBuilder] 'END' tag without corresponding parent.`);
380
+ }
381
+ if (parentTagContext.type === 'ELSEIF' || parentTagContext.type === 'ELSE') {
382
+ // 暫定追加されたELSEIF/ELSEを除去
383
+ while (parentTagContexts.length && ['ELSEIF', 'ELSE'].includes(parentTagContexts[parentTagContexts.length - 1].type)) {
384
+ parentTagContexts.pop();
385
+ }
386
+ parentTagContext = parentTagContexts[parentTagContexts.length - 1];
387
+ }
280
388
  tagContext.parent = parentTagContext;
281
389
  parentTagContext.sub.push(tagContext);
390
+ parentTagContexts.pop();
282
391
  break;
283
392
  }
284
393
  default: {
285
- const parentTagContext = parentTagContexts[parentTagContexts.length - 1];
286
- if (parentTagContext) {
287
- // 親タグがある
288
- tagContext.parent = parentTagContext;
289
- parentTagContext.sub.push(tagContext);
290
- }
291
- else {
292
- // 親タグがない(最上位)
293
- newTagContexts.push(tagContext);
294
- }
394
+ // 型定義にない型という扱いになるのでanyキャストする(到達不可能?)
395
+ throw new Error(`[SQLBuilder] Unknown TagType '${tagContext.type}`);
295
396
  }
296
397
  }
297
398
  }
@@ -303,7 +404,7 @@ class SQLBuilder {
303
404
  * @param {SharedIndex} pos 現在処理している文字列の先頭インデックス
304
405
  * @param {string} template
305
406
  * @param {Record<string, any>} entity
306
- * @param {TagContext[]} tagContexts
407
+ * @param {(TagContext | ParentTagContext)[]} tagContexts
307
408
  * @param {*} [options]
308
409
  * ├ bindType BindType
309
410
  * ├ bindIndex number
@@ -314,51 +415,99 @@ class SQLBuilder {
314
415
  let result = '';
315
416
  for (const tagContext of tagContexts) {
316
417
  switch (tagContext.type) {
418
+ case 'TEXT': {
419
+ // テキストは無条件に書き出し
420
+ // 改行だけなど、trimすると空になる文字列もあるが、
421
+ // どの部分がスキップされたのかわかるようにあえて残すことにする
422
+ result += tagContext.contents;
423
+ pos.index = tagContext.endIndex;
424
+ break;
425
+ }
317
426
  case 'BEGIN': {
318
427
  result += template.substring(pos.index, tagContext.startIndex);
319
428
  pos.index = tagContext.endIndex;
320
429
  // BEGINのときは無条件にsubに対して再帰呼び出し
321
430
  const beginBlockResult = this.parse(pos, template, entity, tagContext.sub, options);
322
431
  // BEGIN内のIF、FORのいずれかで成立したものがあった場合は結果を出力
323
- if (tagContext.sub.some(sub => (sub.type === 'IF' || sub.type === 'FOR') && sub.status === 10)) {
432
+ if (tagContext.sub.some(sub => (sub.type === 'IF' || sub.type === 'FOR') && sub.conditionMatched)) {
324
433
  result += beginBlockResult;
325
434
  }
326
435
  break;
327
436
  }
328
437
  case 'IF': {
329
- result += template.substring(pos.index, tagContext.startIndex);
330
- pos.index = tagContext.endIndex;
331
- if (this.evaluateCondition(tagContext.contents, entity)) {
332
- // IF条件が成立する場合はsubに対して再帰呼び出し
333
- tagContext.status = 10; // 成立(→/*BEGIN*/を使っている場合の判定条件になる)
334
- // IFの結果自体は他の要素に影響されないので直接resultに還元可能
335
- result += this.parse(pos, template, entity, tagContext.sub, options);
438
+ const conditionMatched = this.evaluateCondition(tagContext.contents, entity);
439
+ if (conditionMatched) {
440
+ tagContext.conditionMatched = true; // 自身の評価結果
441
+ pos.index = tagContext.endIndex;
442
+ // 条件が成立したので、自身のsubにある条件タグを排除する
443
+ const children = tagContext.sub.filter(a => a.type !== 'ELSEIF' && a.type !== 'ELSE');
444
+ result += this.parse(pos, template, entity, children, options);
445
+ // IFタグからENDを探すときは、自身のsubの最後の要素
446
+ const endTagContext = tagContext.sub[tagContext.sub.length - 1];
447
+ pos.index = endTagContext.endIndex;
336
448
  }
337
449
  else {
338
- // IF条件が成立しない場合は再帰呼び出しせず、subのENDタグのendIndexをposに設定
339
- const endTagContext = tagContext.sub[tagContext.sub.length - 1];
450
+ // 条件不成立
451
+ const nextBranch = tagContext.sub.find(a => a.type === 'ELSEIF' || a.type === 'ELSE');
452
+ if (nextBranch) {
453
+ pos.index = nextBranch.startIndex;
454
+ result += this.parse(pos, template, entity, [nextBranch], options);
455
+ }
456
+ else {
457
+ // 次の条件がない場合はENDの後ろまでポインタを飛ばす
458
+ const endTagContext = tagContext.sub[tagContext.sub.length - 1];
459
+ pos.index = endTagContext.endIndex;
460
+ }
461
+ }
462
+ break;
463
+ }
464
+ case 'ELSEIF':
465
+ case 'ELSE': {
466
+ const conditionMatched = tagContext.type === 'ELSE' || this.evaluateCondition(tagContext.contents, entity);
467
+ if (conditionMatched) {
468
+ tagContext.conditionMatched = true; // 自身の評価結果
469
+ pos.index = tagContext.endIndex;
470
+ // 条件が成立したので、自身のsubにある条件タグを排除する
471
+ const children = tagContext.sub.filter(a => a.type !== 'ELSEIF' && a.type !== 'ELSE');
472
+ result += this.parse(pos, template, entity, children, options);
473
+ // ELSEIF/ELSEからIFを探すときは自身の親そのもの
474
+ const ifTagContext = tagContext.parent;
475
+ ifTagContext.childConditionMatched = true; // 親が持っている評価結果にtrueを設定
476
+ // ELSEIF/ELSEからENDを探すときは、自身の兄弟の最後の要素
477
+ const endTagContext = this.seekSiblingTagContext(tagContext, 'END', 'next');
340
478
  pos.index = endTagContext.endIndex;
341
479
  }
480
+ else {
481
+ // 条件不成立
482
+ const nextBranch = this.seekSiblingTagContext(tagContext, ['ELSEIF', 'ELSE'], 'next');
483
+ if (nextBranch) {
484
+ pos.index = nextBranch.startIndex;
485
+ result += this.parse(pos, template, entity, [nextBranch], options);
486
+ }
487
+ else {
488
+ // 次の条件がない場合はENDの後ろまでポインタを飛ばす
489
+ const endTagContext = tagContext.sub[tagContext.sub.length - 1];
490
+ pos.index = endTagContext.endIndex;
491
+ }
492
+ }
342
493
  break;
343
494
  }
344
495
  case 'FOR': {
345
- result += template.substring(pos.index, tagContext.startIndex);
346
- pos.index = tagContext.endIndex;
347
496
  const [bindName, collectionName] = tagContext.contents.split(':').map(a => a.trim());
348
497
  const array = common.getProperty(entity, collectionName);
349
498
  if (Array.isArray(array) && array.length) {
350
- tagContext.status = 10; // 成立(→/*BEGIN*/を使っている場合の判定条件になる)
499
+ tagContext.conditionMatched = true;
351
500
  for (const value of array) {
352
- // 再帰呼び出しによりposが進むので、ループのたびにposを戻す必要がある
353
- pos.index = tagContext.endIndex;
354
- // FORの結果自体は他の要素に影響されないので直接resultに還元可能
501
+ const children = tagContext.sub.filter(a => a.type !== 'END');
355
502
  result += this.parse(pos, template, {
356
503
  ...entity,
357
504
  [bindName]: value
358
- }, tagContext.sub, options);
359
- // FORループするときは各行で改行する
505
+ }, children, options);
360
506
  result += '\n';
361
507
  }
508
+ // FORのENDまでポインタを進める
509
+ const endTag = tagContext.sub[tagContext.sub.length - 1];
510
+ pos.index = endTag.endIndex;
362
511
  }
363
512
  else {
364
513
  // FORブロックを丸ごとスキップ
@@ -368,20 +517,26 @@ class SQLBuilder {
368
517
  break;
369
518
  }
370
519
  case 'END': {
371
- switch (true) {
372
- case tagContext.parent?.type === 'BEGIN'
373
- && tagContext.parent?.sub.some(a => ['IF', 'FOR'].includes(a.type))
374
- && !tagContext.parent?.sub.some(a => ['IF', 'FOR'].includes(a.type) && a.status === 10):
375
- // BEGINに対応するENDの場合
376
- // ・子要素にIFまたはFORが存在する
377
- // ・子要素のIFまたはFORにstatus=10(成功)を示すものが1つもない
378
- case tagContext.parent?.type === 'IF' && tagContext.parent.status !== 10:
379
- // IFに対応するENDの場合、IFのstatusがstatus=10(成功)になっていない
380
- case tagContext.parent?.type === 'FOR' && tagContext.parent.status !== 10:
381
- // FORに対応するENDの場合、FORのstatusがstatus=10(成功)になっていない
382
- pos.index = tagContext.endIndex;
383
- return '';
384
- default:
520
+ const parent = tagContext.parent;
521
+ if (parent) {
522
+ switch (true) {
523
+ // BEGIN/IF/FORに対応するENDは、それぞれの処理で考慮すると複雑化するので
524
+ // すべてENDタグでどういう状態になったのは判定して動きを制御する
525
+ case parent.type === 'BEGIN'
526
+ && parent.sub.some(a => a.type === 'IF' || a.type === 'FOR')
527
+ && !parent.sub.some(a => a.type === 'IF' || a.type === 'FOR' && a.conditionMatched):
528
+ // BEGINに対応するENDの場合
529
+ // ・子要素にIFまたはFORが存在する
530
+ // ・子要素のIFまたはFORstatus=10(成功)を示すものが1つもない
531
+ case parent.type === 'IF' && !parent.conditionMatched:
532
+ // IFに対応するENDの場合、IFのstatusがstatus=10(成功)になっていない
533
+ case parent.type === 'IF' && parent.sub.some(a => a.type === 'ELSEIF' || a.type === 'ELSE'):
534
+ case parent.type === 'FOR' && !parent.conditionMatched:
535
+ // FORに対応するENDの場合、FORのstatusがstatus=10(成功)になっていない
536
+ pos.index = tagContext.endIndex;
537
+ return result;
538
+ default:
539
+ }
385
540
  }
386
541
  result += template.substring(pos.index, tagContext.startIndex);
387
542
  pos.index = tagContext.endIndex;
@@ -390,14 +545,13 @@ class SQLBuilder {
390
545
  case 'BIND': {
391
546
  result += template.substring(pos.index, tagContext.startIndex);
392
547
  pos.index = tagContext.endIndex;
548
+ const propertyResult = common.getPropertyResult(entity, tagContext.contents);
393
549
  // ★ UNKNOWN_TAG 判定
394
- const hasProperty = Object.prototype.hasOwnProperty.call(entity, tagContext.contents);
395
- if (!hasProperty) {
550
+ if (!propertyResult.exists) {
396
551
  // UNKNOWN_TAG → エラーを発行
397
- throw new Error(`[SQLBuilder] The property "${tagContext.contents}" is not found in the bind entity. (Template index: ${tagContext.startIndex})`);
552
+ throw new Error(`[SQLBuilder] The property '${tagContext.contents}' is not found in the bind entity. (Template index: ${tagContext.startIndex})`);
398
553
  }
399
- const rawValue = common.getProperty(entity, tagContext.contents);
400
- const value = rawValue === undefined ? null : rawValue;
554
+ const value = propertyResult.value === undefined ? null : propertyResult.value;
401
555
  switch (options?.bindType) {
402
556
  case 'postgres': {
403
557
  // PostgreSQL形式の場合、$Nでバインドパラメータを展開
@@ -492,10 +646,71 @@ class SQLBuilder {
492
646
  default:
493
647
  }
494
648
  }
649
+ if (tagContexts.length && tagContexts[0].parent) {
650
+ // IFタグ解析中のELSEIF/ELSEなどが残っている場合は以降の文字列を連結せず、IFの解析結果のみ返す
651
+ return result;
652
+ }
495
653
  // 最後に余った部分を追加する
496
654
  result += template.substring(pos.index);
497
655
  return result;
498
656
  }
657
+ /**
658
+ * 指定したタグから親を遡り、指定したタグタイプのタグコンテキストを返す
659
+ * 見つからない場合はundefinedを返す
660
+ *
661
+ * @param {TagContext | ParentTagContext | null} tagContext
662
+ * @param {T} tagType
663
+ * @returns {(TagContext & { type: T }) | undefined}
664
+ */
665
+ findParentTagContext(tagContext, tagType) {
666
+ let targetTagContext = tagContext;
667
+ while (targetTagContext != null) {
668
+ if (targetTagContext.type === tagType) {
669
+ return targetTagContext;
670
+ }
671
+ targetTagContext = targetTagContext.parent;
672
+ }
673
+ return undefined;
674
+ }
675
+ /**
676
+ * 指定したタグの兄弟をたどり、指定したタグタイプのタグコンテキストを返す
677
+ * 見つからない場合はundefinedを返す
678
+ * ユースケースとしては、ELSEIF/ELSEから同じIFに属するENDを探す
679
+ *
680
+ * @param {TagContext} tagContext
681
+ * @param {TagType | TagType[]} tagType
682
+ * @param {'previous' | 'next'} direction
683
+ * @returns {TagContext | undefined}
684
+ */
685
+ seekSiblingTagContext(tagContext, tagType, direction = 'next') {
686
+ const parent = tagContext.parent;
687
+ if (parent) {
688
+ // 自身が所属するインデックスを取得
689
+ const startIndex = parent.sub.indexOf(tagContext);
690
+ if (startIndex < 0) {
691
+ return undefined;
692
+ }
693
+ const tagTypes = Array.isArray(tagType) ? tagType : [tagType];
694
+ switch (direction) {
695
+ case 'previous':
696
+ for (let i = startIndex - 1; 0 <= i; i--) {
697
+ if (tagTypes.some(a => a === parent.sub[i].type)) {
698
+ return parent.sub[i];
699
+ }
700
+ }
701
+ break;
702
+ case 'next':
703
+ for (let i = startIndex + 1; i < parent.sub.length; i++) {
704
+ if (tagTypes.some(a => a === parent.sub[i].type)) {
705
+ return parent.sub[i];
706
+ }
707
+ }
708
+ break;
709
+ default:
710
+ }
711
+ }
712
+ return undefined;
713
+ }
499
714
  /**
500
715
  * ダミーパラメータの終了インデックスを返す
501
716
  *
@@ -616,7 +831,11 @@ class SQLBuilder {
616
831
  * @returns {string}
617
832
  */
618
833
  extractValue(property, entity, options) {
619
- const value = common.getProperty(entity, property);
834
+ const propertyResult = common.getPropertyResult(entity, property);
835
+ if (!propertyResult.exists) {
836
+ throw new Error(`[SQLBuilder] The property '${property}' is not found in the entity: ${JSON.stringify(entity)}`);
837
+ }
838
+ const value = propertyResult.value;
620
839
  if (value == null) {
621
840
  return 'NULL';
622
841
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sql-builder.js","sourceRoot":"","sources":["../src/sql-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sql-builder.js","sourceRoot":"","sources":["../src/sql-builder.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digitalwalletcorp/sql-builder",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "description": "This is a library for building SQL",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -21,7 +21,8 @@
21
21
  "dynamic",
22
22
  "parameterized",
23
23
  "placeholder",
24
- "S2Dao"
24
+ "S2Dao",
25
+ "Doma"
25
26
  ],
26
27
  "author": "satoshi kotaki",
27
28
  "license": "MIT",
@@ -39,7 +39,7 @@ export class AbstractSyntaxTree {
39
39
  /**
40
40
  * 与えられた条件文字列を構文解析し、entityに対する条件として成立するか評価する
41
41
  *
42
- * @param {string} condition "params != null && params.length > 10" のような条件
42
+ * @param {string} condition 'params != null && params.length > 10' のような条件
43
43
  * @param {Record<string, any>} entity
44
44
  * @returns {boolean}
45
45
  */
@@ -50,9 +50,8 @@ export class AbstractSyntaxTree {
50
50
  const result = this.evaluateRpn(rpnTokens, entity);
51
51
  return result;
52
52
  } catch (error: any) {
53
- error.condition = condition;
54
- error.entity = entity;
55
- throw error;
53
+ const enhancedMessage = `[SQLBuilder] Failed to evaluate IF condition: '/*IF ${condition}*/'. ${error.message}`;
54
+ throw new Error(enhancedMessage);
56
55
  }
57
56
  }
58
57
 
@@ -239,7 +238,7 @@ export class AbstractSyntaxTree {
239
238
  output.push(op);
240
239
  }
241
240
  if (!foundLeftParen) {
242
- throw new Error('[SQLBuilder.AbstractSyntaxTree] Mismatched parentheses');
241
+ throw new Error(`[SQLBuilder.AST] Mismatched parentheses: Found closing ')' without a matching '('. Check your IF condition syntax.`);;
243
242
  }
244
243
  }
245
244
  break;
@@ -250,7 +249,7 @@ export class AbstractSyntaxTree {
250
249
  while (operatorStack.length) {
251
250
  const op = operatorStack.pop()!;
252
251
  if (op.value === '(' || op.value === ')') {
253
- throw new Error('[SQLBuilder.AbstractSyntaxTree] Mismatched parentheses');
252
+ throw new Error(`[SQLBuilder.AST] Mismatched parentheses: An extra '${op.value}' was found or a matching '(' is missing.`);
254
253
  }
255
254
  output.push(op);
256
255
  }