@maiyunnet/kebab 8.0.3 → 8.0.4

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/doc/kebab-rag.md CHANGED
@@ -1385,7 +1385,7 @@ index/variables/VER.md
1385
1385
 
1386
1386
  # Variable: VER
1387
1387
 
1388
- > `const` **VER**: `"8.0.3"` = `'8.0.3'`
1388
+ > `const` **VER**: `"8.0.4"` = `'8.0.4'`
1389
1389
 
1390
1390
  Defined in: [index.ts:10](https://github.com/maiyunnet/kebab/blob/master/index.ts#L10)
1391
1391
 
@@ -12836,7 +12836,7 @@ Defined in: [lib/sql.ts:66](https://github.com/maiyunnet/kebab/blob/master/lib/s
12836
12836
 
12837
12837
  > **append**(`sql`): `this`
12838
12838
 
12839
- Defined in: [lib/sql.ts:860](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L860)
12839
+ Defined in: [lib/sql.ts:874](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L874)
12840
12840
 
12841
12841
  在 sql 最后追加字符串
12842
12842
 
@@ -12856,7 +12856,7 @@ Defined in: [lib/sql.ts:860](https://github.com/maiyunnet/kebab/blob/master/lib/
12856
12856
 
12857
12857
  > **by**(`c`, `d?`): `this`
12858
12858
 
12859
- Defined in: [lib/sql.ts:661](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L661)
12859
+ Defined in: [lib/sql.ts:668](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L668)
12860
12860
 
12861
12861
  ORDER BY
12862
12862
 
@@ -12884,7 +12884,7 @@ ORDER BY
12884
12884
 
12885
12885
  > **copy**(`f?`, `opt?`): `Sql`
12886
12886
 
12887
- Defined in: [lib/sql.ts:729](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L729)
12887
+ Defined in: [lib/sql.ts:736](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L736)
12888
12888
 
12889
12889
  创建一个本对象的一个新的 sql 对象拷贝
12890
12890
 
@@ -12912,7 +12912,7 @@ Defined in: [lib/sql.ts:729](https://github.com/maiyunnet/kebab/blob/master/lib/
12912
12912
 
12913
12913
  > **crossJoin**(`f`, `s?`, `suf?`, `pre?`): `this`
12914
12914
 
12915
- Defined in: [lib/sql.ts:416](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L416)
12915
+ Defined in: [lib/sql.ts:423](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L423)
12916
12916
 
12917
12917
  cross join 方法
12918
12918
 
@@ -12974,7 +12974,7 @@ Defined in: [lib/sql.ts:311](https://github.com/maiyunnet/kebab/blob/master/lib/
12974
12974
 
12975
12975
  > **field**(`str`, `pre?`, `suf?`): `string`
12976
12976
 
12977
- Defined in: [lib/sql.ts:871](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L871)
12977
+ Defined in: [lib/sql.ts:885](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L885)
12978
12978
 
12979
12979
  对字段进行包裹
12980
12980
 
@@ -12982,7 +12982,7 @@ Defined in: [lib/sql.ts:871](https://github.com/maiyunnet/kebab/blob/master/lib/
12982
12982
 
12983
12983
  ##### str
12984
12984
 
12985
- `string` | `number` | (`string` \| `string`[])[]
12985
+ `string` | `number` | \[`string`, `string`[]\]
12986
12986
 
12987
12987
  ##### pre?
12988
12988
 
@@ -13006,7 +13006,7 @@ Defined in: [lib/sql.ts:871](https://github.com/maiyunnet/kebab/blob/master/lib/
13006
13006
 
13007
13007
  > **format**(`sql?`, `data?`): `string`
13008
13008
 
13009
- Defined in: [lib/sql.ts:850](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L850)
13009
+ Defined in: [lib/sql.ts:864](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L864)
13010
13010
 
13011
13011
  获取带 data 的 sql 语句
13012
13012
 
@@ -13030,7 +13030,7 @@ Defined in: [lib/sql.ts:850](https://github.com/maiyunnet/kebab/blob/master/lib/
13030
13030
 
13031
13031
  > **fullJoin**(`f`, `s?`, `suf?`, `pre?`): `this`
13032
13032
 
13033
- Defined in: [lib/sql.ts:405](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L405)
13033
+ Defined in: [lib/sql.ts:412](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L412)
13034
13034
 
13035
13035
  full join 方法
13036
13036
 
@@ -13070,7 +13070,7 @@ ON 信息
13070
13070
 
13071
13071
  > **getData**(): [`DbValue`](../../../index/type-aliases/DbValue.md)[]
13072
13072
 
13073
- Defined in: [lib/sql.ts:834](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L834)
13073
+ Defined in: [lib/sql.ts:848](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L848)
13074
13074
 
13075
13075
  获取全部 data
13076
13076
 
@@ -13084,7 +13084,7 @@ Defined in: [lib/sql.ts:834](https://github.com/maiyunnet/kebab/blob/master/lib/
13084
13084
 
13085
13085
  > **getPre**(): `string`
13086
13086
 
13087
- Defined in: [lib/sql.ts:841](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L841)
13087
+ Defined in: [lib/sql.ts:855](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L855)
13088
13088
 
13089
13089
  获取定义的 pre
13090
13090
 
@@ -13098,7 +13098,7 @@ Defined in: [lib/sql.ts:841](https://github.com/maiyunnet/kebab/blob/master/lib/
13098
13098
 
13099
13099
  > **getSql**(): `string`
13100
13100
 
13101
- Defined in: [lib/sql.ts:818](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L818)
13101
+ Defined in: [lib/sql.ts:832](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L832)
13102
13102
 
13103
13103
  获取 sql 语句
13104
13104
 
@@ -13112,7 +13112,7 @@ Defined in: [lib/sql.ts:818](https://github.com/maiyunnet/kebab/blob/master/lib/
13112
13112
 
13113
13113
  > **group**(`c`): `this`
13114
13114
 
13115
- Defined in: [lib/sql.ts:685](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L685)
13115
+ Defined in: [lib/sql.ts:692](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L692)
13116
13116
 
13117
13117
  GROUP BY
13118
13118
 
@@ -13134,7 +13134,7 @@ GROUP BY
13134
13134
 
13135
13135
  > **having**(`s?`): `this`
13136
13136
 
13137
- Defined in: [lib/sql.ts:423](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L423)
13137
+ Defined in: [lib/sql.ts:430](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L430)
13138
13138
 
13139
13139
  having 后置筛选器,用法类似 where
13140
13140
 
@@ -13154,7 +13154,7 @@ having 后置筛选器,用法类似 where
13154
13154
 
13155
13155
  > **innerJoin**(`f`, `s?`, `suf?`, `pre?`): `this`
13156
13156
 
13157
- Defined in: [lib/sql.ts:394](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L394)
13157
+ Defined in: [lib/sql.ts:401](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L401)
13158
13158
 
13159
13159
  inner join 方法
13160
13160
 
@@ -13222,7 +13222,7 @@ Defined in: [lib/sql.ts:91](https://github.com/maiyunnet/kebab/blob/master/lib/s
13222
13222
 
13223
13223
  > **join**(`f`, `s?`, `type?`, `suf?`, `pre?`): `this`
13224
13224
 
13225
- Defined in: [lib/sql.ts:346](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L346)
13225
+ Defined in: [lib/sql.ts:353](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L353)
13226
13226
 
13227
13227
  join 方法
13228
13228
 
@@ -13268,7 +13268,7 @@ ON 信息
13268
13268
 
13269
13269
  > **leftJoin**(`f`, `s?`, `suf?`, `pre?`): `this`
13270
13270
 
13271
- Defined in: [lib/sql.ts:372](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L372)
13271
+ Defined in: [lib/sql.ts:379](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L379)
13272
13272
 
13273
13273
  left join 方法
13274
13274
 
@@ -13308,7 +13308,7 @@ ON 信息
13308
13308
 
13309
13309
  > **limit**(`a`, `b?`): `this`
13310
13310
 
13311
- Defined in: [lib/sql.ts:705](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L705)
13311
+ Defined in: [lib/sql.ts:712](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L712)
13312
13312
 
13313
13313
  LIMIT(limit、offset, limit)
13314
13314
 
@@ -13336,7 +13336,7 @@ LIMIT(limit、offset, limit)
13336
13336
 
13337
13337
  > **lock**(): `this`
13338
13338
 
13339
- Defined in: [lib/sql.ts:720](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L720)
13339
+ Defined in: [lib/sql.ts:727](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L727)
13340
13340
 
13341
13341
  追加消极锁,通常不建议使用
13342
13342
 
@@ -13350,7 +13350,7 @@ Defined in: [lib/sql.ts:720](https://github.com/maiyunnet/kebab/blob/master/lib/
13350
13350
 
13351
13351
  > **rightJoin**(`f`, `s?`, `suf?`, `pre?`): `this`
13352
13352
 
13353
- Defined in: [lib/sql.ts:383](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L383)
13353
+ Defined in: [lib/sql.ts:390](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L390)
13354
13354
 
13355
13355
  right join 方法
13356
13356
 
@@ -13446,7 +13446,7 @@ sql 对象
13446
13446
 
13447
13447
  > **unionAll**(`lsql`): `this`
13448
13448
 
13449
- Defined in: [lib/sql.ts:334](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L334)
13449
+ Defined in: [lib/sql.ts:341](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L341)
13450
13450
 
13451
13451
  所有联查另一个 sql 对象
13452
13452
 
@@ -13552,7 +13552,7 @@ Defined in: [lib/sql.ts:110](https://github.com/maiyunnet/kebab/blob/master/lib/
13552
13552
 
13553
13553
  > **where**(`s`): `this`
13554
13554
 
13555
- Defined in: [lib/sql.ts:457](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L457)
13555
+ Defined in: [lib/sql.ts:464](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L464)
13556
13556
 
13557
13557
  筛选器
13558
13558
  1. 'city': 'bj', 'type': '2'
@@ -13695,7 +13695,7 @@ lib/sql/functions/aoMix.md
13695
13695
 
13696
13696
  > **aoMix**(`arr`): `Record`\<`string`, `string` \| `number` \| [`Json`](../../../index/type-aliases/Json.md)\>
13697
13697
 
13698
- Defined in: [lib/sql.ts:1192](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1192)
13698
+ Defined in: [lib/sql.ts:1210](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1210)
13699
13699
 
13700
13700
  将数组兑换为组合的对象(Array/Object mix)
13701
13701
 
@@ -13724,7 +13724,7 @@ lib/sql/functions/column.md
13724
13724
 
13725
13725
  > **column**(`field`): `object`
13726
13726
 
13727
- Defined in: [lib/sql.ts:1213](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1213)
13727
+ Defined in: [lib/sql.ts:1231](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1231)
13728
13728
 
13729
13729
  创建字段对象
13730
13730
 
@@ -13763,7 +13763,7 @@ lib/sql/functions/format.md
13763
13763
 
13764
13764
  > **format**(`sql`, `data`, `service?`): `string`
13765
13765
 
13766
- Defined in: [lib/sql.ts:1154](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1154)
13766
+ Defined in: [lib/sql.ts:1172](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1172)
13767
13767
 
13768
13768
  返回代入后的完整 SQL 字符串,这并不安全不能直接执行,只是用来调试打印 sql 语句
13769
13769
 
@@ -13804,7 +13804,7 @@ lib/sql/functions/get.md
13804
13804
 
13805
13805
  > **get**(`opt`): [`Sql`](../classes/Sql.md)
13806
13806
 
13807
- Defined in: [lib/sql.ts:1127](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1127)
13807
+ Defined in: [lib/sql.ts:1145](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1145)
13808
13808
 
13809
13809
  创建 sql 对象
13810
13810
 
package/index.d.ts CHANGED
@@ -5,7 +5,7 @@
5
5
  * --- 本文件用来定义每个目录实体地址的常量 ---
6
6
  */
7
7
  /** --- 当前系统版本号 --- */
8
- export declare const VER = "8.0.3";
8
+ export declare const VER = "8.0.4";
9
9
  /** --- 框架根目录,以 / 结尾 --- */
10
10
  export declare const ROOT_PATH: string;
11
11
  export declare const LIB_PATH: string;
package/index.js CHANGED
@@ -6,7 +6,7 @@
6
6
  * --- 本文件用来定义每个目录实体地址的常量 ---
7
7
  */
8
8
  /** --- 当前系统版本号 --- */
9
- export const VER = '8.0.3';
9
+ export const VER = '8.0.4';
10
10
  // --- 服务端用的路径 ---
11
11
  const imu = decodeURIComponent(import.meta.url).replace('file://', '').replace(/^\/(\w:)/, '$1');
12
12
  /** --- /xxx/xxx --- */
package/lib/sql.d.ts CHANGED
@@ -222,7 +222,7 @@ export declare class Sql {
222
222
  * @param pre 表前缀,仅请在 field 表名时倒入前缀
223
223
  * @param suf 表后缀,仅请在 field 表名时倒入后缀,前面加 # 代表要强制 AS,可能是分表查询时用
224
224
  */
225
- field(str: string | number | Array<string | string[]>, pre?: string, suf?: string): string;
225
+ field(str: string | number | [string, string[]], pre?: string, suf?: string): string;
226
226
  /**
227
227
  * --- 判断传入值是否是 field,还是别的对象 ---
228
228
  * @param str
package/lib/sql.js CHANGED
@@ -284,9 +284,16 @@ export class Sql {
284
284
  * @param type 类型
285
285
  */
286
286
  union(lsql, type = '') {
287
+ const offset = this._data.length;
287
288
  this._data = this._data.concat(lsql.getData());
288
289
  this._sql.push(' UNION ' + (type ? type + ' ' : ''));
289
- this._sql.push(lsql.getSql());
290
+ let unionSql = lsql.getSql();
291
+ // --- PGSQL: 偏移 $N 占位符编号 ---
292
+ if (this._service === ESERVICE.PGSQL && offset > 0) {
293
+ unionSql = unionSql.replace(/\$(\d+)/g, (_, n) => `$${parseInt(n) + offset}`);
294
+ }
295
+ this._sql.push(unionSql);
296
+ this._placeholderCounter = this._data.length + 1;
290
297
  return this;
291
298
  }
292
299
  /**
@@ -736,6 +743,13 @@ export class Sql {
736
743
  }
737
744
  sql[0] = sql[0].replace(/FROM [`\w, ]+/, 'FROM ' + table);
738
745
  }
746
+ // --- PGSQL: 修改 where 后重新编号 $N 占位符 ---
747
+ if (this._service === ESERVICE.PGSQL && opt.where !== undefined) {
748
+ let counter = 1;
749
+ for (let i = 0; i < sql.length; ++i) {
750
+ sql[i] = sql[i].replace(/\$\d+/g, () => `$${counter++}`);
751
+ }
752
+ }
739
753
  return get({
740
754
  'service': this._service,
741
755
  'ctr': this._ctr,
@@ -799,6 +813,10 @@ export class Sql {
799
813
  const q = this._service === ESERVICE.MYSQL ? '`' : '"';
800
814
  if (Array.isArray(str)) {
801
815
  this._data.push(...str[1]);
816
+ // --- PGSQL: 将 ? 占位符转换为 $N ---
817
+ if (this._service === ESERVICE.PGSQL) {
818
+ return this.field(str[0].replace(/\?/g, () => this._placeholder()));
819
+ }
802
820
  return this.field(str[0]);
803
821
  }
804
822
  if (typeof str === 'number') {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maiyunnet/kebab",
3
- "version": "8.0.3",
3
+ "version": "8.0.4",
4
4
  "description": "Simple, easy-to-use, and fully-featured Node.js framework that is ready-to-use out of the box.",
5
5
  "type": "module",
6
6
  "keywords": [