@digitalwalletcorp/sql-builder 1.6.0 → 1.6.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/README.md CHANGED
@@ -251,6 +251,30 @@ Parameters:
251
251
  [ 123, 'project_a', 'project_b' ]
252
252
  ```
253
253
 
254
+ ###### ⚠️ PostgreSQL-specific notes
255
+
256
+ When using PostgreSQL-specific features such as `ANY` with array parameters,
257
+ the SQL template must be written in a form that is valid PostgreSQL SQL by itself.
258
+
259
+ For example, to use `ANY` with a text array, write the array literal directly in the template.
260
+ The builder will replace the **entire array literal** with a single bind placeholder:
261
+
262
+ ```sql
263
+ AND user_id = ANY (/*userIds*/ARRAY['U100','U101']::text[])
264
+ ```
265
+
266
+ This will be rendered as:
267
+
268
+ ```sql
269
+ AND user_id = ANY ($1::text[])
270
+ ```
271
+
272
+ with the following bind parameters:
273
+
274
+ ```typescript
275
+ [ ['U100', 'U101'] ]
276
+ ```
277
+
254
278
  ##### Example 4: INSERT with NULL normalization
255
279
 
256
280
  **Template:**
@@ -56,6 +56,7 @@ type BindParameterType<T extends BindType> = T extends 'postgres' ? any[] : T ex
56
56
  */
57
57
  export declare class SQLBuilder {
58
58
  private REGEX_TAG_PATTERN;
59
+ private PGSQL_ARRAY_CAST_PATTERN;
59
60
  private bindType?;
60
61
  constructor(bindType?: BindType);
61
62
  /**
@@ -96,7 +96,11 @@ const dbTypes = [
96
96
  * ```
97
97
  */
98
98
  class SQLBuilder {
99
+ // `/*xxx*/`の部分を抽出するパターン
99
100
  REGEX_TAG_PATTERN = /\/\*(.*?)\*\//g;
101
+ // `ANY (/*bindParam*/ARRAY['John']::text[])`の`ARRAY[...]::...[]`部分を抽出するパターン
102
+ // `array [100, 200] :: numeric(10, 2) []` のようなパターンも存在する
103
+ PGSQL_ARRAY_CAST_PATTERN = /^ARRAY\s*\[.*?\]\s*::\s*([a-zA-Z_]\w*(?:\([^\)]*\))?)\s*\[\]/i;
100
104
  bindType;
101
105
  constructor(bindType) {
102
106
  this.bindType = bindType;
@@ -222,10 +226,15 @@ class SQLBuilder {
222
226
  const dummyEndIndex = this.getDummyParamEndIndex(template, tagContext);
223
227
  tagContext.endIndex = dummyEndIndex;
224
228
  // PostgreSQL ANY/CAST構文判定
225
- // 例) AND name = ANY (/*names*/('Bob')::text[]) => AND name = ANY ($1::text[])
226
- const afterDummy = template.substring(dummyEndIndex);
227
- if (/^\s*::\s*\w+\s*\[\s*\]/.test(afterDummy)) {
229
+ // 例) AND name = ANY (/*names*/ARRAY['Bob']::text[]) => AND name = ANY ($1::text[])
230
+ if (/ARRAY\s*\[/i.test(template.substring(tagContext.startIndex, dummyEndIndex))) {
228
231
  tagContext.isPgArray = true;
232
+ // CAST部分の抽出
233
+ const dummySql = template.substring(tagContext.startIndex, dummyEndIndex);
234
+ const castMatch = dummySql.match(/(::\s*\w+\s*\[\s*\])/);
235
+ if (castMatch) {
236
+ tagContext.pgArrayCast = castMatch[1];
237
+ }
229
238
  }
230
239
  }
231
240
  }
@@ -392,21 +401,23 @@ class SQLBuilder {
392
401
  switch (options?.bindType) {
393
402
  case 'postgres': {
394
403
  // PostgreSQL形式の場合、$Nでバインドパラメータを展開
395
- if (Array.isArray(value)) {
396
- if (tagContext.isPgArray) {
397
- // ANY / ALL 構文の場合
398
- options.bindParams.push(value);
399
- result += `$${options.bindIndex++}`;
404
+ if (tagContext.isPgArray) {
405
+ if (!tagContext.pgArrayCast) {
406
+ throw new Error(`[SQLBuilder] PostgreSQL ARRAY bind requires explicit cast (e.g. ARRAY[...]::text[]). ` +
407
+ `Property: ${tagContext.contents}, index: ${tagContext.startIndex}`);
400
408
  }
401
- else {
402
- // IN句の場合
403
- const placeholders = [];
404
- for (const item of value) {
405
- placeholders.push(`$${options.bindIndex++}`);
406
- options.bindParams.push(item);
407
- }
408
- result += `(${placeholders.join(',')})`; // IN ($1,$2,$3)
409
+ options.bindParams.push(value);
410
+ const cast = tagContext.pgArrayCast ?? ''; // ::text[] などのCAST部分がついている場合は書き戻す
411
+ result += `$${options.bindIndex++}${cast}`;
412
+ }
413
+ else if (Array.isArray(value)) {
414
+ // IN句の場合
415
+ const placeholders = [];
416
+ for (const item of value) {
417
+ placeholders.push(`$${options.bindIndex++}`);
418
+ options.bindParams.push(item);
409
419
  }
420
+ result += `(${placeholders.join(',')})`; // IN ($1,$2,$3)
410
421
  }
411
422
  else {
412
423
  options.bindParams.push(value);
@@ -553,6 +564,13 @@ class SQLBuilder {
553
564
  return i;
554
565
  case c === ',':
555
566
  return i;
567
+ case c === 'A' || c === 'a':
568
+ // PostgreSQLの`ANY (/*bindParam*/ARRAY['John']::text[])`を解析するパターン
569
+ const target = template.substring(i);
570
+ const match = target.match(this.PGSQL_ARRAY_CAST_PATTERN);
571
+ if (match) {
572
+ return i + match[0].length;
573
+ }
556
574
  default:
557
575
  }
558
576
  }
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAmC;AACnC,iEAA4D;AAU5D;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,GAAG;IACd,UAAU;IACV,OAAO;IACP,QAAQ;IACR,OAAO;CACC,CAAC;AA4BX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAa,UAAU;IAErB,wBAAwB;IAChB,iBAAiB,GAAG,gBAAgB,CAAC;IAE7C,4EAA4E;IAC5E,wDAAwD;IAChD,wBAAwB,GAAG,+DAA+D,CAAC;IAE3F,QAAQ,CAAY;IAE5B,YAAY,QAAmB;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACI,WAAW,CAAC,QAAgB,EAAE,MAA2B;QAC9D;;WAEG;QACH,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC3D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,GAAG,GAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAC9D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;OAQG;IACI,wBAAwB,CAAqB,QAAgB,EAAE,MAA2B,EAAE,QAAY;QAE7G,MAAM,EAAE,GAAG,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;QAErC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,kGAAkG,CAAC,CAAC;QACtH,CAAC;QAED,IAAI,UAAgC,CAAC;QACrC,QAAQ,EAAE,EAAE,CAAC;YACX,KAAK,UAAU,CAAC;YAChB,KAAK,OAAO;gBACV,UAAU,GAAG,EAAqC,CAAC;gBACnD,MAAM;YACR,KAAK,QAAQ,CAAC;YACd,KAAK,OAAO;gBACV,UAAU,GAAG,EAA0B,CAAC;gBACxC,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,uCAAuC,EAAE,EAAE,CAAC,CAAC;QACjE,CAAC;QAED;;WAEG;QACH,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC3D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,GAAG,GAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE;YAC5D,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,CAAC;YACZ,UAAU,EAAE,UAAU;SACvB,CAAC,CAAC;QACH,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACK,iBAAiB,CAAC,QAAgB;QACxC,oDAAoD;QACpD;;WAEG;QACH,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE1D,0DAA0D;QAC1D,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,MAAM,WAAW,GAAiB,EAAE,CAAC;QACrC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAC1B,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;YAChB,MAAM,UAAU,GAAe;gBAC7B,IAAI,EAAE,MAAM,EAAE,4BAA4B;gBAC1C,KAAK,EAAE,YAAY;gBACnB,QAAQ,EAAE,EAAE;gBACZ,UAAU,EAAE,KAAK;gBACjB,QAAQ,EAAE,KAAK,GAAG,YAAY,CAAC,MAAM;gBACrC,GAAG,EAAE,EAAE;gBACP,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,CAAC;aACV,CAAC;YACF,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,YAAY,KAAK,WAAW,CAAC,CAAC,CAAC;oBAClC,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC;oBAC1B,MAAM;gBACR,CAAC;gBACD,KAAK,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACrC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;oBACvB,MAAM,cAAc,GAAG,YAAY,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;oBAClE,UAAU,CAAC,QAAQ,GAAG,cAAc,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAChE,MAAM;gBACR,CAAC;gBACD,KAAK,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBACtC,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC;oBACxB,MAAM,cAAc,GAAG,YAAY,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;oBACnE,UAAU,CAAC,QAAQ,GAAG,cAAc,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAChE,MAAM;gBACR,CAAC;gBACD,KAAK,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC;oBAChC,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC;oBACxB,MAAM;gBACR,CAAC;gBACD,OAAO,CAAC,CAAC,CAAC;oBACR,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC;oBACzB,MAAM,cAAc,GAAG,YAAY,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;oBAC3D,UAAU,CAAC,QAAQ,GAAG,cAAc,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;oBACxE,wBAAwB;oBACxB,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;oBACvE,UAAU,CAAC,QAAQ,GAAG,aAAa,CAAC;oBAEpC,0BAA0B;oBAC1B,mFAAmF;oBACnF,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC;wBACjF,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC;wBAC5B,YAAY;wBACZ,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;wBAC1E,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;wBACzD,IAAI,SAAS,EAAE,CAAC;4BACd,UAAU,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;wBACxC,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/B,CAAC;QAED,oEAAoE;QACpE,gBAAgB;QAChB;;;;;;;;;;WAUG;QACH,MAAM,iBAAiB,GAAiB,EAAE,CAAC;QAC3C,MAAM,cAAc,GAAiB,EAAE,CAAC;QACxC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;gBACxB,KAAK,OAAO,CAAC;gBACb,KAAK,IAAI,CAAC;gBACV,KAAK,KAAK,CAAC,CAAC,CAAC;oBACX,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBACzE,IAAI,gBAAgB,EAAE,CAAC;wBACrB,SAAS;wBACT,UAAU,CAAC,MAAM,GAAG,gBAAgB,CAAC;wBACrC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACxC,CAAC;yBAAM,CAAC;wBACN,cAAc;wBACd,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAClC,CAAC;oBACD,sBAAsB;oBACtB,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACnC,MAAM;gBACR,CAAC;gBACD,KAAK,KAAK,CAAC,CAAC,CAAC;oBACX,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,EAAG,CAAC;oBAClD,sCAAsC;oBACtC,UAAU,CAAC,MAAM,GAAG,gBAAgB,CAAC;oBACrC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACtC,MAAM;gBACR,CAAC;gBACD,OAAO,CAAC,CAAC,CAAC;oBACR,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBACzE,IAAI,gBAAgB,EAAE,CAAC;wBACrB,SAAS;wBACT,UAAU,CAAC,MAAM,GAAG,gBAAgB,CAAC;wBACrC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACxC,CAAC;yBAAM,CAAC;wBACN,cAAc;wBACd,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAClC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAED;;;;;;;;;;;;OAYG;IACK,KAAK,CAAqB,GAAgB,EAAE,QAAgB,EAAE,MAA2B,EAAE,WAAyB,EAAE,OAI7H;QACC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;gBACxB,KAAK,OAAO,CAAC,CAAC,CAAC;oBACb,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;oBAC/D,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC;oBAChC,6BAA6B;oBAC7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;oBACpF,wCAAwC;oBACxC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAC5B,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,CAC/D,EAAE,CAAC;wBACF,MAAM,IAAI,gBAAgB,CAAC;oBAC7B,CAAC;oBACD,MAAM;gBACR,CAAC;gBACD,KAAK,IAAI,CAAC,CAAC,CAAC;oBACV,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;oBAC/D,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC;oBAChC,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;wBACxD,4BAA4B;wBAC5B,UAAU,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,iCAAiC;wBACzD,qCAAqC;wBACrC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;oBACvE,CAAC;yBAAM,CAAC;wBACN,kDAAkD;wBAClD,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBAChE,GAAG,CAAC,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC;oBACrC,CAAC;oBACD,MAAM;gBACR,CAAC;gBACD,KAAK,KAAK,CAAC,CAAC,CAAC;oBACX,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;oBAC/D,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC;oBAChC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;oBACrF,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;oBACzD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;wBACzC,UAAU,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,iCAAiC;wBACzD,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;4BAC1B,uCAAuC;4BACvC,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC;4BAChC,sCAAsC;4BACtC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE;gCAClC,GAAG,MAAM;gCACT,CAAC,QAAQ,CAAC,EAAE,KAAK;6BAClB,EAAE,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;4BAC5B,qBAAqB;4BACrB,MAAM,IAAI,IAAI,CAAC;wBACjB,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,kBAAkB;wBAClB,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBAChE,GAAG,CAAC,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC;oBACrC,CAAC;oBACD,MAAM;gBACR,CAAC;gBACD,KAAK,KAAK,CAAC,CAAC,CAAC;oBACX,QAAQ,IAAI,EAAE,CAAC;wBACb,KAAK,UAAU,CAAC,MAAM,EAAE,IAAI,KAAK,OAAO;+BACjC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;+BAChE,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;wBAC1F,mBAAmB;wBACnB,qBAAqB;wBACrB,yCAAyC;wBAC3C,KAAK,UAAU,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,KAAK,EAAE,CAAC;wBACvE,+CAA+C;wBACjD,KAAK,UAAU,CAAC,MAAM,EAAE,IAAI,KAAK,KAAK,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,KAAK,EAAE;4BACvE,iDAAiD;4BACjD,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC;4BAChC,OAAO,EAAE,CAAC;wBACZ,QAAQ;oBACV,CAAC;oBACD,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;oBAC/D,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC;oBAChC,OAAO,MAAM,CAAC;gBAChB,CAAC;gBACD,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;oBAC/D,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC;oBAChC,mBAAmB;oBACnB,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACtF,IAAI,CAAC,WAAW,EAAE,CAAC;wBACjB,uBAAuB;wBACvB,MAAM,IAAI,KAAK,CAAC,8BAA8B,UAAU,CAAC,QAAQ,uDAAuD,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC;oBACpJ,CAAC;oBACD,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACjE,MAAM,KAAK,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;oBACvD,QAAQ,OAAO,EAAE,QAAQ,EAAE,CAAC;wBAC1B,KAAK,UAAU,CAAC,CAAC,CAAC;4BAChB,kCAAkC;4BAClC,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;gCACzB,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;oCAC5B,MAAM,IAAI,KAAK,CACb,uFAAuF;wCACvF,aAAa,UAAU,CAAC,QAAQ,YAAY,UAAU,CAAC,UAAU,EAAE,CACpE,CAAC;gCACJ,CAAC;gCACA,OAAO,CAAC,UAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gCAC1C,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,kCAAkC;gCAC7E,MAAM,IAAI,IAAI,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,EAAE,CAAC;4BAC7C,CAAC;iCAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gCAChC,SAAS;gCACT,MAAM,YAAY,GAAa,EAAE,CAAC;gCAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oCACzB,YAAY,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;oCAC5C,OAAO,CAAC,UAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gCAC3C,CAAC;gCACD,MAAM,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,gBAAgB;4BAC3D,CAAC;iCAAM,CAAC;gCACL,OAAO,CAAC,UAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gCAC1C,MAAM,IAAI,IAAI,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;4BACtC,CAAC;4BACD,MAAM;wBACR,CAAC;wBACD,KAAK,OAAO,CAAC,CAAC,CAAC;4BACb,4BAA4B;4BAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gCACzB,MAAM,YAAY,GAAa,EAAE,CAAC;gCAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oCACzB,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oCACtB,OAAO,CAAC,UAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gCAC3C,CAAC;gCACD,MAAM,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,aAAa;4BACxD,CAAC;iCAAM,CAAC;gCACL,OAAO,CAAC,UAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gCAC1C,MAAM,IAAI,GAAG,CAAC;4BAChB,CAAC;4BACD,MAAM;wBACR,CAAC;wBACD,KAAK,QAAQ,CAAC,CAAC,CAAC;4BACd,oCAAoC;4BACpC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gCACzB,MAAM,YAAY,GAAa,EAAE,CAAC;gCAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oCACtC,sCAAsC;oCACtC,MAAM,SAAS,GAAG,GAAG,UAAU,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,CAAC,mCAAmC;oCACpF,YAAY,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC;oCAClC,OAAO,CAAC,UAAkC,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gCACpE,CAAC;gCACD,MAAM,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,qBAAqB;4BAChE,CAAC;iCAAM,CAAC;gCACL,OAAO,CAAC,UAAkC,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;gCACzE,MAAM,IAAI,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;4BACtC,CAAC;4BACD,MAAM;wBACR,CAAC;wBACD,KAAK,OAAO,CAAC,CAAC,CAAC;4BACb,wCAAwC;4BACxC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gCACzB,MAAM,YAAY,GAAa,EAAE,CAAC;gCAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oCACtC,sCAAsC;oCACtC,MAAM,SAAS,GAAG,GAAG,UAAU,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,CAAC,mCAAmC;oCACpF,YAAY,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC;oCAClC,OAAO,CAAC,UAAkC,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gCACpE,CAAC;gCACD,MAAM,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,qBAAqB;4BAChE,CAAC;iCAAM,CAAC;gCACL,OAAO,CAAC,UAAkC,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;gCACzE,MAAM,IAAI,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;4BACtC,CAAC;4BACD,MAAM;wBACR,CAAC;wBACD,OAAO,CAAC,CAAC,CAAC;4BACR,iBAAiB;4BACjB,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;gCACzB,gCAAgC;gCAChC,MAAM,IAAI,KAAK,CAAC,mIAAmI,UAAU,CAAC,QAAQ,YAAY,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC;4BAC9M,CAAC;4BACD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;4BACpE,MAAM,IAAI,YAAY,IAAI,EAAE,CAAC;wBAC/B,CAAC;oBACH,CAAC;oBACD,MAAM;gBACR,CAAC;gBACD,QAAQ;YACV,CAAC;QACH,CAAC;QAED,gBAAgB;QAChB,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACK,qBAAqB,CAAC,QAAgB,EAAE,UAAsB;QACpE,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,gBAAgB,UAAU,CAAC,IAAI,qCAAqC,CAAC,CAAC;QACxF,CAAC;QACD,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,KAAK,GAAa,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3D,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACnB,IAAI,OAAO,EAAE,CAAC;gBACZ,SAAS;gBACT,QAAQ,IAAI,EAAE,CAAC;oBACb,KAAK,CAAC,KAAK,GAAG;wBACZ,QAAQ;wBACR,OAAO,CAAC,GAAG,CAAC,CAAC;oBACf,KAAK,CAAC,KAAK,IAAI;wBACb,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;oBAChI,QAAQ;gBACV,CAAC;YACH,CAAC;iBAAM,IAAI,MAAM,EAAE,CAAC;gBAClB,UAAU;gBACV,QAAQ,IAAI,EAAE,CAAC;oBACb,KAAK,CAAC,KAAK,IAAI;wBACb,SAAS;wBACT,OAAO,CAAC,GAAG,CAAC,CAAC;oBACf,KAAK,CAAC,KAAK,IAAI;wBACb,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;oBAClI,QAAQ;gBACV,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,QAAQ,IAAI,EAAE,CAAC;oBACb,KAAK,CAAC,KAAK,IAAI;wBACb,SAAS;wBACT,MAAM,GAAG,IAAI,CAAC;wBACd,MAAM;oBACR,KAAK,CAAC,KAAK,GAAG;wBACZ,QAAQ;wBACR,OAAO,GAAG,IAAI,CAAC;wBACf,MAAM;oBACR,KAAK,CAAC,KAAK,GAAG;wBACZ,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;oBAChI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG;wBAC7C,SAAS;wBACT,OAAO,CAAC,GAAG,CAAC,CAAC;oBACf,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG;wBAC7C,QAAQ;wBACR,OAAO,CAAC,GAAG,CAAC,CAAC;oBACf,KAAK,CAAC,KAAK,IAAI;wBACb,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;4BACnC,OAAO;4BACP,OAAO,CAAC,GAAG,CAAC,CAAC;wBACf,CAAC;wBACD,KAAK;wBACL,OAAO,CAAC,CAAC;oBACX,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI;wBAC1B,OAAO;wBACP,OAAO,CAAC,CAAC;oBACX,KAAK,CAAC,KAAK,GAAG;wBACZ,OAAO,CAAC,CAAC;oBACX,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG;wBACzB,iEAAiE;wBACjE,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;wBACrC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;wBAC1D,IAAI,KAAK,EAAE,CAAC;4BACV,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;wBAC7B,CAAC;oBACH,QAAQ;gBACV,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC,MAAM,CAAC;IACzB,CAAC;IAED;;;;;;OAMG;IACK,iBAAiB,CAAC,SAAiB,EAAE,MAA2B;QACtE,MAAM,GAAG,GAAG,IAAI,yCAAkB,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,GAAG,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACxD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACK,YAAY,CAAqD,QAAgB,EAAE,MAA2B,EAAE,OAEvH;QACC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACnD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,OAAO,MAA6B,CAAC;QACvC,CAAC;QACD,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,QAAQ,OAAO,EAAE,YAAY,EAAE,CAAC;YAC9B,KAAK,OAAO,CAAC;YACb,KAAK,QAAQ;gBACX,OAAO,KAA4B,CAAC;YACtC;gBACE,SAAS;gBACT,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,MAAM,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAC9F,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;gBACzE,CAAC;gBACD,OAAO,MAA6B,CAAC;QACzC,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,GAAW;QACxB,IAAI,aAAa,GAAG,GAAG,CAAC;QACxB,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACpD,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACrD,OAAO,aAAa,CAAC;IACvB,CAAC;CACF;AA9jBD,gCA8jBC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digitalwalletcorp/sql-builder",
3
- "version": "1.6.0",
3
+ "version": "1.6.1",
4
4
  "description": "This is a library for building SQL",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -48,6 +48,7 @@ interface TagContext {
48
48
  parent: TagContext | null;
49
49
  status: number; // 0: 初期、10: 成立 IFで条件が成立したかを判断するもの
50
50
  isPgArray?: boolean; // PostgreSQLがサポートする配列構文(ANY ($1::text[]) など)を示すフラグ
51
+ pgArrayCast?: string; // ::text[] などのCAST部分を保持する
51
52
  }
52
53
 
53
54
  interface SharedIndex {
@@ -96,8 +97,13 @@ interface SharedIndex {
96
97
  */
97
98
  export class SQLBuilder {
98
99
 
100
+ // `/*xxx*/`の部分を抽出するパターン
99
101
  private REGEX_TAG_PATTERN = /\/\*(.*?)\*\//g;
100
102
 
103
+ // `ANY (/*bindParam*/ARRAY['John']::text[])`の`ARRAY[...]::...[]`部分を抽出するパターン
104
+ // `array [100, 200] :: numeric(10, 2) []` のようなパターンも存在する
105
+ private PGSQL_ARRAY_CAST_PATTERN = /^ARRAY\s*\[.*?\]\s*::\s*([a-zA-Z_]\w*(?:\([^\)]*\))?)\s*\[\]/i;
106
+
101
107
  private bindType?: BindType;
102
108
 
103
109
  constructor(bindType?: BindType) {
@@ -235,10 +241,15 @@ export class SQLBuilder {
235
241
  tagContext.endIndex = dummyEndIndex;
236
242
 
237
243
  // PostgreSQL ANY/CAST構文判定
238
- // 例) AND name = ANY (/*names*/('Bob')::text[]) => AND name = ANY ($1::text[])
239
- const afterDummy = template.substring(dummyEndIndex);
240
- if (/^\s*::\s*\w+\s*\[\s*\]/.test(afterDummy)) {
244
+ // 例) AND name = ANY (/*names*/ARRAY['Bob']::text[]) => AND name = ANY ($1::text[])
245
+ if (/ARRAY\s*\[/i.test(template.substring(tagContext.startIndex, dummyEndIndex))) {
241
246
  tagContext.isPgArray = true;
247
+ // CAST部分の抽出
248
+ const dummySql = template.substring(tagContext.startIndex, dummyEndIndex);
249
+ const castMatch = dummySql.match(/(::\s*\w+\s*\[\s*\])/);
250
+ if (castMatch) {
251
+ tagContext.pgArrayCast = castMatch[1];
252
+ }
242
253
  }
243
254
  }
244
255
  }
@@ -410,20 +421,24 @@ export class SQLBuilder {
410
421
  switch (options?.bindType) {
411
422
  case 'postgres': {
412
423
  // PostgreSQL形式の場合、$Nでバインドパラメータを展開
413
- if (Array.isArray(value)) {
414
- if (tagContext.isPgArray) {
415
- // ANY / ALL 構文の場合
416
- (options.bindParams as any[]).push(value);
417
- result += `$${options.bindIndex++}`;
418
- } else {
419
- // IN句の場合
420
- const placeholders: string[] = [];
421
- for (const item of value) {
422
- placeholders.push(`$${options.bindIndex++}`);
423
- (options.bindParams as any[]).push(item);
424
- }
425
- result += `(${placeholders.join(',')})`; // IN ($1,$2,$3)
424
+ if (tagContext.isPgArray) {
425
+ if (!tagContext.pgArrayCast) {
426
+ throw new Error(
427
+ `[SQLBuilder] PostgreSQL ARRAY bind requires explicit cast (e.g. ARRAY[...]::text[]). ` +
428
+ `Property: ${tagContext.contents}, index: ${tagContext.startIndex}`
429
+ );
430
+ }
431
+ (options.bindParams as any[]).push(value);
432
+ const cast = tagContext.pgArrayCast ?? ''; // ::text[] などのCAST部分がついている場合は書き戻す
433
+ result += `$${options.bindIndex++}${cast}`;
434
+ } else if (Array.isArray(value)) {
435
+ // IN句の場合
436
+ const placeholders: string[] = [];
437
+ for (const item of value) {
438
+ placeholders.push(`$${options.bindIndex++}`);
439
+ (options.bindParams as any[]).push(item);
426
440
  }
441
+ result += `(${placeholders.join(',')})`; // IN ($1,$2,$3)
427
442
  } else {
428
443
  (options.bindParams as any[]).push(value);
429
444
  result += `$${options.bindIndex++}`;
@@ -566,6 +581,13 @@ export class SQLBuilder {
566
581
  return i;
567
582
  case c === ',':
568
583
  return i;
584
+ case c === 'A' || c === 'a':
585
+ // PostgreSQLの`ANY (/*bindParam*/ARRAY['John']::text[])`を解析するパターン
586
+ const target = template.substring(i);
587
+ const match = target.match(this.PGSQL_ARRAY_CAST_PATTERN);
588
+ if (match) {
589
+ return i + match[0].length;
590
+ }
569
591
  default:
570
592
  }
571
593
  }