@maiyunnet/kebab 8.5.0 → 8.5.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/doc/kebab-rag.md CHANGED
@@ -1410,7 +1410,7 @@ index/variables/VER.md
1410
1410
 
1411
1411
  # Variable: VER
1412
1412
 
1413
- > `const` **VER**: `"8.5.0"` = `'8.5.0'`
1413
+ > `const` **VER**: `"8.5.1"` = `'8.5.1'`
1414
1414
 
1415
1415
  Defined in: [index.ts:10](https://github.com/maiyunnet/kebab/blob/master/index.ts#L10)
1416
1416
 
@@ -13119,6 +13119,10 @@ Defined in: [lib/sql.ts:66](https://github.com/maiyunnet/kebab/blob/master/lib/s
13119
13119
 
13120
13120
  ##### opt
13121
13121
 
13122
+ ###### alias?
13123
+
13124
+ `string`[]
13125
+
13122
13126
  ###### ctr?
13123
13127
 
13124
13128
  [`Ctr`](../../../sys/ctr/classes/Ctr.md)
@@ -13149,7 +13153,7 @@ Defined in: [lib/sql.ts:66](https://github.com/maiyunnet/kebab/blob/master/lib/s
13149
13153
 
13150
13154
  > **append**(`sql`): `this`
13151
13155
 
13152
- Defined in: [lib/sql.ts:874](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L874)
13156
+ Defined in: [lib/sql.ts:879](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L879)
13153
13157
 
13154
13158
  在 sql 最后追加字符串
13155
13159
 
@@ -13169,7 +13173,7 @@ Defined in: [lib/sql.ts:874](https://github.com/maiyunnet/kebab/blob/master/lib/
13169
13173
 
13170
13174
  > **by**(`c`, `d?`): `this`
13171
13175
 
13172
- Defined in: [lib/sql.ts:668](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L668)
13176
+ Defined in: [lib/sql.ts:672](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L672)
13173
13177
 
13174
13178
  ORDER BY
13175
13179
 
@@ -13197,7 +13201,7 @@ ORDER BY
13197
13201
 
13198
13202
  > **copy**(`f?`, `opt?`): `Sql`
13199
13203
 
13200
- Defined in: [lib/sql.ts:736](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L736)
13204
+ Defined in: [lib/sql.ts:740](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L740)
13201
13205
 
13202
13206
  创建一个本对象的一个新的 sql 对象拷贝
13203
13207
 
@@ -13225,7 +13229,7 @@ Defined in: [lib/sql.ts:736](https://github.com/maiyunnet/kebab/blob/master/lib/
13225
13229
 
13226
13230
  > **crossJoin**(`f`, `s?`, `suf?`, `pre?`): `this`
13227
13231
 
13228
- Defined in: [lib/sql.ts:423](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L423)
13232
+ Defined in: [lib/sql.ts:427](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L427)
13229
13233
 
13230
13234
  cross join 方法
13231
13235
 
@@ -13265,7 +13269,7 @@ ON 信息
13265
13269
 
13266
13270
  > **delete**(`f`): `this`
13267
13271
 
13268
- Defined in: [lib/sql.ts:311](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L311)
13272
+ Defined in: [lib/sql.ts:315](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L315)
13269
13273
 
13270
13274
  'xx'
13271
13275
 
@@ -13287,7 +13291,7 @@ Defined in: [lib/sql.ts:311](https://github.com/maiyunnet/kebab/blob/master/lib/
13287
13291
 
13288
13292
  > **field**(`str`, `pre?`, `suf?`): `string`
13289
13293
 
13290
- Defined in: [lib/sql.ts:885](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L885)
13294
+ Defined in: [lib/sql.ts:890](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L890)
13291
13295
 
13292
13296
  对字段进行包裹
13293
13297
 
@@ -13319,7 +13323,7 @@ Defined in: [lib/sql.ts:885](https://github.com/maiyunnet/kebab/blob/master/lib/
13319
13323
 
13320
13324
  > **format**(`sql?`, `data?`): `string`
13321
13325
 
13322
- Defined in: [lib/sql.ts:864](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L864)
13326
+ Defined in: [lib/sql.ts:869](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L869)
13323
13327
 
13324
13328
  获取带 data 的 sql 语句
13325
13329
 
@@ -13343,7 +13347,7 @@ Defined in: [lib/sql.ts:864](https://github.com/maiyunnet/kebab/blob/master/lib/
13343
13347
 
13344
13348
  > **fullJoin**(`f`, `s?`, `suf?`, `pre?`): `this`
13345
13349
 
13346
- Defined in: [lib/sql.ts:412](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L412)
13350
+ Defined in: [lib/sql.ts:416](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L416)
13347
13351
 
13348
13352
  full join 方法
13349
13353
 
@@ -13383,7 +13387,7 @@ ON 信息
13383
13387
 
13384
13388
  > **getData**(): [`DbValue`](../../../index/type-aliases/DbValue.md)[]
13385
13389
 
13386
- Defined in: [lib/sql.ts:848](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L848)
13390
+ Defined in: [lib/sql.ts:853](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L853)
13387
13391
 
13388
13392
  获取全部 data
13389
13393
 
@@ -13397,7 +13401,7 @@ Defined in: [lib/sql.ts:848](https://github.com/maiyunnet/kebab/blob/master/lib/
13397
13401
 
13398
13402
  > **getPre**(): `string`
13399
13403
 
13400
- Defined in: [lib/sql.ts:855](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L855)
13404
+ Defined in: [lib/sql.ts:860](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L860)
13401
13405
 
13402
13406
  获取定义的 pre
13403
13407
 
@@ -13411,7 +13415,7 @@ Defined in: [lib/sql.ts:855](https://github.com/maiyunnet/kebab/blob/master/lib/
13411
13415
 
13412
13416
  > **getSql**(): `string`
13413
13417
 
13414
- Defined in: [lib/sql.ts:832](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L832)
13418
+ Defined in: [lib/sql.ts:837](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L837)
13415
13419
 
13416
13420
  获取 sql 语句
13417
13421
 
@@ -13425,7 +13429,7 @@ Defined in: [lib/sql.ts:832](https://github.com/maiyunnet/kebab/blob/master/lib/
13425
13429
 
13426
13430
  > **group**(`c`): `this`
13427
13431
 
13428
- Defined in: [lib/sql.ts:692](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L692)
13432
+ Defined in: [lib/sql.ts:696](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L696)
13429
13433
 
13430
13434
  GROUP BY
13431
13435
 
@@ -13447,7 +13451,7 @@ GROUP BY
13447
13451
 
13448
13452
  > **having**(`s?`): `this`
13449
13453
 
13450
- Defined in: [lib/sql.ts:430](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L430)
13454
+ Defined in: [lib/sql.ts:434](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L434)
13451
13455
 
13452
13456
  having 后置筛选器,用法类似 where
13453
13457
 
@@ -13467,7 +13471,7 @@ having 后置筛选器,用法类似 where
13467
13471
 
13468
13472
  > **innerJoin**(`f`, `s?`, `suf?`, `pre?`): `this`
13469
13473
 
13470
- Defined in: [lib/sql.ts:401](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L401)
13474
+ Defined in: [lib/sql.ts:405](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L405)
13471
13475
 
13472
13476
  inner join 方法
13473
13477
 
@@ -13507,7 +13511,7 @@ ON 信息
13507
13511
 
13508
13512
  > **insert**(`table`, `ignore?`): `this`
13509
13513
 
13510
- Defined in: [lib/sql.ts:91](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L91)
13514
+ Defined in: [lib/sql.ts:95](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L95)
13511
13515
 
13512
13516
  插入数据前导
13513
13517
 
@@ -13535,7 +13539,7 @@ Defined in: [lib/sql.ts:91](https://github.com/maiyunnet/kebab/blob/master/lib/s
13535
13539
 
13536
13540
  > **join**(`f`, `s?`, `type?`, `suf?`, `pre?`): `this`
13537
13541
 
13538
- Defined in: [lib/sql.ts:353](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L353)
13542
+ Defined in: [lib/sql.ts:357](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L357)
13539
13543
 
13540
13544
  join 方法
13541
13545
 
@@ -13581,7 +13585,7 @@ ON 信息
13581
13585
 
13582
13586
  > **leftJoin**(`f`, `s?`, `suf?`, `pre?`): `this`
13583
13587
 
13584
- Defined in: [lib/sql.ts:379](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L379)
13588
+ Defined in: [lib/sql.ts:383](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L383)
13585
13589
 
13586
13590
  left join 方法
13587
13591
 
@@ -13621,7 +13625,7 @@ ON 信息
13621
13625
 
13622
13626
  > **limit**(`a`, `b?`): `this`
13623
13627
 
13624
- Defined in: [lib/sql.ts:712](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L712)
13628
+ Defined in: [lib/sql.ts:716](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L716)
13625
13629
 
13626
13630
  LIMIT(limit、offset, limit)
13627
13631
 
@@ -13649,7 +13653,7 @@ LIMIT(limit、offset, limit)
13649
13653
 
13650
13654
  > **lock**(): `this`
13651
13655
 
13652
- Defined in: [lib/sql.ts:727](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L727)
13656
+ Defined in: [lib/sql.ts:731](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L731)
13653
13657
 
13654
13658
  追加消极锁,通常不建议使用
13655
13659
 
@@ -13663,7 +13667,7 @@ Defined in: [lib/sql.ts:727](https://github.com/maiyunnet/kebab/blob/master/lib/
13663
13667
 
13664
13668
  > **rightJoin**(`f`, `s?`, `suf?`, `pre?`): `this`
13665
13669
 
13666
- Defined in: [lib/sql.ts:390](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L390)
13670
+ Defined in: [lib/sql.ts:394](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L394)
13667
13671
 
13668
13672
  right join 方法
13669
13673
 
@@ -13703,7 +13707,7 @@ ON 信息
13703
13707
 
13704
13708
  > **select**(`c`, `f`): `this`
13705
13709
 
13706
- Defined in: [lib/sql.ts:202](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L202)
13710
+ Defined in: [lib/sql.ts:206](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L206)
13707
13711
 
13708
13712
  '*', 'xx'
13709
13713
 
@@ -13731,7 +13735,7 @@ Defined in: [lib/sql.ts:202](https://github.com/maiyunnet/kebab/blob/master/lib/
13731
13735
 
13732
13736
  > **union**(`lsql`, `type?`): `this`
13733
13737
 
13734
- Defined in: [lib/sql.ts:323](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L323)
13738
+ Defined in: [lib/sql.ts:327](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L327)
13735
13739
 
13736
13740
  联查另一个 sql 对象
13737
13741
 
@@ -13759,7 +13763,7 @@ sql 对象
13759
13763
 
13760
13764
  > **unionAll**(`lsql`): `this`
13761
13765
 
13762
- Defined in: [lib/sql.ts:341](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L341)
13766
+ Defined in: [lib/sql.ts:345](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L345)
13763
13767
 
13764
13768
  所有联查另一个 sql 对象
13765
13769
 
@@ -13781,7 +13785,7 @@ sql 对象
13781
13785
 
13782
13786
  > **update**(`f`, `s`): `this`
13783
13787
 
13784
- Defined in: [lib/sql.ts:243](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L243)
13788
+ Defined in: [lib/sql.ts:247](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L247)
13785
13789
 
13786
13790
  UPDATE SQL 方法
13787
13791
 
@@ -13809,7 +13813,7 @@ UPDATE SQL 方法
13809
13813
 
13810
13814
  > **upsert**(`data`, `conflict?`): `this`
13811
13815
 
13812
- Defined in: [lib/sql.ts:168](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L168)
13816
+ Defined in: [lib/sql.ts:172](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L172)
13813
13817
 
13814
13818
  如果存在则更新不存在则插入(UPSERT)
13815
13819
 
@@ -13837,7 +13841,7 @@ Defined in: [lib/sql.ts:168](https://github.com/maiyunnet/kebab/blob/master/lib/
13837
13841
 
13838
13842
  > **values**(`cs`, `vs?`): `this`
13839
13843
 
13840
- Defined in: [lib/sql.ts:110](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L110)
13844
+ Defined in: [lib/sql.ts:114](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L114)
13841
13845
 
13842
13846
  实际插入数据的数据
13843
13847
 
@@ -13865,7 +13869,7 @@ Defined in: [lib/sql.ts:110](https://github.com/maiyunnet/kebab/blob/master/lib/
13865
13869
 
13866
13870
  > **where**(`s`): `this`
13867
13871
 
13868
- Defined in: [lib/sql.ts:464](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L464)
13872
+ Defined in: [lib/sql.ts:468](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L468)
13869
13873
 
13870
13874
  筛选器
13871
13875
  1. 'city': 'bj', 'type': '2'
@@ -14008,7 +14012,7 @@ lib/sql/functions/aoMix.md
14008
14012
 
14009
14013
  > **aoMix**(`arr`): `Record`\<`string`, `string` \| `number` \| [`Json`](../../../index/type-aliases/Json.md)\>
14010
14014
 
14011
- Defined in: [lib/sql.ts:1210](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1210)
14015
+ Defined in: [lib/sql.ts:1216](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1216)
14012
14016
 
14013
14017
  将数组兑换为组合的对象(Array/Object mix)
14014
14018
 
@@ -14037,7 +14041,7 @@ lib/sql/functions/column.md
14037
14041
 
14038
14042
  > **column**(`field`): `object`
14039
14043
 
14040
- Defined in: [lib/sql.ts:1231](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1231)
14044
+ Defined in: [lib/sql.ts:1237](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1237)
14041
14045
 
14042
14046
  创建字段对象
14043
14047
 
@@ -14076,7 +14080,7 @@ lib/sql/functions/format.md
14076
14080
 
14077
14081
  > **format**(`sql`, `data`, `service?`): `string`
14078
14082
 
14079
- Defined in: [lib/sql.ts:1172](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1172)
14083
+ Defined in: [lib/sql.ts:1178](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1178)
14080
14084
 
14081
14085
  返回代入后的完整 SQL 字符串,这并不安全不能直接执行,只是用来调试打印 sql 语句
14082
14086
 
@@ -14117,7 +14121,7 @@ lib/sql/functions/get.md
14117
14121
 
14118
14122
  > **get**(`opt`): [`Sql`](../classes/Sql.md)
14119
14123
 
14120
- Defined in: [lib/sql.ts:1145](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1145)
14124
+ Defined in: [lib/sql.ts:1150](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1150)
14121
14125
 
14122
14126
  创建 sql 对象
14123
14127
 
@@ -14127,6 +14131,10 @@ Defined in: [lib/sql.ts:1145](https://github.com/maiyunnet/kebab/blob/master/lib
14127
14131
 
14128
14132
  参数
14129
14133
 
14134
+ #### alias?
14135
+
14136
+ `string`[]
14137
+
14130
14138
  #### ctr?
14131
14139
 
14132
14140
  [`Ctr`](../../../sys/ctr/classes/Ctr.md)
@@ -14164,7 +14172,7 @@ lib/sql/functions/json.md
14164
14172
 
14165
14173
  > **json**(`obj`): `any`
14166
14174
 
14167
- Defined in: [lib/sql.ts:1250](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1250)
14175
+ Defined in: [lib/sql.ts:1256](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1256)
14168
14176
 
14169
14177
  将对象转换为 JSON 字符串并避开类型检查,用于适配 PostgreSQL 的 jsonb 字段
14170
14178
 
@@ -21146,7 +21154,7 @@ Defined in: [sys/mod.ts:68](https://github.com/maiyunnet/kebab/blob/master/sys/m
21146
21154
 
21147
21155
  > `protected` **\_keyGenerator**(): `string`
21148
21156
 
21149
- Defined in: [sys/mod.ts:1763](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1763)
21157
+ Defined in: [sys/mod.ts:1767](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1767)
21150
21158
 
21151
21159
  当 _key 不为空时,则依据继承此方法的方法自动生成填充 key
21152
21160
 
@@ -21204,7 +21212,7 @@ Defined in: [sys/mod.ts:1131](https://github.com/maiyunnet/kebab/blob/master/sys
21204
21212
 
21205
21213
  > **allArray**(): `Promise`\<`false` \| `Record`\<`string`, `any`\>[]\>
21206
21214
 
21207
- Defined in: [sys/mod.ts:1305](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1305)
21215
+ Defined in: [sys/mod.ts:1306](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1306)
21208
21216
 
21209
21217
  ##### Returns
21210
21218
 
@@ -21214,7 +21222,7 @@ Defined in: [sys/mod.ts:1305](https://github.com/maiyunnet/kebab/blob/master/sys
21214
21222
 
21215
21223
  > **allArray**(`key`): `Promise`\<`false` \| `Record`\<`string`, `Record`\<`string`, `any`\>\>\>
21216
21224
 
21217
- Defined in: [sys/mod.ts:1306](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1306)
21225
+ Defined in: [sys/mod.ts:1307](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1307)
21218
21226
 
21219
21227
  ##### Parameters
21220
21228
 
@@ -21232,7 +21240,7 @@ Defined in: [sys/mod.ts:1306](https://github.com/maiyunnet/kebab/blob/master/sys
21232
21240
 
21233
21241
  > **append**(`sql`): `this`
21234
21242
 
21235
- Defined in: [sys/mod.ts:1672](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1672)
21243
+ Defined in: [sys/mod.ts:1676](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1676)
21236
21244
 
21237
21245
  在 sql 最后追加字符串
21238
21246
 
@@ -21252,7 +21260,7 @@ Defined in: [sys/mod.ts:1672](https://github.com/maiyunnet/kebab/blob/master/sys
21252
21260
 
21253
21261
  > **by**(`c`, `d?`): `this`
21254
21262
 
21255
- Defined in: [sys/mod.ts:1628](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1628)
21263
+ Defined in: [sys/mod.ts:1632](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1632)
21256
21264
 
21257
21265
  ORDER BY
21258
21266
 
@@ -21280,7 +21288,7 @@ ORDER BY
21280
21288
 
21281
21289
  > **contain**(`contain`): `this`
21282
21290
 
21283
- Defined in: [sys/mod.ts:1681](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1681)
21291
+ Defined in: [sys/mod.ts:1685](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1685)
21284
21292
 
21285
21293
  设置闭包含数据
21286
21294
 
@@ -21308,7 +21316,7 @@ Defined in: [sys/mod.ts:1681](https://github.com/maiyunnet/kebab/blob/master/sys
21308
21316
 
21309
21317
  > **count**(): `Promise`\<`number`\>
21310
21318
 
21311
- Defined in: [sys/mod.ts:1494](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1494)
21319
+ Defined in: [sys/mod.ts:1496](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1496)
21312
21320
 
21313
21321
  根据当前条件,筛选出当前条目该有的数据条数
21314
21322
 
@@ -21322,7 +21330,7 @@ Defined in: [sys/mod.ts:1494](https://github.com/maiyunnet/kebab/blob/master/sys
21322
21330
 
21323
21331
  > **countSql**(): `string`
21324
21332
 
21325
- Defined in: [sys/mod.ts:1514](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1514)
21333
+ Defined in: [sys/mod.ts:1517](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1517)
21326
21334
 
21327
21335
  获取当前条件下的 count 的 SQL 语句
21328
21336
 
@@ -21352,7 +21360,7 @@ true-成功,false-报错,null-唯一键非 _$key 键冲突
21352
21360
 
21353
21361
  > **crossJoin**(`f`, `s`, `index?`, `pre?`): `this`
21354
21362
 
21355
- Defined in: [sys/mod.ts:1588](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1588)
21363
+ Defined in: [sys/mod.ts:1592](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1592)
21356
21364
 
21357
21365
  cross join 方法
21358
21366
 
@@ -21400,7 +21408,7 @@ ON 信息
21400
21408
 
21401
21409
  > **explain**(`all?`): `Promise`\<`string` \| `false`\>
21402
21410
 
21403
- Defined in: [sys/mod.ts:1427](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1427)
21411
+ Defined in: [sys/mod.ts:1429](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1429)
21404
21412
 
21405
21413
  ##### Parameters
21406
21414
 
@@ -21416,7 +21424,7 @@ Defined in: [sys/mod.ts:1427](https://github.com/maiyunnet/kebab/blob/master/sys
21416
21424
 
21417
21425
  > **explain**(`all`): `Promise`\<`false` \| `Record`\<`string`, `any`\>\>
21418
21426
 
21419
- Defined in: [sys/mod.ts:1428](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1428)
21427
+ Defined in: [sys/mod.ts:1430](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1430)
21420
21428
 
21421
21429
  ##### Parameters
21422
21430
 
@@ -21434,7 +21442,7 @@ Defined in: [sys/mod.ts:1428](https://github.com/maiyunnet/kebab/blob/master/sys
21434
21442
 
21435
21443
  > **filter**(`s`): `this`
21436
21444
 
21437
- Defined in: [sys/mod.ts:1606](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1606)
21445
+ Defined in: [sys/mod.ts:1610](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1610)
21438
21446
 
21439
21447
  筛选器
21440
21448
 
@@ -21532,7 +21540,7 @@ Defined in: [sys/mod.ts:1063](https://github.com/maiyunnet/kebab/blob/master/sys
21532
21540
 
21533
21541
  > **format**(`sql?`, `data?`): `string`
21534
21542
 
21535
- Defined in: [sys/mod.ts:1708](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1708)
21543
+ Defined in: [sys/mod.ts:1712](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1712)
21536
21544
 
21537
21545
  获取带 data 的 sql 语句
21538
21546
 
@@ -21560,7 +21568,7 @@ sql 语句
21560
21568
 
21561
21569
  > **fullJoin**(`f`, `s`, `index?`, `pre?`): `this`
21562
21570
 
21563
- Defined in: [sys/mod.ts:1576](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1576)
21571
+ Defined in: [sys/mod.ts:1580](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1580)
21564
21572
 
21565
21573
  full join 方法
21566
21574
 
@@ -21622,7 +21630,7 @@ Defined in: [sys/mod.ts:816](https://github.com/maiyunnet/kebab/blob/master/sys/
21622
21630
 
21623
21631
  > **getData**(): `any`[]
21624
21632
 
21625
- Defined in: [sys/mod.ts:1699](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1699)
21633
+ Defined in: [sys/mod.ts:1703](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1703)
21626
21634
 
21627
21635
  获取全部 data
21628
21636
 
@@ -21636,7 +21644,7 @@ Defined in: [sys/mod.ts:1699](https://github.com/maiyunnet/kebab/blob/master/sys
21636
21644
 
21637
21645
  > **getSql**(): `string`
21638
21646
 
21639
- Defined in: [sys/mod.ts:1692](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1692)
21647
+ Defined in: [sys/mod.ts:1696](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1696)
21640
21648
 
21641
21649
  获取 sql 语句
21642
21650
 
@@ -21650,7 +21658,7 @@ Defined in: [sys/mod.ts:1692](https://github.com/maiyunnet/kebab/blob/master/sys
21650
21658
 
21651
21659
  > **group**(`c`): `this`
21652
21660
 
21653
- Defined in: [sys/mod.ts:1637](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1637)
21661
+ Defined in: [sys/mod.ts:1641](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1641)
21654
21662
 
21655
21663
  GROUP BY
21656
21664
 
@@ -21672,7 +21680,7 @@ GROUP BY
21672
21680
 
21673
21681
  > **having**(`s`): `this`
21674
21682
 
21675
- Defined in: [sys/mod.ts:1597](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1597)
21683
+ Defined in: [sys/mod.ts:1601](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1601)
21676
21684
 
21677
21685
  筛选器
21678
21686
 
@@ -21694,7 +21702,7 @@ Defined in: [sys/mod.ts:1597](https://github.com/maiyunnet/kebab/blob/master/sys
21694
21702
 
21695
21703
  > **innerJoin**(`f`, `s`, `index?`, `pre?`): `this`
21696
21704
 
21697
- Defined in: [sys/mod.ts:1564](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1564)
21705
+ Defined in: [sys/mod.ts:1568](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1568)
21698
21706
 
21699
21707
  inner join 方法
21700
21708
 
@@ -21734,7 +21742,7 @@ ON 信息
21734
21742
 
21735
21743
  > **join**(`f`, `s?`, `type?`, `index?`, `pre?`): `this`
21736
21744
 
21737
- Defined in: [sys/mod.ts:1528](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1528)
21745
+ Defined in: [sys/mod.ts:1532](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1532)
21738
21746
 
21739
21747
  #### Parameters
21740
21748
 
@@ -21778,7 +21786,7 @@ ON 信息
21778
21786
 
21779
21787
  > **langText**(`col`, `lang`): `string`
21780
21788
 
21781
- Defined in: [sys/mod.ts:1743](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1743)
21789
+ Defined in: [sys/mod.ts:1747](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1747)
21782
21790
 
21783
21791
  获取字段的可用语种文本
21784
21792
 
@@ -21806,7 +21814,7 @@ Defined in: [sys/mod.ts:1743](https://github.com/maiyunnet/kebab/blob/master/sys
21806
21814
 
21807
21815
  > **leftJoin**(`f`, `s`, `index?`, `pre?`): `this`
21808
21816
 
21809
- Defined in: [sys/mod.ts:1540](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1540)
21817
+ Defined in: [sys/mod.ts:1544](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1544)
21810
21818
 
21811
21819
  left join 方法
21812
21820
 
@@ -21846,7 +21854,7 @@ ON 信息
21846
21854
 
21847
21855
  > **limit**(`a`, `b?`): `this`
21848
21856
 
21849
- Defined in: [sys/mod.ts:1650](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1650)
21857
+ Defined in: [sys/mod.ts:1654](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1654)
21850
21858
 
21851
21859
  LIMIT
21852
21860
 
@@ -21874,7 +21882,7 @@ LIMIT
21874
21882
 
21875
21883
  > **page**(`count`, `page?`): `this`
21876
21884
 
21877
- Defined in: [sys/mod.ts:1661](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1661)
21885
+ Defined in: [sys/mod.ts:1665](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1665)
21878
21886
 
21879
21887
  分页
21880
21888
 
@@ -21938,7 +21946,7 @@ Defined in: [sys/mod.ts:1001](https://github.com/maiyunnet/kebab/blob/master/sys
21938
21946
 
21939
21947
  > **rightJoin**(`f`, `s`, `index?`, `pre?`): `this`
21940
21948
 
21941
- Defined in: [sys/mod.ts:1552](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1552)
21949
+ Defined in: [sys/mod.ts:1556](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1556)
21942
21950
 
21943
21951
  right join 方法
21944
21952
 
@@ -22070,7 +22078,7 @@ Defined in: [sys/mod.ts:778](https://github.com/maiyunnet/kebab/blob/master/sys/
22070
22078
 
22071
22079
  > **toArray**\<`TC`\>(): [`TOnlyProperties`](../type-aliases/TOnlyProperties.md)\<`InstanceType`\<`TC`\>\> & `Record`\<`string`, `any`\>
22072
22080
 
22073
- Defined in: [sys/mod.ts:1715](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1715)
22081
+ Defined in: [sys/mod.ts:1719](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1719)
22074
22082
 
22075
22083
  获取值对象,获取的是新创建的数组
22076
22084
 
@@ -22090,7 +22098,7 @@ Defined in: [sys/mod.ts:1715](https://github.com/maiyunnet/kebab/blob/master/sys
22090
22098
 
22091
22099
  > **total**(`f?`): `Promise`\<`number`\>
22092
22100
 
22093
- Defined in: [sys/mod.ts:1470](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1470)
22101
+ Defined in: [sys/mod.ts:1472](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1472)
22094
22102
 
22095
22103
  获取总条数,自动抛弃 LIMIT,仅用于获取数据的情况(select)
22096
22104
 
@@ -22160,7 +22168,7 @@ Defined in: [sys/mod.ts:1104](https://github.com/maiyunnet/kebab/blob/master/sys
22160
22168
 
22161
22169
  > **unsaved**(): `boolean`
22162
22170
 
22163
- Defined in: [sys/mod.ts:1734](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1734)
22171
+ Defined in: [sys/mod.ts:1738](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1738)
22164
22172
 
22165
22173
  当前是否设置了未保存 --=
22166
22174
 
@@ -22174,7 +22182,7 @@ Defined in: [sys/mod.ts:1734](https://github.com/maiyunnet/kebab/blob/master/sys
22174
22182
 
22175
22183
  > **updates**(): `Record`\<`string`, `any`\>
22176
22184
 
22177
- Defined in: [sys/mod.ts:1723](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1723)
22185
+ Defined in: [sys/mod.ts:1727](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1727)
22178
22186
 
22179
22187
  获取当前设置要提交的数据
22180
22188
 
@@ -22210,7 +22218,7 @@ Defined in: [sys/mod.ts:914](https://github.com/maiyunnet/kebab/blob/master/sys/
22210
22218
 
22211
22219
  > **where**(`s`): `this`
22212
22220
 
22213
- Defined in: [sys/mod.ts:1617](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1617)
22221
+ Defined in: [sys/mod.ts:1621](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1621)
22214
22222
 
22215
22223
  是 filter 的别名
22216
22224
 
@@ -23333,7 +23341,7 @@ sys/mod/interfaces/IModUnionItem.md
23333
23341
 
23334
23342
  # Interface: IModUnionItem
23335
23343
 
23336
- Defined in: [sys/mod.ts:1777](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1777)
23344
+ Defined in: [sys/mod.ts:1781](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1781)
23337
23345
 
23338
23346
  ## Properties
23339
23347
 
@@ -23341,7 +23349,7 @@ Defined in: [sys/mod.ts:1777](https://github.com/maiyunnet/kebab/blob/master/sys
23341
23349
 
23342
23350
  > **field**: `string`
23343
23351
 
23344
- Defined in: [sys/mod.ts:1778](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1778)
23352
+ Defined in: [sys/mod.ts:1782](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1782)
23345
23353
 
23346
23354
  ***
23347
23355
 
@@ -23349,7 +23357,7 @@ Defined in: [sys/mod.ts:1778](https://github.com/maiyunnet/kebab/blob/master/sys
23349
23357
 
23350
23358
  > `optional` **where**: `any`
23351
23359
 
23352
- Defined in: [sys/mod.ts:1779](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1779)
23360
+ Defined in: [sys/mod.ts:1783](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1783)
23353
23361
 
23354
23362
  sys/mod/interfaces/IRows.md
23355
23363
  ---
@@ -23362,7 +23370,7 @@ sys/mod/interfaces/IRows.md
23362
23370
 
23363
23371
  # Interface: IRows\<T\>
23364
23372
 
23365
- Defined in: [sys/mod.ts:1771](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1771)
23373
+ Defined in: [sys/mod.ts:1775](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1775)
23366
23374
 
23367
23375
  ## Extends
23368
23376
 
@@ -23380,7 +23388,7 @@ Defined in: [sys/mod.ts:1771](https://github.com/maiyunnet/kebab/blob/master/sys
23380
23388
 
23381
23389
  > `readonly` **length**: `number`
23382
23390
 
23383
- Defined in: [sys/mod.ts:1772](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1772)
23391
+ Defined in: [sys/mod.ts:1776](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1776)
23384
23392
 
23385
23393
  ## Methods
23386
23394
 
@@ -23388,7 +23396,7 @@ Defined in: [sys/mod.ts:1772](https://github.com/maiyunnet/kebab/blob/master/sys
23388
23396
 
23389
23397
  > **item**(`index`): `T`
23390
23398
 
23391
- Defined in: [sys/mod.ts:1773](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1773)
23399
+ Defined in: [sys/mod.ts:1777](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1777)
23392
23400
 
23393
23401
  #### Parameters
23394
23402
 
@@ -23406,7 +23414,7 @@ Defined in: [sys/mod.ts:1773](https://github.com/maiyunnet/kebab/blob/master/sys
23406
23414
 
23407
23415
  > **toArray**(): `Record`\<`string`, `any`\>[]
23408
23416
 
23409
- Defined in: [sys/mod.ts:1774](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1774)
23417
+ Defined in: [sys/mod.ts:1778](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1778)
23410
23418
 
23411
23419
  #### Returns
23412
23420
 
package/index.d.ts CHANGED
@@ -5,7 +5,7 @@
5
5
  * --- 本文件用来定义每个目录实体地址的常量 ---
6
6
  */
7
7
  /** --- 当前系统版本号 --- */
8
- export declare const VER = "8.5.0";
8
+ export declare const VER = "8.5.1";
9
9
  /** --- 框架根目录,以 / 结尾 --- */
10
10
  export declare const ROOT_PATH: string;
11
11
  /** --- 框架的 LIB,以 / 结尾 --- */
package/index.js CHANGED
@@ -6,7 +6,7 @@
6
6
  * --- 本文件用来定义每个目录实体地址的常量 ---
7
7
  */
8
8
  /** --- 当前系统版本号 --- */
9
- export const VER = '8.5.0';
9
+ export const VER = '8.5.1';
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
@@ -48,6 +48,7 @@ export declare class Sql {
48
48
  'pre'?: string;
49
49
  'data'?: kebab.DbValue[];
50
50
  'sql'?: string[];
51
+ 'alias'?: string[];
51
52
  });
52
53
  /**
53
54
  * --- 插入数据前导 ---
@@ -246,6 +247,7 @@ export declare function get(opt: {
246
247
  'pre'?: string;
247
248
  'data'?: kebab.DbValue[];
248
249
  'sql'?: string[];
250
+ 'alias'?: string[];
249
251
  }): Sql;
250
252
  /**
251
253
  * --- 返回代入后的完整 SQL 字符串,这并不安全不能直接执行,只是用来调试打印 sql 语句 ---
package/lib/sql.js CHANGED
@@ -54,6 +54,9 @@ export class Sql {
54
54
  if (opt.sql) {
55
55
  this._sql = opt.sql;
56
56
  }
57
+ if (opt.alias) {
58
+ this._alias = opt.alias;
59
+ }
57
60
  }
58
61
  // --- 前导 ---
59
62
  /**
@@ -756,6 +759,7 @@ export class Sql {
756
759
  'pre': this._pre,
757
760
  'data': data,
758
761
  'sql': sql,
762
+ 'alias': lCore.clone(this._alias),
759
763
  });
760
764
  }
761
765
  // --- 操作 ---
@@ -769,7 +773,7 @@ export class Sql {
769
773
  if (this._service === ESERVICE.MYSQL) {
770
774
  return result.replace(new RegExp('`' + this._pre + item + '`', 'g'), '`' + item + '`');
771
775
  }
772
- return result.replace(new RegExp(`"${this._pre}"."${item}"`, 'g'), '"' + item + '"');
776
+ return result.replace(new RegExp(`"${this._pre}"\\."${item}"`, 'g'), '"' + item + '"');
773
777
  }, sql);
774
778
  }
775
779
  return sql;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maiyunnet/kebab",
3
- "version": "8.5.0",
3
+ "version": "8.5.1",
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": [
package/sys/child.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Project: Kebab, User: JianSuoQiYue
3
3
  * Date: 2019-5-3 23:54
4
- * Last: 2020-3-31 15:01:07, 2020-4-9 22:28:50, 2022-07-22 14:19:46, 2022-9-29 22:11:07, 2023-5-1 18:26:57, 2024-1-12 13:32:00, 2024-3-4 16:49:19
4
+ * Last: 2020-3-31 15:01:07, 2020-4-9 22:28:50, 2022-07-22 14:19:46, 2022-9-29 22:11:07, 2023-5-1 18:26:57, 2024-1-12 13:32:00, 2024-3-4 16:49:19, 2026-3-8 16:21:40
5
5
  */
6
6
  import * as http2 from 'http2';
7
7
  import * as tls from 'tls';
@@ -30,6 +30,8 @@ const hbTimer = setInterval(function () {
30
30
  let certList = [];
31
31
  /** --- server: index --- */
32
32
  let certHostIndex = {};
33
+ /** --- 默认证书 --- */
34
+ let defaultSc;
33
35
  /** --- 最后一次加载证书到内存的时间 --- */
34
36
  let certLastLoad = 0;
35
37
  /** --- 当前的虚拟主机配置列表 - 读取于 conf/vhost/*.json --- */
@@ -102,6 +104,11 @@ async function run() {
102
104
  certHostIndex[servername] = i;
103
105
  return;
104
106
  }
107
+ if (defaultSc) {
108
+ cb(null, defaultSc);
109
+ return;
110
+ }
111
+ lCore.display(`[CHILD][SNICallback] CERT NOT FOUND for servername: ${servername}`);
105
112
  const err = new Error('CERT NOT FOUND');
106
113
  cb(err);
107
114
  },
@@ -498,6 +505,7 @@ async function reloadCert() {
498
505
  // --- NOTHING ---
499
506
  }
500
507
  certList = cl;
508
+ defaultSc = cl.length > 0 ? cl[0].sc : undefined;
501
509
  certHostIndex = {};
502
510
  }
503
511
  // --- 接收主进程回传信号,主要用来 reload,restart ---
package/sys/mod.js CHANGED
@@ -872,7 +872,7 @@ export default class Mod {
872
872
  for (let i = 0; i < this._index.length; ++i) {
873
873
  // --- 先计算 total ---
874
874
  if (i > 0) {
875
- sql = sql.replace(/(FROM [a-zA-Z0-9`"_.]+?_)[0-9_]+/, '$1' + this._index[i]);
875
+ sql = sql.replace(/(FROM [a-zA-Z0-9`"_.]+?_)[\w]+/, '$1' + this._index[i]);
876
876
  }
877
877
  const tsql = this._formatTotal(sql);
878
878
  const tr = await this._db.query(tsql, this._sql.getData());
@@ -911,7 +911,7 @@ export default class Mod {
911
911
  'ctr': this._ctr,
912
912
  'pre': this._sql.getPre(),
913
913
  'row': row,
914
- 'index': this._index,
914
+ 'index': this._index[i],
915
915
  });
916
916
  list[row[key]] = obj;
917
917
  --remain;
@@ -924,7 +924,7 @@ export default class Mod {
924
924
  'ctr': this._ctr,
925
925
  'pre': this._sql.getPre(),
926
926
  'row': row,
927
- 'index': this._index,
927
+ 'index': this._index[i],
928
928
  });
929
929
  list.push(obj);
930
930
  --remain;
@@ -942,9 +942,10 @@ export default class Mod {
942
942
  return false;
943
943
  }
944
944
  // --- 检查没被查到的必包含项 ---
945
+ const containKeyStr = this._contain ? (this._contain.key.includes('.') ? this._contain.key.split('.').pop() : this._contain.key) : '';
945
946
  for (const row of r.rows) {
946
947
  if (this._contain && contain) {
947
- const io = contain.indexOf(row[this._contain.key]);
948
+ const io = contain.indexOf(row[containKeyStr]);
948
949
  if (io !== -1) {
949
950
  contain.splice(io, 1);
950
951
  }
@@ -1032,7 +1033,7 @@ export default class Mod {
1032
1033
  for (let i = 0; i < this._index.length; ++i) {
1033
1034
  // --- 先计算 total ---
1034
1035
  if (i > 0) {
1035
- sql = sql.replace(/(FROM [a-zA-Z0-9`"_.]+?_)[0-9_]+/, '$1' + this._index[i]);
1036
+ sql = sql.replace(/(FROM [a-zA-Z0-9`"_.]+?_)[\w]+/, '$1' + this._index[i]);
1036
1037
  }
1037
1038
  const tsql = this._formatTotal(sql);
1038
1039
  const tr = await this._db.query(tsql, this._sql.getData());
@@ -1089,9 +1090,10 @@ export default class Mod {
1089
1090
  return false;
1090
1091
  }
1091
1092
  // --- 检查没被查到的必包含项 ---
1093
+ const containKeyStr = this._contain ? (this._contain.key.includes('.') ? this._contain.key.split('.').pop() : this._contain.key) : '';
1092
1094
  for (const row of r.rows) {
1093
1095
  if (this._contain && contain) {
1094
- const io = contain.indexOf(row[this._contain.key]);
1096
+ const io = contain.indexOf(row[containKeyStr]);
1095
1097
  if (io !== -1) {
1096
1098
  contain.splice(io, 1);
1097
1099
  }
@@ -1155,13 +1157,13 @@ export default class Mod {
1155
1157
  _formatTotal(sql, f = '*') {
1156
1158
  const q = this._db.getService() === lDb.ESERVICE.MYSQL ? '`' : '"';
1157
1159
  sql = sql
1158
- .replace(/ LIMIT [0-9 ,]+(OFFSET [0-9]+)?/g, '')
1159
- .replace(/ ORDER BY [\w`",. ]+(DESC|ASC)?/g, '');
1160
+ .replace(/ LIMIT [0-9 ,]+(OFFSET [0-9]+)?/ig, '')
1161
+ .replace(/ ORDER BY [\w`",. ]+(DESC|ASC)?/ig, '');
1160
1162
  if (sql.includes(' GROUP BY ')) {
1161
- return 'SELECT COUNT(0) AS `count` FROM(' + sql + ') AS `f`';
1163
+ return `SELECT COUNT(0) AS ${q}count${q} FROM(` + sql + `) AS ${q}f${q}`;
1162
1164
  }
1163
1165
  return sql
1164
- .replace(/SELECT .+? FROM/g, `SELECT COUNT(${this._sql.field(f)}) AS ${q}count${q} FROM`);
1166
+ .replace(/SELECT .+? FROM/is, `SELECT COUNT(${this._sql.field(f)}) AS ${q}count${q} FROM`);
1165
1167
  }
1166
1168
  /**
1167
1169
  * --- 获取总条数,自动抛弃 LIMIT,仅用于获取数据的情况(select) ---
@@ -1190,7 +1192,8 @@ export default class Mod {
1190
1192
  * --- 根据当前条件,筛选出当前条目该有的数据条数 ---
1191
1193
  */
1192
1194
  async count() {
1193
- const sql = this._sql.getSql().replace(/SELECT .+? FROM/, this._db.getService() === lDb.ESERVICE.MYSQL ?
1195
+ const sql = this._sql.getSql()
1196
+ .replace(/SELECT .+? FROM/is, this._db.getService() === lDb.ESERVICE.MYSQL ?
1194
1197
  'SELECT COUNT(0) AS `count` FROM' :
1195
1198
  'SELECT COUNT(0) AS "count" FROM');
1196
1199
  const r = await this._db.query(sql, this._sql.getData());
@@ -1208,7 +1211,8 @@ export default class Mod {
1208
1211
  * --- 获取当前条件下的 count 的 SQL 语句 ---
1209
1212
  */
1210
1213
  countSql() {
1211
- const sql = this._sql.getSql().replace(/SELECT .+? FROM/, this._db.getService() === lDb.ESERVICE.MYSQL ?
1214
+ const sql = this._sql.getSql()
1215
+ .replace(/SELECT .+? FROM/is, this._db.getService() === lDb.ESERVICE.MYSQL ?
1212
1216
  'SELECT COUNT(0) AS `count` FROM' : 'SELECT COUNT(0) AS "count" FROM');
1213
1217
  return this._sql.format(sql, this._sql.getData());
1214
1218
  }
@@ -36,6 +36,7 @@ export default class extends sCtr.Ctr {
36
36
  modInsert(): Promise<string>;
37
37
  modUpsert(): Promise<string>;
38
38
  modUpdateList(): Promise<string>;
39
+ modContain(): Promise<string>;
39
40
  captchaFastbuild(): string;
40
41
  captchaBase64(): string;
41
42
  coreRandom(): string;
@@ -125,6 +125,7 @@ export default class extends sCtr.Ctr {
125
125
  `<br><a href="${this._config.const.urlBase}test/mod-insert">View "test/mod-insert"</a>`,
126
126
  `<br><a href="${this._config.const.urlBase}test/mod-upsert">View "test/mod-upsert"</a>`,
127
127
  `<br><a href="${this._config.const.urlBase}test/mod-update-list">View "test/mod-update-list"</a>`,
128
+ `<br><a href="${this._config.const.urlBase}test/mod-contain">View "test/mod-contain"</a>`,
128
129
  '<br><br><b>Library test:</b>',
129
130
  `<br><br><b>Ai:</b>`,
130
131
  `<br><a href="${this._config.const.urlBase}test/ai-stream">View "test/ai-stream"</a>`,
@@ -1027,6 +1028,32 @@ const res2 = await test2.upsert('name');</pre>Result: ${res2}<br><br>`);
1027
1028
  });
1028
1029
  return echo.join('') + '<br>' + this._getEnd();
1029
1030
  }
1031
+ async modContain() {
1032
+ const echo = ['<b style="color: red;">In a production environment, please delete "mod/test.ts" and "mod/testdata.ts" files.</b>'];
1033
+ const db = this._get['s'] === 'pgsql' ? lDb.get(this, {
1034
+ 'service': lDb.ESERVICE.PGSQL,
1035
+ }) : lDb.get(this);
1036
+ echo.push('<br><br><b>Testing mod.contain with leftJoin and AS clauses:</b><br>');
1037
+ const pre = this._get['s'] === 'pgsql' ? 'm' : undefined;
1038
+ const q = mTest.select(db, [
1039
+ 'a.id', 'a.name', 'a.token', 'g.content', 'a.time_add'
1040
+ ], {
1041
+ 'ctr': this,
1042
+ 'alias': 'a',
1043
+ 'contain': {
1044
+ 'key': 'a.token',
1045
+ 'list': ['ul_token_0', 'ul_token_1']
1046
+ },
1047
+ 'pre': pre,
1048
+ }).leftJoin('testdata g', {
1049
+ 'a.id': mTest.column('g.test_id')
1050
+ }, undefined, pre).limit(2);
1051
+ echo.push(`<pre><b>SQL generated:</b>\n<code>${q.getSql()}</code></pre>`);
1052
+ const rows = await q.allArray('id');
1053
+ echo.push('<b>Result Data:</b>');
1054
+ echo.push(`<pre><code>${lText.stringifyJson(rows, 4)}</code></pre>`);
1055
+ return echo.join('') + '<br>' + this._getEnd();
1056
+ }
1030
1057
  captchaFastbuild() {
1031
1058
  return lCaptcha.get(400, 100).getBuffer();
1032
1059
  }