@maiyunnet/kebab 9.19.1 → 9.20.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.
package/doc/kebab-rag.md CHANGED
@@ -121,6 +121,157 @@ public create(): kebab.Json[] {
121
121
 
122
122
  `_valibotx` 默认先校验 `_xsrf`,通过后才运行 schema,且 `_xsrf` 不会被自动加入 schema 输出。仅在已有等效安全机制时才可使用 `{ 'ignoreXsrf': true }`。只读请求使用 `_valibot`。
123
123
 
124
+ query-pagination.md
125
+ ---
126
+
127
+ # 游标分页与 PostgreSQL 近似总数
128
+
129
+ 日志、硬件消息等大量追加记录的列表,可以用 `allCursor()` 顺序读取上一批、下一批,并通过 `totalEstimate()` 展示近似总量。普通 `page()`、`total()` 保持原有行为。
130
+
131
+ ## by() 与 seek()
132
+
133
+ `by()` 只设置 ORDER BY,支持各字段使用不同的排序方向。`seek(fields, values?, direction?)` 用于非空、同向排序的游标字段:传入 `values` 时,在原 WHERE 后追加参数化边界条件,再调用 `by()` 设置排序;不传 `values` 时,只校验字段并设置排序。
134
+
135
+ ```ts
136
+ // --- 首批:相同字段、方向下,两种写法生成相同 SQL ---
137
+ base.copy().by(['time_add', 'id'], 'DESC').limit(20);
138
+ base.copy().seek(['time_add', 'id']).limit(20);
139
+
140
+ // --- 下一批:传上一批末行的值,增加 WHERE 边界,无 OFFSET ---
141
+ base.copy().seek(['time_add', 'id'], [1700500000, '9007199254740993']).limit(20);
142
+ ```
143
+
144
+ 最后一条查询在原筛选后追加的条件相当于:
145
+
146
+ ```sql
147
+ AND (time_add, id) < (?, ?)
148
+ AND time_add <= ?
149
+ ORDER BY time_add DESC, id DESC
150
+ LIMIT 20
151
+ ```
152
+
153
+ 这是使用 `?` 表示参数位置的示意;PostgreSQL 实际使用 `$1`、`$2` 等占位符。复合边界中的 ID 区分同一时间的记录;显式首列范围有助于 PostgreSQL 收紧索引扫描边界。升序使用 `>` 和 `>=`。
154
+
155
+ `seek()` 必须在排序、分页、分组之前调用,不需要再调用 `by()`。它只构建 SQL,业务分页推荐使用模型的 `allCursor()`,由模型处理多取一条和上一批结果的顺序恢复。
156
+
157
+ ## allCursor() 的返回值
158
+
159
+ `allCursor(count, options)` 多取一条,通过实际查询结果判断还有没有后续记录,返回的 `list` 最多包含 `count` 条。查询失败返回 `false`;成功但无匹配记录时,`list` 为空,两个游标为 `null`。
160
+
161
+ | 字段 | 含义 |
162
+ | --- | --- |
163
+ | `list` | 本批数据,始终保持 `order` 指定的展示顺序 |
164
+ | `next` | 本批末行的排序字段值,用于读取下一批 |
165
+ | `previous` | 本批首行的排序字段值,用于读取上一批 |
166
+ | `hasMore` | 沿本次查询方向,是否还有更多记录 |
167
+
168
+ `next`、`previous` 是行边界,不是翻页许可。第一页的 `previous`、最后一页的 `next` 都可能有值,不能仅凭游标非空启用按钮。
169
+
170
+ ## 首批、下一页与上一页
171
+
172
+ | 操作 | `cursor` | `before` | 返回的 `hasMore` 表示 |
173
+ | --- | --- | --- | --- |
174
+ | 首次查询 | 不传 | 不传或 `false` | 是否还有下一页 |
175
+ | 下一页 | 当前结果的 `next` | `false` | 是否还有下一页 |
176
+ | 上一页 | 当前结果的 `previous` | `true` | 是否还有上一页 |
177
+
178
+ 无论向哪边翻页,`order` 都保持原展示方向。`before: true` 时,框架内部反向扫描,截取本批数据后再反转列表,调用方不用再次反转。
179
+
180
+ 每次查询成功后,都要保存新结果的首末行游标。翻页期间保持筛选条件、结束时间、每批数量和排序不变;筛选或数量变化时重新读取首批。
181
+
182
+ ## 业务侧的翻页按钮
183
+
184
+ 下面以 PostgreSQL 消息模型为例,假设 `db`、`mMessage`、已校验的 `start` 和固定的 `end` 已由调用方提供。实际项目应把实体查询放在自定义 MOD 中。
185
+
186
+ ```ts
187
+ import * as lSql from '@maiyunnet/kebab/lib/sql.js';
188
+
189
+ const query = mMessage.select<mMessage>(db, [
190
+ 'm.id::text id', 'm.time_add',
191
+ ], { 'alias': 'm' }).filter([
192
+ ['m.time_add', '>=', start],
193
+ ['m.time_add', '<=', end],
194
+ ]);
195
+
196
+ /**
197
+ * --- 读取一批消息,并将扫描方向转换为上一页、下一页状态 ---
198
+ * @param direction 翻页方向,首次读取使用 next 且不传 cursor
199
+ * @param cursor 当前页的末行或首行游标
200
+ * @returns 分页结果;数据库查询失败返回 false
201
+ */
202
+ async function readPage(direction: 'next' | 'prev', cursor?: lSql.TCursorValue[]) {
203
+ const before = direction === 'prev';
204
+ const page = await query.allCursor(20, {
205
+ 'by': ['m.time_add', 'm.id'],
206
+ 'order': 'DESC',
207
+ 'cursor': cursor,
208
+ 'before': before,
209
+ });
210
+ if (page === false) {
211
+ return false;
212
+ }
213
+ const returnedRows = page.list.length > 0;
214
+ return {
215
+ 'list': page.list,
216
+ 'nextCursor': page.next,
217
+ 'prevCursor': page.previous,
218
+ 'hasNext': before ? !!cursor && returnedRows : page.hasMore,
219
+ 'hasPrev': before ? page.hasMore : !!cursor && returnedRows,
220
+ };
221
+ }
222
+
223
+ // --- 首次查询 ---
224
+ let current = await readPage('next');
225
+
226
+ // --- 点击下一页:传当前页末行游标 ---
227
+ if (current !== false && current.hasNext && current.nextCursor) {
228
+ const result = await readPage('next', current.nextCursor);
229
+ if (result !== false) {
230
+ current = result;
231
+ }
232
+ }
233
+
234
+ // --- 点击上一页:传当前页首行游标,readPage 内部设置 before: true ---
235
+ if (current !== false && current.hasPrev && current.prevCursor) {
236
+ const result = await readPage('prev', current.prevCursor);
237
+ if (result !== false) {
238
+ current = result;
239
+ }
240
+ }
241
+ ```
242
+
243
+ 沿查询方向的按钮状态来自 `hasMore`;另一侧根据“已从那一页翻过来,并且本次返回非空结果”的浏览状态判断,这没有同时扫描两侧。如果业务允许删除历史记录,反方向状态也可能变化;翻页查询失败或原有页面因删除变为空时,界面可以保留原页并提示重新刷新。
244
+
245
+ 例如,每批两条、降序记录为 `92、82、80、79`:首批 `92、82` 有下一页、无上一页;传其 `next` 得到 `80、79`,无下一页、有上一页;再传这一批的 `previous` 并设置 `before: true`,返回 `92、82`。
246
+
247
+ ## 近似总数
248
+
249
+ `totalEstimate()` 仅支持 PostgreSQL。它移除原 SELECT 的外层 ORDER BY、LIMIT/OFFSET,执行普通 `EXPLAIN (FORMAT JSON)`,读取顶层 `Plan Rows`;不使用 ANALYZE,不执行原 SELECT,也不回退到 COUNT。
250
+
251
+ ```ts
252
+ // --- 对基础筛选估算一次,不带游标条件 ---
253
+ const estimated = await query.totalEstimate();
254
+ const total = estimated === false ? null : estimated;
255
+ ```
256
+
257
+ 失败、其他数据库、框架分表模式或 contain 返回 `false`,不能解释为总数为零。统计信息陈旧、字段相关性或罕见取值可能导致明显偏差;即使估算为 1,实际查询也可能没有匹配记录。
258
+
259
+ 界面应明确标注近似总数,例如“约 120 万条”,仅首次筛选时估算,翻页复用。按钮由实际分页结果决定,不能根据近似总数计算是否允许继续翻页。首批已经读取完整结果时,可以用 `list.length` 得到精确总数。
260
+
261
+ 展示用途的 JOIN 如果不改变原始记录的筛选或数量,可以对不带 JOIN 的基础实体查询估算;JOIN 参与筛选或产生重复行时,需要先明确统计的对象。
262
+
263
+ ## 字段、索引与限制
264
+
265
+ - 排序字段必须全部非空、方向一致,且组合唯一,通常使用 `time_add、id`。
266
+ - SELECT 必须包含排序字段。`by` 有表别名时,默认从结果中取不带表别名的 key;结果字段改名时,通过 `keys` 显式指定对应关系。
267
+ - 大整数在数据库投影时取为字符串,并以字符串传回。不能先由驱动转成不安全的 Number,再 stringify。上例 PostgreSQL 使用 `m.id::text id`,排序仍使用原表数值字段 `m.id`。
268
+ - `null`、不安全的数值边界、非法字段和不支持的查询结构会抛出配置错误。字段和排序规则由服务端固定,游标及筛选参数在请求入口校验。
269
+ - 支持 PostgreSQL 原生分区表、MySQL 普通表;不支持模型 `index` 分表、contain、分组、UNION 或混合方向排序。`allCursor()` 不修改基础模型查询。
270
+ - 典型索引为 `(time_add, id)`,按设备筛选时为 `(no, time_add, id)`。ASC B-tree 支持整体反向扫描,无需为同向降序再重复创建索引。
271
+ - 固定结束时间可以减小新增记录对浏览的影响,游标分页不等同于跨请求事务快照,也不提供按任意页码直接跳转。
272
+
273
+ 可运行演示见示例项目的 `test/mod-test`、`test/mod-test?s=pgsql` 和 `test/sql?type=seek`。
274
+
124
275
  index/index.md
125
276
  ---
126
277
 
@@ -1438,7 +1589,7 @@ index/variables/VER.md
1438
1589
 
1439
1590
  # Variable: VER
1440
1591
 
1441
- > `const` **VER**: `"9.19.1"` = `'9.19.1'`
1592
+ > `const` **VER**: `"9.20.0"` = `'9.20.0'`
1442
1593
 
1443
1594
  Defined in: [index.ts:10](https://github.com/maiyunnet/kebab/blob/master/index.ts#L10)
1444
1595
 
@@ -123199,7 +123350,7 @@ lib/sql/classes/Sql.md
123199
123350
 
123200
123351
  # Class: Sql
123201
123352
 
123202
- Defined in: [lib/sql.ts:43](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L43)
123353
+ Defined in: [lib/sql.ts:46](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L46)
123203
123354
 
123204
123355
  ## Constructors
123205
123356
 
@@ -123207,7 +123358,7 @@ Defined in: [lib/sql.ts:43](https://github.com/maiyunnet/kebab/blob/master/lib/s
123207
123358
 
123208
123359
  > **new Sql**(`opt`): `Sql`
123209
123360
 
123210
- Defined in: [lib/sql.ts:73](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L73)
123361
+ Defined in: [lib/sql.ts:76](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L76)
123211
123362
 
123212
123363
  #### Parameters
123213
123364
 
@@ -123249,7 +123400,7 @@ Defined in: [lib/sql.ts:73](https://github.com/maiyunnet/kebab/blob/master/lib/s
123249
123400
 
123250
123401
  > **append**(`sql`): `this`
123251
123402
 
123252
- Defined in: [lib/sql.ts:1057](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1057)
123403
+ Defined in: [lib/sql.ts:1126](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1126)
123253
123404
 
123254
123405
  在 sql 最后追加字符串
123255
123406
 
@@ -123269,7 +123420,7 @@ Defined in: [lib/sql.ts:1057](https://github.com/maiyunnet/kebab/blob/master/lib
123269
123420
 
123270
123421
  > **by**(`c`, `d?`): `this`
123271
123422
 
123272
- Defined in: [lib/sql.ts:809](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L809)
123423
+ Defined in: [lib/sql.ts:813](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L813)
123273
123424
 
123274
123425
  ORDER BY
123275
123426
 
@@ -123297,7 +123448,7 @@ ORDER BY
123297
123448
 
123298
123449
  > **copy**(`f?`, `opt?`): `Sql`
123299
123450
 
123300
- Defined in: [lib/sql.ts:877](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L877)
123451
+ Defined in: [lib/sql.ts:932](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L932)
123301
123452
 
123302
123453
  创建一个本对象的一个新的 sql 对象拷贝
123303
123454
 
@@ -123311,6 +123462,18 @@ Defined in: [lib/sql.ts:877](https://github.com/maiyunnet/kebab/blob/master/lib/
123311
123462
 
123312
123463
  ##### opt?
123313
123464
 
123465
+ ###### limit?
123466
+
123467
+ `false`
123468
+
123469
+ false 时移除本查询的 LIMIT/OFFSET,不修改子查询
123470
+
123471
+ ###### order?
123472
+
123473
+ `false`
123474
+
123475
+ false 时移除本查询的排序,不修改子查询
123476
+
123314
123477
  ###### where?
123315
123478
 
123316
123479
  `any`
@@ -123325,7 +123488,7 @@ Defined in: [lib/sql.ts:877](https://github.com/maiyunnet/kebab/blob/master/lib/
123325
123488
 
123326
123489
  > **crossJoin**(`f`, `s?`, `suf?`, `pre?`): `this`
123327
123490
 
123328
- Defined in: [lib/sql.ts:528](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L528)
123491
+ Defined in: [lib/sql.ts:532](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L532)
123329
123492
 
123330
123493
  cross join 方法
123331
123494
 
@@ -123365,7 +123528,7 @@ MySQL 时为表前缀,PostgreSQL 时为 Schema 名,仅在 join 非默认前
123365
123528
 
123366
123529
  > **delete**(`f`): `this`
123367
123530
 
123368
- Defined in: [lib/sql.ts:416](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L416)
123531
+ Defined in: [lib/sql.ts:420](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L420)
123369
123532
 
123370
123533
  'xx'
123371
123534
 
@@ -123387,7 +123550,7 @@ Defined in: [lib/sql.ts:416](https://github.com/maiyunnet/kebab/blob/master/lib/
123387
123550
 
123388
123551
  > **field**(`str`, `pre?`, `suf?`): `string`
123389
123552
 
123390
- Defined in: [lib/sql.ts:1068](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1068)
123553
+ Defined in: [lib/sql.ts:1137](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1137)
123391
123554
 
123392
123555
  对字段进行包裹
123393
123556
 
@@ -123419,7 +123582,7 @@ MySQL 时为表前缀,PostgreSQL 时为 Schema 名,仅请在 field 表名时
123419
123582
 
123420
123583
  > **format**(`sql?`, `data?`): `string`
123421
123584
 
123422
- Defined in: [lib/sql.ts:1047](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1047)
123585
+ Defined in: [lib/sql.ts:1116](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1116)
123423
123586
 
123424
123587
  获取带 data 的 sql 语句
123425
123588
 
@@ -123443,7 +123606,7 @@ Defined in: [lib/sql.ts:1047](https://github.com/maiyunnet/kebab/blob/master/lib
123443
123606
 
123444
123607
  > **fullJoin**(`f`, `s?`, `suf?`, `pre?`): `this`
123445
123608
 
123446
- Defined in: [lib/sql.ts:517](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L517)
123609
+ Defined in: [lib/sql.ts:521](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L521)
123447
123610
 
123448
123611
  full join 方法
123449
123612
 
@@ -123483,7 +123646,7 @@ MySQL 时为表前缀,PostgreSQL 时为 Schema 名,仅在 join 非默认前
123483
123646
 
123484
123647
  > **getData**(): [`DbValue`](../../../index/type-aliases/DbValue.md)[]
123485
123648
 
123486
- Defined in: [lib/sql.ts:1031](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1031)
123649
+ Defined in: [lib/sql.ts:1100](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1100)
123487
123650
 
123488
123651
  获取全部 data
123489
123652
 
@@ -123497,7 +123660,7 @@ Defined in: [lib/sql.ts:1031](https://github.com/maiyunnet/kebab/blob/master/lib
123497
123660
 
123498
123661
  > **getPre**(): `string`
123499
123662
 
123500
- Defined in: [lib/sql.ts:1038](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1038)
123663
+ Defined in: [lib/sql.ts:1107](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1107)
123501
123664
 
123502
123665
  获取定义的 pre
123503
123666
 
@@ -123511,7 +123674,7 @@ Defined in: [lib/sql.ts:1038](https://github.com/maiyunnet/kebab/blob/master/lib
123511
123674
 
123512
123675
  > **getSql**(): `string`
123513
123676
 
123514
- Defined in: [lib/sql.ts:1011](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1011)
123677
+ Defined in: [lib/sql.ts:1080](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1080)
123515
123678
 
123516
123679
  获取 sql 语句
123517
123680
 
@@ -123525,7 +123688,7 @@ Defined in: [lib/sql.ts:1011](https://github.com/maiyunnet/kebab/blob/master/lib
123525
123688
 
123526
123689
  > **group**(`c`): `this`
123527
123690
 
123528
- Defined in: [lib/sql.ts:833](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L833)
123691
+ Defined in: [lib/sql.ts:888](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L888)
123529
123692
 
123530
123693
  GROUP BY
123531
123694
 
@@ -123547,7 +123710,7 @@ GROUP BY
123547
123710
 
123548
123711
  > **having**(`s?`): `this`
123549
123712
 
123550
- Defined in: [lib/sql.ts:535](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L535)
123713
+ Defined in: [lib/sql.ts:539](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L539)
123551
123714
 
123552
123715
  having 后置筛选器,用法类似 where
123553
123716
 
@@ -123567,7 +123730,7 @@ having 后置筛选器,用法类似 where
123567
123730
 
123568
123731
  > **hint**(`h`): `this`
123569
123732
 
123570
- Defined in: [lib/sql.ts:119](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L119)
123733
+ Defined in: [lib/sql.ts:123](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L123)
123571
123734
 
123572
123735
  设置 MySQL 优化器 Hint
123573
123736
  会以 Optimizer Hint 注释语法注入到 SELECT 关键字后
@@ -123612,7 +123775,7 @@ INDEX(`t1` `idx_a`) JOIN_INDEX(`t2` `idx_b`)
123612
123775
 
123613
123776
  > **innerJoin**(`f`, `s?`, `suf?`, `pre?`): `this`
123614
123777
 
123615
- Defined in: [lib/sql.ts:506](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L506)
123778
+ Defined in: [lib/sql.ts:510](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L510)
123616
123779
 
123617
123780
  inner join 方法
123618
123781
 
@@ -123652,7 +123815,7 @@ MySQL 时为表前缀,PostgreSQL 时为 Schema 名,仅在 join 非默认前
123652
123815
 
123653
123816
  > **insert**(`table`, `ignore?`): `this`
123654
123817
 
123655
- Defined in: [lib/sql.ts:131](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L131)
123818
+ Defined in: [lib/sql.ts:135](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L135)
123656
123819
 
123657
123820
  插入数据前导
123658
123821
 
@@ -123680,7 +123843,7 @@ Defined in: [lib/sql.ts:131](https://github.com/maiyunnet/kebab/blob/master/lib/
123680
123843
 
123681
123844
  > **join**(`f`, `s?`, `type?`, `suf?`, `pre?`): `this`
123682
123845
 
123683
- Defined in: [lib/sql.ts:458](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L458)
123846
+ Defined in: [lib/sql.ts:462](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L462)
123684
123847
 
123685
123848
  join 方法
123686
123849
 
@@ -123726,7 +123889,7 @@ MySQL 时为表前缀,PostgreSQL 时为 Schema 名,仅在 join 非默认前
123726
123889
 
123727
123890
  > **leftJoin**(`f`, `s?`, `suf?`, `pre?`): `this`
123728
123891
 
123729
- Defined in: [lib/sql.ts:484](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L484)
123892
+ Defined in: [lib/sql.ts:488](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L488)
123730
123893
 
123731
123894
  left join 方法
123732
123895
 
@@ -123766,7 +123929,7 @@ MySQL 时为表前缀,PostgreSQL 时为 Schema 名,仅在 join 非默认前
123766
123929
 
123767
123930
  > **limit**(`a`, `b?`): `this`
123768
123931
 
123769
- Defined in: [lib/sql.ts:853](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L853)
123932
+ Defined in: [lib/sql.ts:908](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L908)
123770
123933
 
123771
123934
  LIMIT(limit、offset, limit)
123772
123935
 
@@ -123794,7 +123957,7 @@ LIMIT(limit、offset, limit)
123794
123957
 
123795
123958
  > **lock**(): `this`
123796
123959
 
123797
- Defined in: [lib/sql.ts:868](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L868)
123960
+ Defined in: [lib/sql.ts:923](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L923)
123798
123961
 
123799
123962
  追加消极锁,通常不建议使用
123800
123963
 
@@ -123808,7 +123971,7 @@ Defined in: [lib/sql.ts:868](https://github.com/maiyunnet/kebab/blob/master/lib/
123808
123971
 
123809
123972
  > **rightJoin**(`f`, `s?`, `suf?`, `pre?`): `this`
123810
123973
 
123811
- Defined in: [lib/sql.ts:495](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L495)
123974
+ Defined in: [lib/sql.ts:499](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L499)
123812
123975
 
123813
123976
  right join 方法
123814
123977
 
@@ -123844,11 +124007,48 @@ MySQL 时为表前缀,PostgreSQL 时为 Schema 名,仅在 join 非默认前
123844
124007
 
123845
124008
  ***
123846
124009
 
124010
+ ### seek()
124011
+
124012
+ > **seek**(`c`, `values?`, `d?`): `this`
124013
+
124014
+ Defined in: [lib/sql.ts:841](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L841)
124015
+
124016
+ 按非空、同向排序字段定位游标并设置排序;字段组合须唯一且有匹配索引
124017
+ 使用行比较,让 PostgreSQL 可以从复合索引边界开始扫描
124018
+
124019
+ #### Parameters
124020
+
124021
+ ##### c
124022
+
124023
+ `string` \| `string`[]
124024
+
124025
+ 排序字段,支持表别名;不支持表达式、GROUP BY 或 UNION
124026
+
124027
+ ##### values?
124028
+
124029
+ [`TCursorValue`](../type-aliases/TCursorValue.md)[]
124030
+
124031
+ 上一页末行的字段值,省略时读取首批
124032
+
124033
+ ##### d?
124034
+
124035
+ `"DESC"` \| `"ASC"`
124036
+
124037
+ 扫描方向;读取前一批时反转方向并在取回后反转列表
124038
+
124039
+ #### Returns
124040
+
124041
+ `this`
124042
+
124043
+ 当前 SQL 对象
124044
+
124045
+ ***
124046
+
123847
124047
  ### select()
123848
124048
 
123849
124049
  > **select**(`c`, `f`): `this`
123850
124050
 
123851
- Defined in: [lib/sql.ts:303](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L303)
124051
+ Defined in: [lib/sql.ts:307](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L307)
123852
124052
 
123853
124053
  '*', 'xx'
123854
124054
 
@@ -123876,7 +124076,7 @@ Defined in: [lib/sql.ts:303](https://github.com/maiyunnet/kebab/blob/master/lib/
123876
124076
 
123877
124077
  > **union**(`lsql`, `type?`): `this`
123878
124078
 
123879
- Defined in: [lib/sql.ts:428](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L428)
124079
+ Defined in: [lib/sql.ts:432](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L432)
123880
124080
 
123881
124081
  联查另一个 sql 对象
123882
124082
 
@@ -123904,7 +124104,7 @@ sql 对象
123904
124104
 
123905
124105
  > **unionAll**(`lsql`): `this`
123906
124106
 
123907
- Defined in: [lib/sql.ts:446](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L446)
124107
+ Defined in: [lib/sql.ts:450](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L450)
123908
124108
 
123909
124109
  所有联查另一个 sql 对象
123910
124110
 
@@ -123926,7 +124126,7 @@ sql 对象
123926
124126
 
123927
124127
  > **update**(`f`, `s`): `this`
123928
124128
 
123929
- Defined in: [lib/sql.ts:344](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L344)
124129
+ Defined in: [lib/sql.ts:348](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L348)
123930
124130
 
123931
124131
  UPDATE SQL 方法
123932
124132
 
@@ -123954,7 +124154,7 @@ UPDATE SQL 方法
123954
124154
 
123955
124155
  > **updateByValues**(`table`, `key`, `cols`, `rows`): `this`
123956
124156
 
123957
- Defined in: [lib/sql.ts:247](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L247)
124157
+ Defined in: [lib/sql.ts:251](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L251)
123958
124158
 
123959
124159
  批量 UPDATE,以子查询作为数据源,纯更新语义(不会插入新行)
123960
124160
  MySQL: UPDATE t INNER JOIN (SELECT col AS alias ... UNION ALL SELECT ...) AS tmp ON t.key=tmp.key SET t.c=tmp.c
@@ -123997,7 +124197,7 @@ PostgreSQL: UPDATE t SET c=tmp.c FROM (VALUES (typed nulls), ($1,...)) AS tmp(co
123997
124197
 
123998
124198
  > **upsert**(`data`, `conflict?`): `this`
123999
124199
 
124000
- Defined in: [lib/sql.ts:208](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L208)
124200
+ Defined in: [lib/sql.ts:212](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L212)
124001
124201
 
124002
124202
  如果存在则更新不存在则插入(UPSERT)
124003
124203
 
@@ -124025,7 +124225,7 @@ Defined in: [lib/sql.ts:208](https://github.com/maiyunnet/kebab/blob/master/lib/
124025
124225
 
124026
124226
  > **values**(`cs`, `vs?`): `this`
124027
124227
 
124028
- Defined in: [lib/sql.ts:150](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L150)
124228
+ Defined in: [lib/sql.ts:154](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L154)
124029
124229
 
124030
124230
  实际插入数据的数据
124031
124231
 
@@ -124053,7 +124253,7 @@ Defined in: [lib/sql.ts:150](https://github.com/maiyunnet/kebab/blob/master/lib/
124053
124253
 
124054
124254
  > **where**(`s`): `this`
124055
124255
 
124056
- Defined in: [lib/sql.ts:568](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L568)
124256
+ Defined in: [lib/sql.ts:572](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L572)
124057
124257
 
124058
124258
  筛选器
124059
124259
  标量相等:'city': 'bj', 'type': '2'
@@ -124087,7 +124287,7 @@ lib/sql/enumerations/EJSON.md
124087
124287
 
124088
124288
  # Enumeration: EJSON
124089
124289
 
124090
- Defined in: [lib/sql.ts:22](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L22)
124290
+ Defined in: [lib/sql.ts:25](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L25)
124091
124291
 
124092
124292
  JSON 查询操作符
124093
124293
 
@@ -124097,7 +124297,7 @@ JSON 查询操作符
124097
124297
 
124098
124298
  > **CONTAINED\_BY**: `"json_in"`
124099
124299
 
124100
- Defined in: [lib/sql.ts:26](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L26)
124300
+ Defined in: [lib/sql.ts:29](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L29)
124101
124301
 
124102
124302
  被包含值 (MySQL: JSON_CONTAINS, PG: <@)
124103
124303
 
@@ -124107,7 +124307,7 @@ Defined in: [lib/sql.ts:26](https://github.com/maiyunnet/kebab/blob/master/lib/s
124107
124307
 
124108
124308
  > **CONTAINS**: `"json"`
124109
124309
 
124110
- Defined in: [lib/sql.ts:24](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L24)
124310
+ Defined in: [lib/sql.ts:27](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L27)
124111
124311
 
124112
124312
  包含值 (MySQL: JSON_CONTAINS, PG: @>)
124113
124313
 
@@ -124117,7 +124317,7 @@ Defined in: [lib/sql.ts:24](https://github.com/maiyunnet/kebab/blob/master/lib/s
124117
124317
 
124118
124318
  > **HAS\_ALL\_KEYS**: `"json_all"`
124119
124319
 
124120
- Defined in: [lib/sql.ts:32](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L32)
124320
+ Defined in: [lib/sql.ts:35](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L35)
124121
124321
 
124122
124322
  存在所有 Key 不含值 (MySQL: JSON_CONTAINS_PATH all, PG: ?&)
124123
124323
 
@@ -124127,7 +124327,7 @@ Defined in: [lib/sql.ts:32](https://github.com/maiyunnet/kebab/blob/master/lib/s
124127
124327
 
124128
124328
  > **HAS\_ANY\_KEYS**: `"json_any"`
124129
124329
 
124130
- Defined in: [lib/sql.ts:30](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L30)
124330
+ Defined in: [lib/sql.ts:33](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L33)
124131
124331
 
124132
124332
  存在任意 Key 不含值 (MySQL: JSON_CONTAINS_PATH one, PG: ?|)
124133
124333
 
@@ -124137,7 +124337,7 @@ Defined in: [lib/sql.ts:30](https://github.com/maiyunnet/kebab/blob/master/lib/s
124137
124337
 
124138
124338
  > **HAS\_KEY**: `"json_key"`
124139
124339
 
124140
- Defined in: [lib/sql.ts:28](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L28)
124340
+ Defined in: [lib/sql.ts:31](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L31)
124141
124341
 
124142
124342
  存在 Key 不含值 (MySQL: JSON_CONTAINS_PATH one, PG: ?)
124143
124343
 
@@ -124147,7 +124347,7 @@ Defined in: [lib/sql.ts:28](https://github.com/maiyunnet/kebab/blob/master/lib/s
124147
124347
 
124148
124348
  > **OVERLAPS**: `"json_overlaps"`
124149
124349
 
124150
- Defined in: [lib/sql.ts:34](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L34)
124350
+ Defined in: [lib/sql.ts:37](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L37)
124151
124351
 
124152
124352
  简单数组重叠 (MySQL: JSON_OVERLAPS, PG: &&)
124153
124353
 
@@ -124195,7 +124395,7 @@ lib/sql/functions/aoMix.md
124195
124395
 
124196
124396
  > **aoMix**(`arr`): `Record`\<`string`, `string` \| `number` \| [`Json`](../../../index/type-aliases/Json.md)\>
124197
124397
 
124198
- Defined in: [lib/sql.ts:1417](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1417)
124398
+ Defined in: [lib/sql.ts:1486](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1486)
124199
124399
 
124200
124400
  将数组兑换为组合的对象(Array/Object mix)
124201
124401
 
@@ -124224,7 +124424,7 @@ lib/sql/functions/column.md
124224
124424
 
124225
124425
  > **column**(`field`): `object`
124226
124426
 
124227
- Defined in: [lib/sql.ts:1438](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1438)
124427
+ Defined in: [lib/sql.ts:1507](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1507)
124228
124428
 
124229
124429
  创建字段对象
124230
124430
 
@@ -124263,7 +124463,7 @@ lib/sql/functions/format.md
124263
124463
 
124264
124464
  > **format**(`sql`, `data`, `service?`): `string`
124265
124465
 
124266
- Defined in: [lib/sql.ts:1378](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1378)
124466
+ Defined in: [lib/sql.ts:1447](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1447)
124267
124467
 
124268
124468
  返回代入后的完整 SQL 字符串,这并不安全不能直接执行,只是用来调试打印 sql 语句
124269
124469
 
@@ -124304,7 +124504,7 @@ lib/sql/functions/get.md
124304
124504
 
124305
124505
  > **get**(`opt`): [`Sql`](../classes/Sql.md)
124306
124506
 
124307
- Defined in: [lib/sql.ts:1350](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1350)
124507
+ Defined in: [lib/sql.ts:1419](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1419)
124308
124508
 
124309
124509
  创建 sql 对象
124310
124510
 
@@ -124357,7 +124557,7 @@ lib/sql/functions/json.md
124357
124557
 
124358
124558
  > **json**\<`T`\>(`obj`): `T`
124359
124559
 
124360
- Defined in: [lib/sql.ts:1477](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1477)
124560
+ Defined in: [lib/sql.ts:1546](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1546)
124361
124561
 
124362
124562
  标记需要写入 JSON/jsonb 字段的值;实际序列化延迟到数据库边界
124363
124563
 
@@ -124394,7 +124594,7 @@ lib/sql/functions/value.md
124394
124594
 
124395
124595
  > **value**(`val`): `object`
124396
124596
 
124397
- Defined in: [lib/sql.ts:1457](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1457)
124597
+ Defined in: [lib/sql.ts:1526](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1526)
124398
124598
 
124399
124599
  创建字面量值对象,用于 where 条件中 v[0] 需要是值而非字段名的场景
124400
124600
  例:[value('hello'), 'IN', column('tags')]
@@ -124441,6 +124641,10 @@ lib/sql/index.md
124441
124641
 
124442
124642
  - [Sql](classes/Sql.md)
124443
124643
 
124644
+ ## Type Aliases
124645
+
124646
+ - [TCursorValue](type-aliases/TCursorValue.md)
124647
+
124444
124648
  ## Functions
124445
124649
 
124446
124650
  - [aoMix](functions/aoMix.md)
@@ -124450,6 +124654,23 @@ lib/sql/index.md
124450
124654
  - [json](functions/json.md)
124451
124655
  - [value](functions/value.md)
124452
124656
 
124657
+ lib/sql/type-aliases/TCursorValue.md
124658
+ ---
124659
+
124660
+ [**Documents for @maiyunnet/kebab**](../../../index.md)
124661
+
124662
+ ***
124663
+
124664
+ [Documents for @maiyunnet/kebab](../../../index.md) / [lib/sql](../index.md) / TCursorValue
124665
+
124666
+ # Type Alias: TCursorValue
124667
+
124668
+ > **TCursorValue** = `string` \| `number`
124669
+
124670
+ Defined in: [lib/sql.ts:22](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L22)
124671
+
124672
+ 非空游标值;大整数和日期请使用数据库可比较的字符串
124673
+
124453
124674
  lib/sql/value/functions/isJson.md
124454
124675
  ---
124455
124676
 
@@ -125752,6 +125973,43 @@ lib/ssh/shell/index.md
125752
125973
 
125753
125974
  - [Connection](classes/Connection.md)
125754
125975
 
125976
+ lib/text/functions/compareVersion.md
125977
+ ---
125978
+
125979
+ [**Documents for @maiyunnet/kebab**](../../../index.md)
125980
+
125981
+ ***
125982
+
125983
+ [Documents for @maiyunnet/kebab](../../../index.md) / [lib/text](../index.md) / compareVersion
125984
+
125985
+ # Function: compareVersion()
125986
+
125987
+ > **compareVersion**(`version`, `target`): `0` \| `1` \| `-1` \| `null`
125988
+
125989
+ Defined in: [lib/text.ts:35](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L35)
125990
+
125991
+ 逐段比较三段正式发行版本 X.Y.Z,不按字符串或浮点数比较
125992
+
125993
+ ## Parameters
125994
+
125995
+ ### version
125996
+
125997
+ `unknown`
125998
+
125999
+ 待比较的版本
126000
+
126001
+ ### target
126002
+
126003
+ `unknown`
126004
+
126005
+ 目标版本
126006
+
126007
+ ## Returns
126008
+
126009
+ `0` \| `1` \| `-1` \| `null`
126010
+
126011
+ 小于返回 -1,等于返回 0,大于返回 1;任一版本无效时返回 null
126012
+
125755
126013
  lib/text/functions/csvescape.md
125756
126014
  ---
125757
126015
 
@@ -125765,7 +126023,7 @@ lib/text/functions/csvescape.md
125765
126023
 
125766
126024
  > **csvescape**(`str`): `string`
125767
126025
 
125768
- Defined in: [lib/text.ts:547](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L547)
126026
+ Defined in: [lib/text.ts:585](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L585)
125769
126027
 
125770
126028
  CSV 特殊字符转换为实体字符
125771
126029
 
@@ -125792,7 +126050,7 @@ lib/text/functions/getFileExt.md
125792
126050
 
125793
126051
  > **getFileExt**(`path`): `string`
125794
126052
 
125795
- Defined in: [lib/text.ts:588](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L588)
126053
+ Defined in: [lib/text.ts:626](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L626)
125796
126054
 
125797
126055
  获取文件后缀
125798
126056
 
@@ -125821,7 +126079,7 @@ lib/text/functions/getFileNameExt.md
125821
126079
 
125822
126080
  > **getFileNameExt**(`path`): `object`
125823
126081
 
125824
- Defined in: [lib/text.ts:601](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L601)
126082
+ Defined in: [lib/text.ts:639](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L639)
125825
126083
 
125826
126084
  获取文件名和后缀
125827
126085
 
@@ -125858,7 +126116,7 @@ lib/text/functions/getFilename.md
125858
126116
 
125859
126117
  > **getFilename**(`path`, `ext?`): `string`
125860
126118
 
125861
- Defined in: [lib/text.ts:568](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L568)
126119
+ Defined in: [lib/text.ts:606](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L606)
125862
126120
 
125863
126121
  获取文件名
125864
126122
 
@@ -125893,7 +126151,7 @@ lib/text/functions/htmlescape.md
125893
126151
 
125894
126152
  > **htmlescape**(`html`): `string`
125895
126153
 
125896
- Defined in: [lib/text.ts:533](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L533)
126154
+ Defined in: [lib/text.ts:571](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L571)
125897
126155
 
125898
126156
  HTML 特殊字符转换为实体字符
125899
126157
 
@@ -125922,7 +126180,7 @@ lib/text/functions/int2str.md
125922
126180
 
125923
126181
  > **int2str**(`int`, `digits?`, `decimal?`): `string`
125924
126182
 
125925
- Defined in: [lib/text.ts:825](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L825)
126183
+ Defined in: [lib/text.ts:863](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L863)
125926
126184
 
125927
126185
  为解决精度问题,将整数转换为小数字符串
125928
126186
  以下几个示例都是当 digits 为 3、decimal 为 2 时
@@ -125968,7 +126226,7 @@ lib/text/functions/isAscii.md
125968
126226
 
125969
126227
  > **isAscii**(`text`): `boolean`
125970
126228
 
125971
- Defined in: [lib/text.ts:291](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L291)
126229
+ Defined in: [lib/text.ts:329](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L329)
125972
126230
 
125973
126231
  判断是否在 ascii 字符集内,仅可输入部分
125974
126232
 
@@ -125997,7 +126255,7 @@ lib/text/functions/isDomain.md
125997
126255
 
125998
126256
  > **isDomain**(`domain`): `boolean`
125999
126257
 
126000
- Defined in: [lib/text.ts:280](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L280)
126258
+ Defined in: [lib/text.ts:318](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L318)
126001
126259
 
126002
126260
  判断是否是域名
126003
126261
 
@@ -126028,7 +126286,7 @@ lib/text/functions/isEMail.md
126028
126286
 
126029
126287
  > **isEMail**(`email`): `boolean`
126030
126288
 
126031
- Defined in: [lib/text.ts:253](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L253)
126289
+ Defined in: [lib/text.ts:291](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L291)
126032
126290
 
126033
126291
  是否是邮件地址
126034
126292
 
@@ -126055,7 +126313,7 @@ lib/text/functions/isFalsy.md
126055
126313
 
126056
126314
  > **isFalsy**(`val`): `val is TFalsy`
126057
126315
 
126058
- Defined in: [lib/text.ts:776](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L776)
126316
+ Defined in: [lib/text.ts:814](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L814)
126059
126317
 
126060
126318
  判断一个值是否是虚假的(为 null/undefined/空字符串/false/0)
126061
126319
 
@@ -126084,7 +126342,7 @@ lib/text/functions/isIdCardCN.md
126084
126342
 
126085
126343
  > **isIdCardCN**(`idcard`): `boolean`
126086
126344
 
126087
- Defined in: [lib/text.ts:403](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L403)
126345
+ Defined in: [lib/text.ts:441](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L441)
126088
126346
 
126089
126347
  是否是中国大陆身份证号码
126090
126348
 
@@ -126113,7 +126371,7 @@ lib/text/functions/isIPv4.md
126113
126371
 
126114
126372
  > **isIPv4**(`ip`): `boolean`
126115
126373
 
126116
- Defined in: [lib/text.ts:261](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L261)
126374
+ Defined in: [lib/text.ts:299](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L299)
126117
126375
 
126118
126376
  是否是 IPv4(基于 Node 原生 net.isIP,严格校验)
126119
126377
 
@@ -126140,7 +126398,7 @@ lib/text/functions/isIPv6.md
126140
126398
 
126141
126399
  > **isIPv6**(`ip`): `boolean`
126142
126400
 
126143
- Defined in: [lib/text.ts:269](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L269)
126401
+ Defined in: [lib/text.ts:307](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L307)
126144
126402
 
126145
126403
  是否是 IPv6(基于 Node 原生 net.isIP,严格校验)
126146
126404
 
@@ -126167,7 +126425,7 @@ lib/text/functions/isPhoneCN.md
126167
126425
 
126168
126426
  > **isPhoneCN**(`p`): `boolean`
126169
126427
 
126170
- Defined in: [lib/text.ts:395](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L395)
126428
+ Defined in: [lib/text.ts:433](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L433)
126171
126429
 
126172
126430
  判断手机号是否是 11 位,不做真实性校验
126173
126431
 
@@ -126196,7 +126454,7 @@ lib/text/functions/isRealPath.md
126196
126454
 
126197
126455
  > **isRealPath**(`path`): `boolean`
126198
126456
 
126199
- Defined in: [lib/text.ts:555](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L555)
126457
+ Defined in: [lib/text.ts:593](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L593)
126200
126458
 
126201
126459
  判断是否是绝对路径,是返回 true,相对路径返回 false
126202
126460
 
@@ -126225,7 +126483,7 @@ lib/text/functions/isSameOrigin.md
126225
126483
 
126226
126484
  > **isSameOrigin**(`from`, `to`): `boolean`
126227
126485
 
126228
- Defined in: [lib/text.ts:134](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L134)
126486
+ Defined in: [lib/text.ts:172](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L172)
126229
126487
 
126230
126488
  判断两个 URL 是否属于同源地址
126231
126489
 
@@ -126260,7 +126518,7 @@ lib/text/functions/isTruthy.md
126260
126518
 
126261
126519
  > **isTruthy**\<`T`\>(`val`): `val is Exclude<T, TFalsy>`
126262
126520
 
126263
- Defined in: [lib/text.ts:784](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L784)
126521
+ Defined in: [lib/text.ts:822](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L822)
126264
126522
 
126265
126523
  判断一个值是否是真实的(不为 null/undefined/空字符串/false/0)
126266
126524
 
@@ -126295,7 +126553,7 @@ lib/text/functions/logicalOr.md
126295
126553
 
126296
126554
  > **logicalOr**\<`T`, `T2`\>(`v1`, `v2`): `T` *extends* [`TFalsy`](../type-aliases/TFalsy.md) ? `T2` : `T`
126297
126555
 
126298
- Defined in: [lib/text.ts:793](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L793)
126556
+ Defined in: [lib/text.ts:831](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L831)
126299
126557
 
126300
126558
  类似 || 运算符的效果
126301
126559
 
@@ -126340,7 +126598,7 @@ lib/text/functions/match.md
126340
126598
 
126341
126599
  > **match**(`str`, `regs`): `boolean`
126342
126600
 
126343
- Defined in: [lib/text.ts:380](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L380)
126601
+ Defined in: [lib/text.ts:418](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L418)
126344
126602
 
126345
126603
  传入正则进行匹配 str 是否有一项满足
126346
126604
 
@@ -126375,7 +126633,7 @@ lib/text/functions/nlReplace.md
126375
126633
 
126376
126634
  > **nlReplace**(`str`, `to?`): `string`
126377
126635
 
126378
- Defined in: [lib/text.ts:300](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L300)
126636
+ Defined in: [lib/text.ts:338](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L338)
126379
126637
 
126380
126638
  换行替换为别的
126381
126639
 
@@ -126410,7 +126668,7 @@ lib/text/functions/parseDomain.md
126410
126668
 
126411
126669
  > **parseDomain**(`domain`): `Promise`\<[`IDomain`](../interfaces/IDomain.md)\>
126412
126670
 
126413
- Defined in: [lib/text.ts:323](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L323)
126671
+ Defined in: [lib/text.ts:361](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L361)
126414
126672
 
126415
126673
  解析域名并获取 tld/sld/domain/sub
126416
126674
 
@@ -126439,7 +126697,7 @@ lib/text/functions/parseHost.md
126439
126697
 
126440
126698
  > **parseHost**(`host`): `object`
126441
126699
 
126442
- Defined in: [lib/text.ts:30](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L30)
126700
+ Defined in: [lib/text.ts:68](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L68)
126443
126701
 
126444
126702
  解析主机名和端口号
126445
126703
 
@@ -126480,7 +126738,7 @@ lib/text/functions/parseJson.md
126480
126738
 
126481
126739
  > **parseJson**\<`T`\>(`str`): `false` \| `T`
126482
126740
 
126483
- Defined in: [lib/text.ts:663](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L663)
126741
+ Defined in: [lib/text.ts:701](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L701)
126484
126742
 
126485
126743
  将字符串解析为对象,返回 false 代表解析失败,支持 BigInt
126486
126744
 
@@ -126515,7 +126773,7 @@ lib/text/functions/parseUrl.md
126515
126773
 
126516
126774
  > **parseUrl**(`url`): [`IUrlParse`](../../../index/interfaces/IUrlParse.md)
126517
126775
 
126518
- Defined in: [lib/text.ts:56](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L56)
126776
+ Defined in: [lib/text.ts:94](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L94)
126519
126777
 
126520
126778
  格式化一段 URL
126521
126779
 
@@ -126529,6 +126787,37 @@ Defined in: [lib/text.ts:56](https://github.com/maiyunnet/kebab/blob/master/lib/
126529
126787
 
126530
126788
  [`IUrlParse`](../../../index/interfaces/IUrlParse.md)
126531
126789
 
126790
+ lib/text/functions/parseVersion.md
126791
+ ---
126792
+
126793
+ [**Documents for @maiyunnet/kebab**](../../../index.md)
126794
+
126795
+ ***
126796
+
126797
+ [Documents for @maiyunnet/kebab](../../../index.md) / [lib/text](../index.md) / parseVersion
126798
+
126799
+ # Function: parseVersion()
126800
+
126801
+ > **parseVersion**(`value`): \[`number`, `number`, `number`\] \| `null`
126802
+
126803
+ Defined in: [lib/text.ts:16](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L16)
126804
+
126805
+ 解析三段正式发行版本 X.Y.Z,不接受前导零、预发行和构建后缀
126806
+
126807
+ ## Parameters
126808
+
126809
+ ### value
126810
+
126811
+ `unknown`
126812
+
126813
+ 待解析的版本
126814
+
126815
+ ## Returns
126816
+
126817
+ \[`number`, `number`, `number`\] \| `null`
126818
+
126819
+ 三段安全整数,无效时返回 null
126820
+
126532
126821
  lib/text/functions/queryParse.md
126533
126822
  ---
126534
126823
 
@@ -126542,7 +126831,7 @@ lib/text/functions/queryParse.md
126542
126831
 
126543
126832
  > **queryParse**(`query`): `Record`\<`string`, `string` \| `string`[]\>
126544
126833
 
126545
- Defined in: [lib/text.ts:480](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L480)
126834
+ Defined in: [lib/text.ts:518](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L518)
126546
126835
 
126547
126836
  将 query string 转换为对象
126548
126837
 
@@ -126573,7 +126862,7 @@ lib/text/functions/queryStringify.md
126573
126862
 
126574
126863
  > **queryStringify**(`query`, `encode?`): `string`
126575
126864
 
126576
- Defined in: [lib/text.ts:431](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L431)
126865
+ Defined in: [lib/text.ts:469](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L469)
126577
126866
 
126578
126867
  将对象转换为 query string
126579
126868
 
@@ -126599,7 +126888,7 @@ Defined in: [lib/text.ts:431](https://github.com/maiyunnet/kebab/blob/master/lib
126599
126888
 
126600
126889
  > **queryStringify**(`query`, `options`): `string`
126601
126890
 
126602
- Defined in: [lib/text.ts:437](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L437)
126891
+ Defined in: [lib/text.ts:475](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L475)
126603
126892
 
126604
126893
  将对象转换为 query string
126605
126894
 
@@ -126644,7 +126933,7 @@ lib/text/functions/sizeFormat.md
126644
126933
 
126645
126934
  > **sizeFormat**(`size`, `spliter?`): `string`
126646
126935
 
126647
- Defined in: [lib/text.ts:16](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L16)
126936
+ Defined in: [lib/text.ts:54](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L54)
126648
126937
 
126649
126938
  将文件大小格式化为带单位的字符串
126650
126939
 
@@ -126679,7 +126968,7 @@ lib/text/functions/str2int.md
126679
126968
 
126680
126969
  > **str2int**(`str`, `digits?`): `number`
126681
126970
 
126682
- Defined in: [lib/text.ts:807](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L807)
126971
+ Defined in: [lib/text.ts:845](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L845)
126683
126972
 
126684
126973
  为解决精度问题,将字符串数字转换为整数显示
126685
126974
  以下几个示例都是当 digits 为 2 时
@@ -126719,7 +127008,7 @@ lib/text/functions/stringifyBuffer.md
126719
127008
 
126720
127009
  > **stringifyBuffer**(`buf`): `string`
126721
127010
 
126722
- Defined in: [lib/text.ts:730](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L730)
127011
+ Defined in: [lib/text.ts:768](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L768)
126723
127012
 
126724
127013
  输出文本格式的 buffer
126725
127014
 
@@ -126748,7 +127037,7 @@ lib/text/functions/stringifyError.md
126748
127037
 
126749
127038
  > **stringifyError**(`error`): `string`
126750
127039
 
126751
- Defined in: [lib/text.ts:707](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L707)
127040
+ Defined in: [lib/text.ts:745](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L745)
126752
127041
 
126753
127042
  将未知异常转换为适合单行日志的文本,Error 优先返回完整堆栈
126754
127043
 
@@ -126779,7 +127068,7 @@ lib/text/functions/stringifyJson.md
126779
127068
 
126780
127069
  > **stringifyJson**(`obj`, `space?`): `string`
126781
127070
 
126782
- Defined in: [lib/text.ts:693](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L693)
127071
+ Defined in: [lib/text.ts:731](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L731)
126783
127072
 
126784
127073
  将对象转换为 json 字符串,返回 false 代表解析失败,支持 BigInt
126785
127074
 
@@ -126814,7 +127103,7 @@ lib/text/functions/stringifyResult.md
126814
127103
 
126815
127104
  > **stringifyResult**(`rtn`): `string`
126816
127105
 
126817
- Defined in: [lib/text.ts:623](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L623)
127106
+ Defined in: [lib/text.ts:661](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L661)
126818
127107
 
126819
127108
  将普通的返回 JSON 对象序列化为字符串
126820
127109
 
@@ -126843,7 +127132,7 @@ lib/text/functions/trimJson.md
126843
127132
 
126844
127133
  > **trimJson**(`json`): `any`
126845
127134
 
126846
- Defined in: [lib/text.ts:738](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L738)
127135
+ Defined in: [lib/text.ts:776](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L776)
126847
127136
 
126848
127137
  递归删除 json 中的字符串首尾空格,会返回一个新的对象
126849
127138
 
@@ -126870,7 +127159,7 @@ lib/text/functions/urlAtom.md
126870
127159
 
126871
127160
  > **urlAtom**(`url`): `string`
126872
127161
 
126873
- Defined in: [lib/text.ts:234](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L234)
127162
+ Defined in: [lib/text.ts:272](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L272)
126874
127163
 
126875
127164
  将路径中的 ../ ./ 都按规范妥善处理
126876
127165
 
@@ -126899,7 +127188,7 @@ lib/text/functions/urlResolve.md
126899
127188
 
126900
127189
  > **urlResolve**(`from`, `to`, `limit?`): `string`
126901
127190
 
126902
- Defined in: [lib/text.ts:168](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L168)
127191
+ Defined in: [lib/text.ts:206](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L206)
126903
127192
 
126904
127193
  将相对路径根据基准路径进行转换
126905
127194
 
@@ -126954,6 +127243,7 @@ lib/text/index.md
126954
127243
 
126955
127244
  ## Functions
126956
127245
 
127246
+ - [compareVersion](functions/compareVersion.md)
126957
127247
  - [csvescape](functions/csvescape.md)
126958
127248
  - [getFileExt](functions/getFileExt.md)
126959
127249
  - [getFilename](functions/getFilename.md)
@@ -126978,6 +127268,7 @@ lib/text/index.md
126978
127268
  - [parseHost](functions/parseHost.md)
126979
127269
  - [parseJson](functions/parseJson.md)
126980
127270
  - [parseUrl](functions/parseUrl.md)
127271
+ - [parseVersion](functions/parseVersion.md)
126981
127272
  - [queryParse](functions/queryParse.md)
126982
127273
  - [queryStringify](functions/queryStringify.md)
126983
127274
  - [sizeFormat](functions/sizeFormat.md)
@@ -127001,7 +127292,7 @@ lib/text/interfaces/IDomain.md
127001
127292
 
127002
127293
  # Interface: IDomain
127003
127294
 
127004
- Defined in: [lib/text.ts:312](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L312)
127295
+ Defined in: [lib/text.ts:350](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L350)
127005
127296
 
127006
127297
  解析后的 domain
127007
127298
 
@@ -127011,7 +127302,7 @@ Defined in: [lib/text.ts:312](https://github.com/maiyunnet/kebab/blob/master/lib
127011
127302
 
127012
127303
  > **domain**: `string` \| `null`
127013
127304
 
127014
- Defined in: [lib/text.ts:315](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L315)
127305
+ Defined in: [lib/text.ts:353](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L353)
127015
127306
 
127016
127307
  ***
127017
127308
 
@@ -127019,7 +127310,7 @@ Defined in: [lib/text.ts:315](https://github.com/maiyunnet/kebab/blob/master/lib
127019
127310
 
127020
127311
  > **sld**: `string` \| `null`
127021
127312
 
127022
- Defined in: [lib/text.ts:314](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L314)
127313
+ Defined in: [lib/text.ts:352](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L352)
127023
127314
 
127024
127315
  ***
127025
127316
 
@@ -127027,7 +127318,7 @@ Defined in: [lib/text.ts:314](https://github.com/maiyunnet/kebab/blob/master/lib
127027
127318
 
127028
127319
  > **sub**: `string` \| `null`
127029
127320
 
127030
- Defined in: [lib/text.ts:316](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L316)
127321
+ Defined in: [lib/text.ts:354](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L354)
127031
127322
 
127032
127323
  ***
127033
127324
 
@@ -127035,7 +127326,7 @@ Defined in: [lib/text.ts:316](https://github.com/maiyunnet/kebab/blob/master/lib
127035
127326
 
127036
127327
  > **tld**: `string` \| `null`
127037
127328
 
127038
- Defined in: [lib/text.ts:313](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L313)
127329
+ Defined in: [lib/text.ts:351](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L351)
127039
127330
 
127040
127331
  lib/text/type-aliases/TFalsy.md
127041
127332
  ---
@@ -127050,7 +127341,7 @@ lib/text/type-aliases/TFalsy.md
127050
127341
 
127051
127342
  > **TFalsy** = `false` \| `""` \| `0` \| `null` \| `undefined` \| *typeof* `NaN`
127052
127343
 
127053
- Defined in: [lib/text.ts:770](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L770)
127344
+ Defined in: [lib/text.ts:808](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L808)
127054
127345
 
127055
127346
  虚假值类型
127056
127347
 
@@ -127067,7 +127358,7 @@ lib/text/variables/REGEXP_ASCII.md
127067
127358
 
127068
127359
  > `const` **REGEXP\_ASCII**: `RegExp`
127069
127360
 
127070
- Defined in: [lib/text.ts:285](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L285)
127361
+ Defined in: [lib/text.ts:323](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L323)
127071
127362
 
127072
127363
  可打印的 ascii 字符集
127073
127364
 
@@ -127084,7 +127375,7 @@ lib/text/variables/REGEXP_DOMAIN.md
127084
127375
 
127085
127376
  > `const` **REGEXP\_DOMAIN**: `RegExp`
127086
127377
 
127087
- Defined in: [lib/text.ts:273](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L273)
127378
+ Defined in: [lib/text.ts:311](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L311)
127088
127379
 
127089
127380
  lib/text/variables/REGEXP_EMAIL.md
127090
127381
  ---
@@ -127099,7 +127390,7 @@ lib/text/variables/REGEXP_EMAIL.md
127099
127390
 
127100
127391
  > `const` **REGEXP\_EMAIL**: `RegExp`
127101
127392
 
127102
- Defined in: [lib/text.ts:247](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L247)
127393
+ Defined in: [lib/text.ts:285](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L285)
127103
127394
 
127104
127395
  lib/time/classes/Time.md
127105
127396
  ---
@@ -134542,7 +134833,7 @@ sys/mod/classes/default.md
134542
134833
 
134543
134834
  # Class: default
134544
134835
 
134545
- Defined in: [sys/mod.ts:66](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L66)
134836
+ Defined in: [sys/mod.ts:74](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L74)
134546
134837
 
134547
134838
  开启软更需要在表添加字段:ALTER TABLE `table_name` ADD `time_remove` bigint NOT NULL DEFAULT '0' AFTER `xxx`;
134548
134839
 
@@ -134552,7 +134843,7 @@ Defined in: [sys/mod.ts:66](https://github.com/maiyunnet/kebab/blob/master/sys/m
134552
134843
 
134553
134844
  > **new default**(`opt`): `Mod`
134554
134845
 
134555
- Defined in: [sys/mod.ts:120](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L120)
134846
+ Defined in: [sys/mod.ts:128](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L128)
134556
134847
 
134557
134848
  构造函数
134558
134849
 
@@ -134626,7 +134917,7 @@ MySQL 表前缀或 PostgreSQL Schema 名,优先级:选项 > 类属性 > 配
134626
134917
 
134627
134918
  > `protected` **\_contain**: \{ `key`: `string`; `list`: `string`[]; \} \| `null` = `null`
134628
134919
 
134629
- Defined in: [sys/mod.ts:96](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L96)
134920
+ Defined in: [sys/mod.ts:104](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L104)
134630
134921
 
134631
134922
  必须追加的数据筛选 key 与 values,仅单表模式有效
134632
134923
 
@@ -134636,7 +134927,7 @@ Defined in: [sys/mod.ts:96](https://github.com/maiyunnet/kebab/blob/master/sys/m
134636
134927
 
134637
134928
  > `protected` `optional` **\_ctr?**: [`Ctr`](../../ctr/classes/Ctr.md) = `undefined`
134638
134929
 
134639
- Defined in: [sys/mod.ts:111](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L111)
134930
+ Defined in: [sys/mod.ts:119](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L119)
134640
134931
 
134641
134932
  ctr 对象
134642
134933
 
@@ -134646,7 +134937,7 @@ ctr 对象
134646
134937
 
134647
134938
  > `protected` **\_data**: `Record`\<`string`, `any`\> = `{}`
134648
134939
 
134649
- Defined in: [sys/mod.ts:90](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L90)
134940
+ Defined in: [sys/mod.ts:98](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L98)
134650
134941
 
134651
134942
  模型获取的属性
134652
134943
 
@@ -134656,7 +134947,7 @@ Defined in: [sys/mod.ts:90](https://github.com/maiyunnet/kebab/blob/master/sys/m
134656
134947
 
134657
134948
  > `protected` **\_db**: [`Transaction`](../../../lib/db/tran/classes/Transaction.md) \| [`Pool`](../../../lib/db/pool/classes/Pool.md)
134658
134949
 
134659
- Defined in: [sys/mod.ts:105](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L105)
134950
+ Defined in: [sys/mod.ts:113](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L113)
134660
134951
 
134661
134952
  数据库连接对象
134662
134953
 
@@ -134666,7 +134957,7 @@ Defined in: [sys/mod.ts:105](https://github.com/maiyunnet/kebab/blob/master/sys/
134666
134957
 
134667
134958
  > `protected` **\_fieldPrefix**: `string` = `''`
134668
134959
 
134669
- Defined in: [sys/mod.ts:114](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L114)
134960
+ Defined in: [sys/mod.ts:122](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L122)
134670
134961
 
134671
134962
  主表筛选前缀,优先 alias,其次表名
134672
134963
 
@@ -134676,7 +134967,7 @@ Defined in: [sys/mod.ts:114](https://github.com/maiyunnet/kebab/blob/master/sys/
134676
134967
 
134677
134968
  > `protected` **\_index**: `string`[] \| `null` = `null`
134678
134969
 
134679
- Defined in: [sys/mod.ts:93](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L93)
134970
+ Defined in: [sys/mod.ts:101](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L101)
134680
134971
 
134681
134972
  当前选择的分表 _ 后缀,多个代表联查
134682
134973
 
@@ -134686,7 +134977,7 @@ Defined in: [sys/mod.ts:93](https://github.com/maiyunnet/kebab/blob/master/sys/m
134686
134977
 
134687
134978
  > `protected` **\_jsonUpdates**: `Record`\<`string`, `boolean`\> = `{}`
134688
134979
 
134689
- Defined in: [sys/mod.ts:87](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L87)
134980
+ Defined in: [sys/mod.ts:95](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L95)
134690
134981
 
134691
134982
  要在数据库边界序列化的 JSON 字段
134692
134983
 
@@ -134696,7 +134987,7 @@ Defined in: [sys/mod.ts:87](https://github.com/maiyunnet/kebab/blob/master/sys/m
134696
134987
 
134697
134988
  > `protected` **\_sql**: [`Sql`](../../../lib/sql/classes/Sql.md)
134698
134989
 
134699
- Defined in: [sys/mod.ts:108](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L108)
134990
+ Defined in: [sys/mod.ts:116](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L116)
134700
134991
 
134701
134992
  Sql 对象
134702
134993
 
@@ -134706,7 +134997,7 @@ Sql 对象
134706
134997
 
134707
134998
  > `protected` **\_total**: `number`[] = `[]`
134708
134999
 
134709
- Defined in: [sys/mod.ts:102](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L102)
135000
+ Defined in: [sys/mod.ts:110](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L110)
134710
135001
 
134711
135002
  已算出的 total
134712
135003
 
@@ -134716,7 +135007,7 @@ Defined in: [sys/mod.ts:102](https://github.com/maiyunnet/kebab/blob/master/sys/
134716
135007
 
134717
135008
  > `protected` **\_updates**: `Record`\<`string`, `boolean`\> = `{}`
134718
135009
 
134719
- Defined in: [sys/mod.ts:84](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L84)
135010
+ Defined in: [sys/mod.ts:92](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L92)
134720
135011
 
134721
135012
  要 update 的内容
134722
135013
 
@@ -134726,7 +135017,7 @@ Defined in: [sys/mod.ts:84](https://github.com/maiyunnet/kebab/blob/master/sys/m
134726
135017
 
134727
135018
  > `protected` `static` **\_$index**: `string` = `''`
134728
135019
 
134729
- Defined in: [sys/mod.ts:78](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L78)
135020
+ Defined in: [sys/mod.ts:86](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L86)
134730
135021
 
134731
135022
  若使用 _$key 并且有多个 unique 索引,这里指定 _$key 的索引名
134732
135023
 
@@ -134736,7 +135027,7 @@ Defined in: [sys/mod.ts:78](https://github.com/maiyunnet/kebab/blob/master/sys/m
134736
135027
 
134737
135028
  > `protected` `static` **\_$key**: `string` = `''`
134738
135029
 
134739
- Defined in: [sys/mod.ts:75](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L75)
135030
+ Defined in: [sys/mod.ts:83](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L83)
134740
135031
 
134741
135032
  设置后将由 _keyGenerator 函数生成唯一字段
134742
135033
 
@@ -134746,7 +135037,7 @@ Defined in: [sys/mod.ts:75](https://github.com/maiyunnet/kebab/blob/master/sys/m
134746
135037
 
134747
135038
  > `protected` `static` `optional` **\_$pre?**: `string`
134748
135039
 
134749
- Defined in: [sys/mod.ts:81](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L81)
135040
+ Defined in: [sys/mod.ts:89](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L89)
134750
135041
 
134751
135042
  前缀,MySQL 时为表前缀(如 prefix_),PostgreSQL 时为 Schema 名。顺序:选项前缀 -> 本前缀 -> 配置文件前缀
134752
135043
 
@@ -134756,7 +135047,7 @@ Defined in: [sys/mod.ts:81](https://github.com/maiyunnet/kebab/blob/master/sys/m
134756
135047
 
134757
135048
  > `protected` `static` **\_$primary**: `string` = `'id'`
134758
135049
 
134759
- Defined in: [sys/mod.ts:72](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L72)
135050
+ Defined in: [sys/mod.ts:80](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L80)
134760
135051
 
134761
135052
  主键字段名
134762
135053
 
@@ -134766,7 +135057,7 @@ Defined in: [sys/mod.ts:72](https://github.com/maiyunnet/kebab/blob/master/sys/m
134766
135057
 
134767
135058
  > `protected` `static` **\_$table**: `string` = `''`
134768
135059
 
134769
- Defined in: [sys/mod.ts:69](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L69)
135060
+ Defined in: [sys/mod.ts:77](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L77)
134770
135061
 
134771
135062
  表名
134772
135063
 
@@ -134776,7 +135067,7 @@ Defined in: [sys/mod.ts:69](https://github.com/maiyunnet/kebab/blob/master/sys/m
134776
135067
 
134777
135068
  > `protected` **\_keyGenerator**(): `string`
134778
135069
 
134779
- Defined in: [sys/mod.ts:1888](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1888)
135070
+ Defined in: [sys/mod.ts:1987](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1987)
134780
135071
 
134781
135072
  当 _key 不为空时,则依据继承此方法的方法自动生成填充 key
134782
135073
 
@@ -134800,7 +135091,7 @@ Defined in: [sys/mod.ts:1888](https://github.com/maiyunnet/kebab/blob/master/sys
134800
135091
 
134801
135092
  > **all**(): `Promise`\<`false` \| [`Rows`](Rows.md)\<`Mod`\>\>
134802
135093
 
134803
- Defined in: [sys/mod.ts:1202](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1202)
135094
+ Defined in: [sys/mod.ts:1210](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1210)
134804
135095
 
134805
135096
  ##### Returns
134806
135097
 
@@ -134810,7 +135101,7 @@ Defined in: [sys/mod.ts:1202](https://github.com/maiyunnet/kebab/blob/master/sys
134810
135101
 
134811
135102
  > **all**(`key`): `Promise`\<`false` \| `Record`\<`string`, `Mod`\>\>
134812
135103
 
134813
- Defined in: [sys/mod.ts:1203](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1203)
135104
+ Defined in: [sys/mod.ts:1211](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1211)
134814
135105
 
134815
135106
  ##### Parameters
134816
135107
 
@@ -134838,7 +135129,7 @@ Defined in: [sys/mod.ts:1203](https://github.com/maiyunnet/kebab/blob/master/sys
134838
135129
 
134839
135130
  > **allArray**(): `Promise`\<`false` \| `Record`\<`string`, `any`\>[]\>
134840
135131
 
134841
- Defined in: [sys/mod.ts:1381](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1381)
135132
+ Defined in: [sys/mod.ts:1389](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1389)
134842
135133
 
134843
135134
  ##### Returns
134844
135135
 
@@ -134848,7 +135139,7 @@ Defined in: [sys/mod.ts:1381](https://github.com/maiyunnet/kebab/blob/master/sys
134848
135139
 
134849
135140
  > **allArray**(`key`): `Promise`\<`false` \| `Record`\<`string`, `Record`\<`string`, `any`\>\>\>
134850
135141
 
134851
- Defined in: [sys/mod.ts:1382](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1382)
135142
+ Defined in: [sys/mod.ts:1390](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1390)
134852
135143
 
134853
135144
  ##### Parameters
134854
135145
 
@@ -134862,11 +135153,76 @@ Defined in: [sys/mod.ts:1382](https://github.com/maiyunnet/kebab/blob/master/sys
134862
135153
 
134863
135154
  ***
134864
135155
 
135156
+ ### allCursor()
135157
+
135158
+ > **allCursor**\<`T`\>(`count`, `opt`): `Promise`\<`false` \| [`ICursorPage`](../interfaces/ICursorPage.md)\<`T`\>\>
135159
+
135160
+ Defined in: [sys/mod.ts:1638](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1638)
135161
+
135162
+ 读取一批游标数据,多取一条判断后续记录,不使用 OFFSET,不修改原查询
135163
+ 排序字段必须全部非空、同向,且组合唯一;SELECT 中须包含对应字段(同名或指定 keys)
135164
+
135165
+ #### Type Parameters
135166
+
135167
+ ##### T
135168
+
135169
+ `T` *extends* `Record`\<`string`, `unknown`\> = `Record`\<`string`, `unknown`\>
135170
+
135171
+ #### Parameters
135172
+
135173
+ ##### count
135174
+
135175
+ `number`
135176
+
135177
+ 本批数量
135178
+
135179
+ ##### opt
135180
+
135181
+ 排序、边界和方向;before 为 true 时读取前一批并恢复展示顺序
135182
+
135183
+ ###### before?
135184
+
135185
+ `boolean`
135186
+
135187
+ 是否读取边界前一批,须提供 cursor
135188
+
135189
+ ###### by
135190
+
135191
+ `string` \| `string`[]
135192
+
135193
+ 排序字段,支持表别名
135194
+
135195
+ ###### cursor?
135196
+
135197
+ [`TCursorValue`](../../../lib/sql/type-aliases/TCursorValue.md)[]
135198
+
135199
+ 边界行的字段值,首批省略
135200
+
135201
+ ###### keys?
135202
+
135203
+ `string`[]
135204
+
135205
+ SELECT 结果中对应的字段名,默认去掉 by 的表别名
135206
+
135207
+ ###### order?
135208
+
135209
+ `"DESC"` \| `"ASC"`
135210
+
135211
+ 展示顺序,默认 DESC
135212
+
135213
+ #### Returns
135214
+
135215
+ `Promise`\<`false` \| [`ICursorPage`](../interfaces/ICursorPage.md)\<`T`\>\>
135216
+
135217
+ 列表、首末行游标和扫描方向上的 hasMore,数据库错误返回 false
135218
+
135219
+ ***
135220
+
134865
135221
  ### append()
134866
135222
 
134867
135223
  > **append**(`sql`): `this`
134868
135224
 
134869
- Defined in: [sys/mod.ts:1797](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1797)
135225
+ Defined in: [sys/mod.ts:1896](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1896)
134870
135226
 
134871
135227
  在 sql 最后追加字符串
134872
135228
 
@@ -134886,7 +135242,7 @@ Defined in: [sys/mod.ts:1797](https://github.com/maiyunnet/kebab/blob/master/sys
134886
135242
 
134887
135243
  > **by**(`c`, `d?`): `this`
134888
135244
 
134889
- Defined in: [sys/mod.ts:1753](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1753)
135245
+ Defined in: [sys/mod.ts:1852](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1852)
134890
135246
 
134891
135247
  ORDER BY
134892
135248
 
@@ -134914,7 +135270,7 @@ ORDER BY
134914
135270
 
134915
135271
  > **contain**(`contain`): `this`
134916
135272
 
134917
- Defined in: [sys/mod.ts:1806](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1806)
135273
+ Defined in: [sys/mod.ts:1905](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1905)
134918
135274
 
134919
135275
  设置闭包含数据
134920
135276
 
@@ -134942,7 +135298,7 @@ Defined in: [sys/mod.ts:1806](https://github.com/maiyunnet/kebab/blob/master/sys
134942
135298
 
134943
135299
  > **count**(): `Promise`\<`number`\>
134944
135300
 
134945
- Defined in: [sys/mod.ts:1589](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1589)
135301
+ Defined in: [sys/mod.ts:1688](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1688)
134946
135302
 
134947
135303
  根据当前条件,筛选出当前条目该有的数据条数
134948
135304
 
@@ -134956,7 +135312,7 @@ Defined in: [sys/mod.ts:1589](https://github.com/maiyunnet/kebab/blob/master/sys
134956
135312
 
134957
135313
  > **countSql**(): `string`
134958
135314
 
134959
- Defined in: [sys/mod.ts:1610](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1610)
135315
+ Defined in: [sys/mod.ts:1709](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1709)
134960
135316
 
134961
135317
  获取当前条件下的 count 的 SQL 语句
134962
135318
 
@@ -134970,7 +135326,7 @@ Defined in: [sys/mod.ts:1610](https://github.com/maiyunnet/kebab/blob/master/sys
134970
135326
 
134971
135327
  > **create**(): `Promise`\<`boolean` \| `null`\>
134972
135328
 
134973
- Defined in: [sys/mod.ts:881](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L881)
135329
+ Defined in: [sys/mod.ts:889](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L889)
134974
135330
 
134975
135331
  创建数据
134976
135332
 
@@ -134986,7 +135342,7 @@ true-成功,false-报错,null-唯一键非 _$key 键冲突
134986
135342
 
134987
135343
  > **crossJoin**(`f`, `s`, `index?`, `pre?`): `this`
134988
135344
 
134989
- Defined in: [sys/mod.ts:1685](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1685)
135345
+ Defined in: [sys/mod.ts:1784](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1784)
134990
135346
 
134991
135347
  cross join 方法
134992
135348
 
@@ -135036,7 +135392,7 @@ ON 信息
135036
135392
 
135037
135393
  > **explain**(`all?`): `Promise`\<`string` \| `false`\>
135038
135394
 
135039
- Defined in: [sys/mod.ts:1507](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1507)
135395
+ Defined in: [sys/mod.ts:1515](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1515)
135040
135396
 
135041
135397
  ##### Parameters
135042
135398
 
@@ -135052,7 +135408,7 @@ Defined in: [sys/mod.ts:1507](https://github.com/maiyunnet/kebab/blob/master/sys
135052
135408
 
135053
135409
  > **explain**(`all`): `Promise`\<`false` \| `Record`\<`string`, `any`\>\>
135054
135410
 
135055
- Defined in: [sys/mod.ts:1508](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1508)
135411
+ Defined in: [sys/mod.ts:1516](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1516)
135056
135412
 
135057
135413
  ##### Parameters
135058
135414
 
@@ -135070,7 +135426,7 @@ Defined in: [sys/mod.ts:1508](https://github.com/maiyunnet/kebab/blob/master/sys
135070
135426
 
135071
135427
  > **filter**(`s`): `this`
135072
135428
 
135073
- Defined in: [sys/mod.ts:1731](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1731)
135429
+ Defined in: [sys/mod.ts:1830](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1830)
135074
135430
 
135075
135431
  筛选器
135076
135432
 
@@ -135108,7 +135464,7 @@ Defined in: [sys/mod.ts:1731](https://github.com/maiyunnet/kebab/blob/master/sys
135108
135464
 
135109
135465
  > **first**(`lock`, `array`): `Promise`\<`false` \| `Record`\<`string`, `any`\> \| `null`\>
135110
135466
 
135111
- Defined in: [sys/mod.ts:1091](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1091)
135467
+ Defined in: [sys/mod.ts:1099](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1099)
135112
135468
 
135113
135469
  ##### Parameters
135114
135470
 
@@ -135128,7 +135484,7 @@ Defined in: [sys/mod.ts:1091](https://github.com/maiyunnet/kebab/blob/master/sys
135128
135484
 
135129
135485
  > **first**(`lock?`, `array?`): `Promise`\<`false` \| `Mod` & `Record`\<`string`, `any`\> \| `null`\>
135130
135486
 
135131
- Defined in: [sys/mod.ts:1095](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1095)
135487
+ Defined in: [sys/mod.ts:1103](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1103)
135132
135488
 
135133
135489
  ##### Parameters
135134
135490
 
@@ -135150,7 +135506,7 @@ Defined in: [sys/mod.ts:1095](https://github.com/maiyunnet/kebab/blob/master/sys
135150
135506
 
135151
135507
  > **firstArray**(`lock?`): `Promise`\<`false` \| `Record`\<`string`, `any`\> \| `null`\>
135152
135508
 
135153
- Defined in: [sys/mod.ts:1135](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1135)
135509
+ Defined in: [sys/mod.ts:1143](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1143)
135154
135510
 
135155
135511
  获取数据库第一个原生对象
135156
135512
 
@@ -135172,7 +135528,7 @@ Defined in: [sys/mod.ts:1135](https://github.com/maiyunnet/kebab/blob/master/sys
135172
135528
 
135173
135529
  > **format**(`sql?`, `data?`): `string`
135174
135530
 
135175
- Defined in: [sys/mod.ts:1833](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1833)
135531
+ Defined in: [sys/mod.ts:1932](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1932)
135176
135532
 
135177
135533
  获取带 data 的 sql 语句
135178
135534
 
@@ -135200,7 +135556,7 @@ sql 语句
135200
135556
 
135201
135557
  > **fullJoin**(`f`, `s`, `index?`, `pre?`): `this`
135202
135558
 
135203
- Defined in: [sys/mod.ts:1673](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1673)
135559
+ Defined in: [sys/mod.ts:1772](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1772)
135204
135560
 
135205
135561
  full join 方法
135206
135562
 
@@ -135240,7 +135596,7 @@ ON 信息
135240
135596
 
135241
135597
  > **get**(`n`): `any`
135242
135598
 
135243
- Defined in: [sys/mod.ts:873](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L873)
135599
+ Defined in: [sys/mod.ts:881](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L881)
135244
135600
 
135245
135601
  获取一个字段值
135246
135602
 
@@ -135262,7 +135618,7 @@ Defined in: [sys/mod.ts:873](https://github.com/maiyunnet/kebab/blob/master/sys/
135262
135618
 
135263
135619
  > **getData**(): `any`[]
135264
135620
 
135265
- Defined in: [sys/mod.ts:1824](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1824)
135621
+ Defined in: [sys/mod.ts:1923](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1923)
135266
135622
 
135267
135623
  获取全部 data
135268
135624
 
@@ -135276,7 +135632,7 @@ Defined in: [sys/mod.ts:1824](https://github.com/maiyunnet/kebab/blob/master/sys
135276
135632
 
135277
135633
  > **getSql**(): `string`
135278
135634
 
135279
- Defined in: [sys/mod.ts:1817](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1817)
135635
+ Defined in: [sys/mod.ts:1916](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1916)
135280
135636
 
135281
135637
  获取 sql 语句
135282
135638
 
@@ -135290,7 +135646,7 @@ Defined in: [sys/mod.ts:1817](https://github.com/maiyunnet/kebab/blob/master/sys
135290
135646
 
135291
135647
  > **group**(`c`): `this`
135292
135648
 
135293
- Defined in: [sys/mod.ts:1762](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1762)
135649
+ Defined in: [sys/mod.ts:1861](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1861)
135294
135650
 
135295
135651
  GROUP BY
135296
135652
 
@@ -135312,7 +135668,7 @@ GROUP BY
135312
135668
 
135313
135669
  > **having**(`s`): `this`
135314
135670
 
135315
- Defined in: [sys/mod.ts:1722](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1722)
135671
+ Defined in: [sys/mod.ts:1821](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1821)
135316
135672
 
135317
135673
  筛选器
135318
135674
 
@@ -135334,7 +135690,7 @@ Defined in: [sys/mod.ts:1722](https://github.com/maiyunnet/kebab/blob/master/sys
135334
135690
 
135335
135691
  > **hint**(`h`): `this`
135336
135692
 
135337
- Defined in: [sys/mod.ts:1713](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1713)
135693
+ Defined in: [sys/mod.ts:1812](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1812)
135338
135694
 
135339
135695
  设置 MySQL 优化器 Hint
135340
135696
  内容会以 Optimizer Hint 注释语法注入到 SELECT 关键字后
@@ -135379,7 +135735,7 @@ Hint 内容
135379
135735
 
135380
135736
  > **innerJoin**(`f`, `s`, `index?`, `pre?`): `this`
135381
135737
 
135382
- Defined in: [sys/mod.ts:1661](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1661)
135738
+ Defined in: [sys/mod.ts:1760](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1760)
135383
135739
 
135384
135740
  inner join 方法
135385
135741
 
@@ -135419,7 +135775,7 @@ ON 信息
135419
135775
 
135420
135776
  > **join**(`f`, `s?`, `type?`, `index?`, `pre?`): `this`
135421
135777
 
135422
- Defined in: [sys/mod.ts:1625](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1625)
135778
+ Defined in: [sys/mod.ts:1724](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1724)
135423
135779
 
135424
135780
  #### Parameters
135425
135781
 
@@ -135463,7 +135819,7 @@ ON 信息
135463
135819
 
135464
135820
  > **langText**(`col`, `lang`): `string`
135465
135821
 
135466
- Defined in: [sys/mod.ts:1868](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1868)
135822
+ Defined in: [sys/mod.ts:1967](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1967)
135467
135823
 
135468
135824
  获取字段的可用语种文本
135469
135825
 
@@ -135491,7 +135847,7 @@ Defined in: [sys/mod.ts:1868](https://github.com/maiyunnet/kebab/blob/master/sys
135491
135847
 
135492
135848
  > **leftJoin**(`f`, `s`, `index?`, `pre?`): `this`
135493
135849
 
135494
- Defined in: [sys/mod.ts:1637](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1637)
135850
+ Defined in: [sys/mod.ts:1736](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1736)
135495
135851
 
135496
135852
  left join 方法
135497
135853
 
@@ -135531,7 +135887,7 @@ ON 信息
135531
135887
 
135532
135888
  > **limit**(`a`, `b?`): `this`
135533
135889
 
135534
- Defined in: [sys/mod.ts:1775](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1775)
135890
+ Defined in: [sys/mod.ts:1874](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1874)
135535
135891
 
135536
135892
  LIMIT
135537
135893
 
@@ -135559,7 +135915,7 @@ LIMIT
135559
135915
 
135560
135916
  > **page**(`count`, `page?`): `this`
135561
135917
 
135562
- Defined in: [sys/mod.ts:1786](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1786)
135918
+ Defined in: [sys/mod.ts:1885](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1885)
135563
135919
 
135564
135920
  分页
135565
135921
 
@@ -135587,7 +135943,7 @@ Defined in: [sys/mod.ts:1786](https://github.com/maiyunnet/kebab/blob/master/sys
135587
135943
 
135588
135944
  > **refresh**(`lock?`): `Promise`\<`boolean` \| `null`\>
135589
135945
 
135590
- Defined in: [sys/mod.ts:1003](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1003)
135946
+ Defined in: [sys/mod.ts:1011](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1011)
135591
135947
 
135592
135948
  刷新当前模型获取最新数据
135593
135949
 
@@ -135609,7 +135965,7 @@ Defined in: [sys/mod.ts:1003](https://github.com/maiyunnet/kebab/blob/master/sys
135609
135965
 
135610
135966
  > **remove**(): `Promise`\<`boolean`\>
135611
135967
 
135612
- Defined in: [sys/mod.ts:1069](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1069)
135968
+ Defined in: [sys/mod.ts:1077](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1077)
135613
135969
 
135614
135970
  移除本条目
135615
135971
 
@@ -135623,7 +135979,7 @@ Defined in: [sys/mod.ts:1069](https://github.com/maiyunnet/kebab/blob/master/sys
135623
135979
 
135624
135980
  > **rightJoin**(`f`, `s`, `index?`, `pre?`): `this`
135625
135981
 
135626
- Defined in: [sys/mod.ts:1649](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1649)
135982
+ Defined in: [sys/mod.ts:1748](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1748)
135627
135983
 
135628
135984
  right join 方法
135629
135985
 
@@ -135663,7 +136019,7 @@ ON 信息
135663
136019
 
135664
136020
  > **save**(`where?`): `Promise`\<`boolean`\>
135665
136021
 
135666
- Defined in: [sys/mod.ts:1035](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1035)
136022
+ Defined in: [sys/mod.ts:1043](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1043)
135667
136023
 
135668
136024
  更新 set 的数据到数据库,有未保存数据时才保存
135669
136025
 
@@ -135701,7 +136057,7 @@ Defined in: [sys/mod.ts:1035](https://github.com/maiyunnet/kebab/blob/master/sys
135701
136057
 
135702
136058
  > **set**\<`T`, `TK`\>(`n`): `void`
135703
136059
 
135704
- Defined in: [sys/mod.ts:838](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L838)
136060
+ Defined in: [sys/mod.ts:846](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L846)
135705
136061
 
135706
136062
  ##### Type Parameters
135707
136063
 
@@ -135727,7 +136083,7 @@ Defined in: [sys/mod.ts:838](https://github.com/maiyunnet/kebab/blob/master/sys/
135727
136083
 
135728
136084
  > **set**\<`T`, `TK`\>(`n`, `v`): `void`
135729
136085
 
135730
- Defined in: [sys/mod.ts:839](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L839)
136086
+ Defined in: [sys/mod.ts:847](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L847)
135731
136087
 
135732
136088
  ##### Type Parameters
135733
136089
 
@@ -135759,7 +136115,7 @@ Defined in: [sys/mod.ts:839](https://github.com/maiyunnet/kebab/blob/master/sys/
135759
136115
 
135760
136116
  > **toArray**\<`TC`\>(): [`TOnlyProperties`](../type-aliases/TOnlyProperties.md)\<`InstanceType`\<`TC`\>\> & `Record`\<`string`, `any`\>
135761
136117
 
135762
- Defined in: [sys/mod.ts:1840](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1840)
136118
+ Defined in: [sys/mod.ts:1939](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1939)
135763
136119
 
135764
136120
  获取值对象,获取的是新创建的数组
135765
136121
 
@@ -135779,7 +136135,7 @@ Defined in: [sys/mod.ts:1840](https://github.com/maiyunnet/kebab/blob/master/sys
135779
136135
 
135780
136136
  > **total**(`f?`): `Promise`\<`number`\>
135781
136137
 
135782
- Defined in: [sys/mod.ts:1565](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1565)
136138
+ Defined in: [sys/mod.ts:1573](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1573)
135783
136139
 
135784
136140
  获取总条数,自动抛弃 LIMIT,仅用于获取数据的情况(select)
135785
136141
 
@@ -135795,11 +136151,28 @@ Defined in: [sys/mod.ts:1565](https://github.com/maiyunnet/kebab/blob/master/sys
135795
136151
 
135796
136152
  ***
135797
136153
 
136154
+ ### totalEstimate()
136155
+
136156
+ > **totalEstimate**(): `Promise`\<`number` \| `false`\>
136157
+
136158
+ Defined in: [sys/mod.ts:1599](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1599)
136159
+
136160
+ 从 PostgreSQL 执行计划估算查询总行数,移除外层排序和分页,不执行数据扫描
136161
+ 请在应用游标条件前调用;非 PostgreSQL、框架分表联查或查询失败返回 false,绝不回退到 COUNT
136162
+
136163
+ #### Returns
136164
+
136165
+ `Promise`\<`number` \| `false`\>
136166
+
136167
+ 近似行数或 false;估算可能偏差很大,不能用于判断有无下一批
136168
+
136169
+ ***
136170
+
135798
136171
  ### union()
135799
136172
 
135800
136173
  > **union**(`f`, `type?`): `this`
135801
136174
 
135802
- Defined in: [sys/mod.ts:1146](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1146)
136175
+ Defined in: [sys/mod.ts:1154](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1154)
135803
136176
 
135804
136177
  联合查询表数据
135805
136178
 
@@ -135827,7 +136200,7 @@ Defined in: [sys/mod.ts:1146](https://github.com/maiyunnet/kebab/blob/master/sys
135827
136200
 
135828
136201
  > **unionAll**(`f`): `this`
135829
136202
 
135830
- Defined in: [sys/mod.ts:1176](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1176)
136203
+ Defined in: [sys/mod.ts:1184](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1184)
135831
136204
 
135832
136205
  所有联合查询表数据
135833
136206
 
@@ -135849,7 +136222,7 @@ Defined in: [sys/mod.ts:1176](https://github.com/maiyunnet/kebab/blob/master/sys
135849
136222
 
135850
136223
  > **unsaved**(): `boolean`
135851
136224
 
135852
- Defined in: [sys/mod.ts:1859](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1859)
136225
+ Defined in: [sys/mod.ts:1958](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1958)
135853
136226
 
135854
136227
  当前是否设置了未保存 --=
135855
136228
 
@@ -135863,7 +136236,7 @@ Defined in: [sys/mod.ts:1859](https://github.com/maiyunnet/kebab/blob/master/sys
135863
136236
 
135864
136237
  > **updates**(): `Record`\<`string`, `any`\>
135865
136238
 
135866
- Defined in: [sys/mod.ts:1848](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1848)
136239
+ Defined in: [sys/mod.ts:1947](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1947)
135867
136240
 
135868
136241
  获取当前设置要提交的数据
135869
136242
 
@@ -135877,7 +136250,7 @@ Defined in: [sys/mod.ts:1848](https://github.com/maiyunnet/kebab/blob/master/sys
135877
136250
 
135878
136251
  > **upsert**(`conflict`): `Promise`\<`boolean`\>
135879
136252
 
135880
- Defined in: [sys/mod.ts:972](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L972)
136253
+ Defined in: [sys/mod.ts:980](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L980)
135881
136254
 
135882
136255
  插入数据,如果存在则更新(UPSERT)
135883
136256
 
@@ -135899,7 +136272,7 @@ Defined in: [sys/mod.ts:972](https://github.com/maiyunnet/kebab/blob/master/sys/
135899
136272
 
135900
136273
  > **where**(`s`): `this`
135901
136274
 
135902
- Defined in: [sys/mod.ts:1742](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1742)
136275
+ Defined in: [sys/mod.ts:1841](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1841)
135903
136276
 
135904
136277
  是 filter 的别名
135905
136278
 
@@ -135921,7 +136294,7 @@ Defined in: [sys/mod.ts:1742](https://github.com/maiyunnet/kebab/blob/master/sys
135921
136294
 
135922
136295
  > `static` **column**(`field`): `object`
135923
136296
 
135924
- Defined in: [sys/mod.ts:185](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L185)
136297
+ Defined in: [sys/mod.ts:193](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L193)
135925
136298
 
135926
136299
  创建字段对象
135927
136300
 
@@ -135953,7 +136326,7 @@ Defined in: [sys/mod.ts:185](https://github.com/maiyunnet/kebab/blob/master/sys/
135953
136326
 
135954
136327
  > `static` **find**\<`T`\>(`db`, `val`, `opt?`): `Promise`\<`false` \| `T` & `Record`\<`string`, `any`\> \| `null`\>
135955
136328
 
135956
- Defined in: [sys/mod.ts:634](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L634)
136329
+ Defined in: [sys/mod.ts:642](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L642)
135957
136330
 
135958
136331
  根据主键(或 key 字段)获取对象
135959
136332
 
@@ -136017,7 +136390,7 @@ Defined in: [sys/mod.ts:634](https://github.com/maiyunnet/kebab/blob/master/sys/
136017
136390
 
136018
136391
  > `static` **getCreate**\<`T`\>(`db`, `opt?`): `T`
136019
136392
 
136020
- Defined in: [sys/mod.ts:616](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L616)
136393
+ Defined in: [sys/mod.ts:624](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L624)
136021
136394
 
136022
136395
  获取创建对象,通常用于新建数据库条目
136023
136396
 
@@ -136061,7 +136434,7 @@ Defined in: [sys/mod.ts:616](https://github.com/maiyunnet/kebab/blob/master/sys/
136061
136434
 
136062
136435
  > `static` **insert**(`db`, `cs`, `vs?`, `opt?`): `Promise`\<`boolean` \| `null`\>
136063
136436
 
136064
- Defined in: [sys/mod.ts:214](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L214)
136437
+ Defined in: [sys/mod.ts:222](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L222)
136065
136438
 
136066
136439
  添加一个序列(允许超过 65536 的占位符会被拆分多次执行)
136067
136440
 
@@ -136115,7 +136488,7 @@ Defined in: [sys/mod.ts:214](https://github.com/maiyunnet/kebab/blob/master/sys/
136115
136488
 
136116
136489
  > `static` **insertSql**(`db`, `cs`, `vs?`, `opt?`): `string`
136117
136490
 
136118
- Defined in: [sys/mod.ts:274](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L274)
136491
+ Defined in: [sys/mod.ts:282](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L282)
136119
136492
 
136120
136493
  获取添加一个序列的模拟 SQL
136121
136494
 
@@ -136169,7 +136542,7 @@ Defined in: [sys/mod.ts:274](https://github.com/maiyunnet/kebab/blob/master/sys/
136169
136542
 
136170
136543
  > `static` **json**\<`T`\>(`obj`): `T`
136171
136544
 
136172
- Defined in: [sys/mod.ts:203](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L203)
136545
+ Defined in: [sys/mod.ts:211](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L211)
136173
136546
 
136174
136547
  标记 JSON 字段;模型内保持原始对象,写入数据库时再序列化
136175
136548
 
@@ -136217,7 +136590,7 @@ Defined in: [sys/mod.ts:203](https://github.com/maiyunnet/kebab/blob/master/sys/
136217
136590
 
136218
136591
  > `static` **one**(`db`, `s`, `opt`): `Promise`\<`false` \| `Record`\<`string`, `any`\> \| `null`\>
136219
136592
 
136220
- Defined in: [sys/mod.ts:663](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L663)
136593
+ Defined in: [sys/mod.ts:671](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L671)
136221
136594
 
136222
136595
  ##### Parameters
136223
136596
 
@@ -136271,7 +136644,7 @@ Defined in: [sys/mod.ts:663](https://github.com/maiyunnet/kebab/blob/master/sys/
136271
136644
 
136272
136645
  > `static` **one**\<`T`\>(`db`, `s`, `opt?`): `Promise`\<`false` \| `T` & `Record`\<`string`, `any`\> \| `null`\>
136273
136646
 
136274
- Defined in: [sys/mod.ts:677](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L677)
136647
+ Defined in: [sys/mod.ts:685](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L685)
136275
136648
 
136276
136649
  ##### Type Parameters
136277
136650
 
@@ -136333,7 +136706,7 @@ Defined in: [sys/mod.ts:677](https://github.com/maiyunnet/kebab/blob/master/sys/
136333
136706
 
136334
136707
  > `static` **oneArray**(`db`, `s`, `opt?`): `Promise`\<`false` \| `Record`\<`string`, `any`\> \| `null`\>
136335
136708
 
136336
- Defined in: [sys/mod.ts:758](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L758)
136709
+ Defined in: [sys/mod.ts:766](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L766)
136337
136710
 
136338
136711
  通过 where 条件筛选单条数据返回原生对象
136339
136712
 
@@ -136389,7 +136762,7 @@ Defined in: [sys/mod.ts:758](https://github.com/maiyunnet/kebab/blob/master/sys/
136389
136762
 
136390
136763
  > `static` **primarys**(`db`, `where?`, `opt?`): `Promise`\<`false` \| `any`[]\>
136391
136764
 
136392
- Defined in: [sys/mod.ts:780](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L780)
136765
+ Defined in: [sys/mod.ts:788](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L788)
136393
136766
 
136394
136767
  根据 where 条件获取主键值列表
136395
136768
 
@@ -136433,7 +136806,7 @@ where 条件
136433
136806
 
136434
136807
  > `static` **removeByWhere**(`db`, `where`, `opt?`): `Promise`\<`number` \| `false` \| `null`\>
136435
136808
 
136436
- Defined in: [sys/mod.ts:300](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L300)
136809
+ Defined in: [sys/mod.ts:308](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L308)
136437
136810
 
136438
136811
  根据条件移除条目
136439
136812
 
@@ -136485,7 +136858,7 @@ Defined in: [sys/mod.ts:300](https://github.com/maiyunnet/kebab/blob/master/sys/
136485
136858
 
136486
136859
  > `static` **removeByWhereSql**(`db`, `where`, `opt?`): [`Sql`](../../../lib/sql/classes/Sql.md)
136487
136860
 
136488
- Defined in: [sys/mod.ts:344](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L344)
136861
+ Defined in: [sys/mod.ts:352](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L352)
136489
136862
 
136490
136863
  根据条件移除条目(仅获取 SQL 对象)
136491
136864
 
@@ -136537,7 +136910,7 @@ Defined in: [sys/mod.ts:344](https://github.com/maiyunnet/kebab/blob/master/sys/
136537
136910
 
136538
136911
  > `static` **select**\<`T`\>(`db`, `c`, `opt?`): `T` & `Record`\<`string`, `any`\>
136539
136912
 
136540
- Defined in: [sys/mod.ts:553](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L553)
136913
+ Defined in: [sys/mod.ts:561](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L561)
136541
136914
 
136542
136915
  select 自定字段
136543
136916
 
@@ -136607,7 +136980,7 @@ select 自定字段
136607
136980
 
136608
136981
  > `static` **toArrayByRecord**\<`T`\>(`obj`): `Record`\<`string`, `Record`\<`string`, `any`\>\>
136609
136982
 
136610
- Defined in: [sys/mod.ts:807](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L807)
136983
+ Defined in: [sys/mod.ts:815](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L815)
136611
136984
 
136612
136985
  将 key val 组成的数据列表转换为原生对象模式,获取的是新创建的数组
136613
136986
 
@@ -136635,7 +137008,7 @@ Defined in: [sys/mod.ts:807](https://github.com/maiyunnet/kebab/blob/master/sys/
136635
137008
 
136636
137009
  > `static` **updateByWhere**(`db`, `data`, `where`, `opt?`): `Promise`\<`number` \| `false` \| `null`\>
136637
137010
 
136638
- Defined in: [sys/mod.ts:377](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L377)
137011
+ Defined in: [sys/mod.ts:385](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L385)
136639
137012
 
136640
137013
  根据条件更新数据
136641
137014
 
@@ -136693,7 +137066,7 @@ Defined in: [sys/mod.ts:377](https://github.com/maiyunnet/kebab/blob/master/sys/
136693
137066
 
136694
137067
  > `static` **updateByWhereSql**(`db`, `data`, `where`, `opt?`): [`Sql`](../../../lib/sql/classes/Sql.md)
136695
137068
 
136696
- Defined in: [sys/mod.ts:423](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L423)
137069
+ Defined in: [sys/mod.ts:431](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L431)
136697
137070
 
136698
137071
  根据条件更新数据(仅获取 SQL 对象)
136699
137072
 
@@ -136751,7 +137124,7 @@ Defined in: [sys/mod.ts:423](https://github.com/maiyunnet/kebab/blob/master/sys/
136751
137124
 
136752
137125
  > `static` **updateList**(`db`, `data`, `key`, `opt?`): `Promise`\<`boolean` \| `null`\>
136753
137126
 
136754
- Defined in: [sys/mod.ts:461](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L461)
137127
+ Defined in: [sys/mod.ts:469](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L469)
136755
137128
 
136756
137129
  批量更新数据
136757
137130
 
@@ -136809,7 +137182,7 @@ Defined in: [sys/mod.ts:461](https://github.com/maiyunnet/kebab/blob/master/sys/
136809
137182
 
136810
137183
  > `static` **value**(`val`): `object`
136811
137184
 
136812
- Defined in: [sys/mod.ts:194](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L194)
137185
+ Defined in: [sys/mod.ts:202](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L202)
136813
137186
 
136814
137187
  创建字面量值对象,用于 where 条件中 v[0] 需要是值而非字段名的场景
136815
137188
 
@@ -136841,7 +137214,7 @@ Defined in: [sys/mod.ts:194](https://github.com/maiyunnet/kebab/blob/master/sys/
136841
137214
 
136842
137215
  > `static` **where**\<`T`\>(`db`, `s?`, `opt?`): `T` & `Record`\<`string`, `any`\>
136843
137216
 
136844
- Defined in: [sys/mod.ts:585](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L585)
137217
+ Defined in: [sys/mod.ts:593](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L593)
136845
137218
 
136846
137219
  通过 where 条件获取模型
136847
137220
 
@@ -136916,7 +137289,7 @@ sys/mod/classes/Rows.md
136916
137289
 
136917
137290
  # Class: Rows\<T\>
136918
137291
 
136919
- Defined in: [sys/mod.ts:20](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L20)
137292
+ Defined in: [sys/mod.ts:28](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L28)
136920
137293
 
136921
137294
  条数列表
136922
137295
 
@@ -136936,7 +137309,7 @@ Defined in: [sys/mod.ts:20](https://github.com/maiyunnet/kebab/blob/master/sys/m
136936
137309
 
136937
137310
  > **new Rows**\<`T`\>(`initialItems?`): `Rows`\<`T`\>
136938
137311
 
136939
- Defined in: [sys/mod.ts:24](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L24)
137312
+ Defined in: [sys/mod.ts:32](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L32)
136940
137313
 
136941
137314
  #### Parameters
136942
137315
 
@@ -136956,7 +137329,7 @@ Defined in: [sys/mod.ts:24](https://github.com/maiyunnet/kebab/blob/master/sys/m
136956
137329
 
136957
137330
  > **get** **length**(): `number`
136958
137331
 
136959
- Defined in: [sys/mod.ts:29](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L29)
137332
+ Defined in: [sys/mod.ts:37](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L37)
136960
137333
 
136961
137334
  总行数
136962
137335
 
@@ -136974,7 +137347,7 @@ Defined in: [sys/mod.ts:29](https://github.com/maiyunnet/kebab/blob/master/sys/m
136974
137347
 
136975
137348
  > **\[iterator\]**(): `IterableIterator`\<`T`\>
136976
137349
 
136977
- Defined in: [sys/mod.ts:58](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L58)
137350
+ Defined in: [sys/mod.ts:66](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L66)
136978
137351
 
136979
137352
  for of
136980
137353
 
@@ -136992,7 +137365,7 @@ for of
136992
137365
 
136993
137366
  > **filter**(`predicate`): `Rows`\<`T`\>
136994
137367
 
136995
- Defined in: [sys/mod.ts:44](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L44)
137368
+ Defined in: [sys/mod.ts:52](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L52)
136996
137369
 
136997
137370
  根据规则筛掉项,predicate 返回 true 代表保留
136998
137371
 
@@ -137012,7 +137385,7 @@ Defined in: [sys/mod.ts:44](https://github.com/maiyunnet/kebab/blob/master/sys/m
137012
137385
 
137013
137386
  > **item**(`index`): `T`
137014
137387
 
137015
- Defined in: [sys/mod.ts:34](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L34)
137388
+ Defined in: [sys/mod.ts:42](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L42)
137016
137389
 
137017
137390
  通过索引获取一个对象
137018
137391
 
@@ -137036,7 +137409,7 @@ Defined in: [sys/mod.ts:34](https://github.com/maiyunnet/kebab/blob/master/sys/m
137036
137409
 
137037
137410
  > **map**\<`TU`\>(`callbackfn`): `TU`[]
137038
137411
 
137039
- Defined in: [sys/mod.ts:49](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L49)
137412
+ Defined in: [sys/mod.ts:57](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L57)
137040
137413
 
137041
137414
  重塑对象内容为数组
137042
137415
 
@@ -137062,7 +137435,7 @@ Defined in: [sys/mod.ts:49](https://github.com/maiyunnet/kebab/blob/master/sys/m
137062
137435
 
137063
137436
  > **toArray**(): `Record`\<`string`, `any`\>[]
137064
137437
 
137065
- Defined in: [sys/mod.ts:39](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L39)
137438
+ Defined in: [sys/mod.ts:47](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L47)
137066
137439
 
137067
137440
  转换为数组对象,获取的是新创建的数组
137068
137441
 
@@ -137092,6 +137465,7 @@ sys/mod/index.md
137092
137465
 
137093
137466
  ## Interfaces
137094
137467
 
137468
+ - [ICursorPage](interfaces/ICursorPage.md)
137095
137469
  - [IModUnionItem](interfaces/IModUnionItem.md)
137096
137470
  - [IRows](interfaces/IRows.md)
137097
137471
 
@@ -137099,6 +137473,59 @@ sys/mod/index.md
137099
137473
 
137100
137474
  - [TOnlyProperties](type-aliases/TOnlyProperties.md)
137101
137475
 
137476
+ sys/mod/interfaces/ICursorPage.md
137477
+ ---
137478
+
137479
+ [**Documents for @maiyunnet/kebab**](../../../index.md)
137480
+
137481
+ ***
137482
+
137483
+ [Documents for @maiyunnet/kebab](../../../index.md) / [sys/mod](../index.md) / ICursorPage
137484
+
137485
+ # Interface: ICursorPage\<T\>
137486
+
137487
+ Defined in: [sys/mod.ts:20](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L20)
137488
+
137489
+ 一批游标查询结果,hasMore 表示扫描方向上还有记录
137490
+
137491
+ ## Type Parameters
137492
+
137493
+ ### T
137494
+
137495
+ `T` *extends* `Record`\<`string`, `unknown`\> = `Record`\<`string`, `unknown`\>
137496
+
137497
+ ## Properties
137498
+
137499
+ ### hasMore
137500
+
137501
+ > **hasMore**: `boolean`
137502
+
137503
+ Defined in: [sys/mod.ts:22](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L22)
137504
+
137505
+ ***
137506
+
137507
+ ### list
137508
+
137509
+ > **list**: `T`[]
137510
+
137511
+ Defined in: [sys/mod.ts:21](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L21)
137512
+
137513
+ ***
137514
+
137515
+ ### next
137516
+
137517
+ > **next**: [`TCursorValue`](../../../lib/sql/type-aliases/TCursorValue.md)[] \| `null`
137518
+
137519
+ Defined in: [sys/mod.ts:23](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L23)
137520
+
137521
+ ***
137522
+
137523
+ ### previous
137524
+
137525
+ > **previous**: [`TCursorValue`](../../../lib/sql/type-aliases/TCursorValue.md)[] \| `null`
137526
+
137527
+ Defined in: [sys/mod.ts:24](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L24)
137528
+
137102
137529
  sys/mod/interfaces/IModUnionItem.md
137103
137530
  ---
137104
137531
 
@@ -137110,7 +137537,7 @@ sys/mod/interfaces/IModUnionItem.md
137110
137537
 
137111
137538
  # Interface: IModUnionItem
137112
137539
 
137113
- Defined in: [sys/mod.ts:1902](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1902)
137540
+ Defined in: [sys/mod.ts:2001](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L2001)
137114
137541
 
137115
137542
  ## Properties
137116
137543
 
@@ -137118,7 +137545,7 @@ Defined in: [sys/mod.ts:1902](https://github.com/maiyunnet/kebab/blob/master/sys
137118
137545
 
137119
137546
  > **field**: `string`
137120
137547
 
137121
- Defined in: [sys/mod.ts:1903](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1903)
137548
+ Defined in: [sys/mod.ts:2002](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L2002)
137122
137549
 
137123
137550
  ***
137124
137551
 
@@ -137126,7 +137553,7 @@ Defined in: [sys/mod.ts:1903](https://github.com/maiyunnet/kebab/blob/master/sys
137126
137553
 
137127
137554
  > `optional` **where?**: `any`
137128
137555
 
137129
- Defined in: [sys/mod.ts:1904](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1904)
137556
+ Defined in: [sys/mod.ts:2003](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L2003)
137130
137557
 
137131
137558
  sys/mod/interfaces/IRows.md
137132
137559
  ---
@@ -137139,7 +137566,7 @@ sys/mod/interfaces/IRows.md
137139
137566
 
137140
137567
  # Interface: IRows\<T\>
137141
137568
 
137142
- Defined in: [sys/mod.ts:1896](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1896)
137569
+ Defined in: [sys/mod.ts:1995](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1995)
137143
137570
 
137144
137571
  ## Extends
137145
137572
 
@@ -137157,7 +137584,7 @@ Defined in: [sys/mod.ts:1896](https://github.com/maiyunnet/kebab/blob/master/sys
137157
137584
 
137158
137585
  > `readonly` **length**: `number`
137159
137586
 
137160
- Defined in: [sys/mod.ts:1897](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1897)
137587
+ Defined in: [sys/mod.ts:1996](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1996)
137161
137588
 
137162
137589
  ## Methods
137163
137590
 
@@ -137165,7 +137592,7 @@ Defined in: [sys/mod.ts:1897](https://github.com/maiyunnet/kebab/blob/master/sys
137165
137592
 
137166
137593
  > **item**(`index`): `T`
137167
137594
 
137168
- Defined in: [sys/mod.ts:1898](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1898)
137595
+ Defined in: [sys/mod.ts:1997](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1997)
137169
137596
 
137170
137597
  #### Parameters
137171
137598
 
@@ -137183,7 +137610,7 @@ Defined in: [sys/mod.ts:1898](https://github.com/maiyunnet/kebab/blob/master/sys
137183
137610
 
137184
137611
  > **toArray**(): `Record`\<`string`, `any`\>[]
137185
137612
 
137186
- Defined in: [sys/mod.ts:1899](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1899)
137613
+ Defined in: [sys/mod.ts:1998](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1998)
137187
137614
 
137188
137615
  #### Returns
137189
137616