@maiyunnet/kebab 9.19.1 → 9.20.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/doc/kebab-rag.md CHANGED
@@ -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.1"` = `'9.20.1'`
1442
1593
 
1443
1594
  Defined in: [index.ts:10](https://github.com/maiyunnet/kebab/blob/master/index.ts#L10)
1444
1595
 
@@ -121867,7 +122018,7 @@ Defined in: [lib/s3.ts:88](https://github.com/maiyunnet/kebab/blob/master/lib/s3
121867
122018
 
121868
122019
  > **deleteObject**(`key`, `bucket?`): `Promise`\<`boolean`\>
121869
122020
 
121870
- Defined in: [lib/s3.ts:279](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L279)
122021
+ Defined in: [lib/s3.ts:367](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L367)
121871
122022
 
121872
122023
  删除对象
121873
122024
 
@@ -121895,7 +122046,7 @@ bucket 名
121895
122046
 
121896
122047
  > **deleteObjects**(`keys`, `bucket?`): `Promise`\<`boolean`\>
121897
122048
 
121898
- Defined in: [lib/s3.ts:299](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L299)
122049
+ Defined in: [lib/s3.ts:387](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L387)
121899
122050
 
121900
122051
  批量删除对象
121901
122052
 
@@ -121923,7 +122074,7 @@ bucket 名
121923
122074
 
121924
122075
  > **destroy**(): `void`
121925
122076
 
121926
- Defined in: [lib/s3.ts:341](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L341)
122077
+ Defined in: [lib/s3.ts:429](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L429)
121927
122078
 
121928
122079
  销毁连接,释放资源
121929
122080
  一般会自动垃圾回收,但高频接口也可主动调用
@@ -121938,7 +122089,7 @@ Defined in: [lib/s3.ts:341](https://github.com/maiyunnet/kebab/blob/master/lib/s
121938
122089
 
121939
122090
  > **getObject**(`key`, `bucket?`): `Promise`\<`false` \| `Readable` & `SdkStreamMixin` \| `Blob` & `SdkStreamMixin` \| `ReadableStream`\<`any`\> & `SdkStreamMixin` \| `undefined`\>
121940
122091
 
121941
- Defined in: [lib/s3.ts:235](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L235)
122092
+ Defined in: [lib/s3.ts:323](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L323)
121942
122093
 
121943
122094
  获取对象流,可通过流获取 buffer 或 text
121944
122095
 
@@ -121966,7 +122117,7 @@ bucket 名
121966
122117
 
121967
122118
  > **getObjectBuffer**(`key`, `bucket?`): `Promise`\<`false` \| `Buffer`\<`ArrayBufferLike`\>\>
121968
122119
 
121969
- Defined in: [lib/s3.ts:256](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L256)
122120
+ Defined in: [lib/s3.ts:344](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L344)
121970
122121
 
121971
122122
  获取对象 Buffer
121972
122123
 
@@ -121996,7 +122147,7 @@ bucket 名
121996
122147
 
121997
122148
  > **headObject**(`key`, `bucket?`): `Promise`\<`false` \| `HeadObjectCommandOutput`\>
121998
122149
 
121999
- Defined in: [lib/s3.ts:321](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L321)
122150
+ Defined in: [lib/s3.ts:409](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L409)
122000
122151
 
122001
122152
  检测对象是否存在
122002
122153
 
@@ -122024,9 +122175,9 @@ bucket 名
122024
122175
 
122025
122176
  > **putObject**(`key`, `content`, `length?`, `bucket?`): `Promise`\<`false` \| `CompleteMultipartUploadCommandOutput`\>
122026
122177
 
122027
- Defined in: [lib/s3.ts:139](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L139)
122178
+ Defined in: [lib/s3.ts:140](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L140)
122028
122179
 
122029
- 上传对象(可传流且也可无需设置 length) --
122180
+ 上传对象,流内容可省略 length
122030
122181
 
122031
122182
  #### Parameters
122032
122183
 
@@ -122044,9 +122195,9 @@ Defined in: [lib/s3.ts:139](https://github.com/maiyunnet/kebab/blob/master/lib/s
122044
122195
 
122045
122196
  ##### length?
122046
122197
 
122047
- `number` \| \{ `bucket?`: `string`; `disposition?`: `string`; `length?`: `number`; `type?`: `string`; \}
122198
+ `number` \| \{ `bucket?`: `string`; `disposition?`: `string`; `length?`: `number`; `signal?`: `AbortSignal`; `type?`: `string`; \}
122048
122199
 
122049
- 设置 contentLength,如果是流模式则需要设置此项,也可以设置为对象参数
122200
+ contentLength 或上传选项
122050
122201
 
122051
122202
  `number`
122052
122203
 
@@ -122054,22 +122205,36 @@ Defined in: [lib/s3.ts:139](https://github.com/maiyunnet/kebab/blob/master/lib/s
122054
122205
 
122055
122206
  ###### Type Literal
122056
122207
 
122057
- \{ `bucket?`: `string`; `disposition?`: `string`; `length?`: `number`; `type?`: `string`; \}
122208
+ \{ `bucket?`: `string`; `disposition?`: `string`; `length?`: `number`; `signal?`: `AbortSignal`; `type?`: `string`; \}
122058
122209
 
122059
- 设置 contentLength,如果是流模式则需要设置此项,也可以设置为对象参数
122210
+ contentLength 或上传选项
122060
122211
 
122061
122212
  ###### bucket?
122062
122213
 
122063
122214
  `string`
122064
122215
 
122216
+ bucket 名,省略时使用预定义 bucket
122217
+
122065
122218
  ###### disposition?
122066
122219
 
122067
122220
  `string`
122068
122221
 
122222
+ content-disposition,如 attachment
122223
+
122069
122224
  ###### length?
122070
122225
 
122071
122226
  `number`
122072
122227
 
122228
+ contentLength,流内容可省略
122229
+
122230
+ ###### signal?
122231
+
122232
+ `AbortSignal`
122233
+
122234
+ 取消上传请求并销毁输入流,等待已知的未完成分片清理后返回 false
122235
+ 清理使用独立的 30 秒超时信号,失败时记录错误;不传则沿用原上传流程
122236
+ 不删除同名对象,上传完成与取消同时发生时,由调用方清理独立任务文件
122237
+
122073
122238
  ###### type?
122074
122239
 
122075
122240
  `string`
@@ -122086,13 +122251,15 @@ bucket 名
122086
122251
 
122087
122252
  `Promise`\<`false` \| `CompleteMultipartUploadCommandOutput`\>
122088
122253
 
122254
+ 上传结果,失败或取消返回 false;传入 signal 时,返回前会尝试清理已知的未完成分片
122255
+
122089
122256
  ***
122090
122257
 
122091
122258
  ### putObjects()
122092
122259
 
122093
122260
  > **putObjects**(`items`, `options?`): `Promise`\<[`IPutObjectsItemResult`](../interfaces/IPutObjectsItemResult.md)[]\>
122094
122261
 
122095
- Defined in: [lib/s3.ts:184](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L184)
122262
+ Defined in: [lib/s3.ts:272](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L272)
122096
122263
 
122097
122264
  批量上传对象,并发控制,单次失败不影响其他项
122098
122265
 
@@ -122196,7 +122363,7 @@ lib/s3/functions/get.md
122196
122363
 
122197
122364
  > **get**(`ctr`, `opt`): [`S3`](../classes/S3.md)
122198
122365
 
122199
- Defined in: [lib/s3.ts:351](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L351)
122366
+ Defined in: [lib/s3.ts:439](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L439)
122200
122367
 
122201
122368
  创建一个对象存储对象
122202
122369
 
@@ -123199,7 +123366,7 @@ lib/sql/classes/Sql.md
123199
123366
 
123200
123367
  # Class: Sql
123201
123368
 
123202
- Defined in: [lib/sql.ts:43](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L43)
123369
+ Defined in: [lib/sql.ts:46](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L46)
123203
123370
 
123204
123371
  ## Constructors
123205
123372
 
@@ -123207,7 +123374,7 @@ Defined in: [lib/sql.ts:43](https://github.com/maiyunnet/kebab/blob/master/lib/s
123207
123374
 
123208
123375
  > **new Sql**(`opt`): `Sql`
123209
123376
 
123210
- Defined in: [lib/sql.ts:73](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L73)
123377
+ Defined in: [lib/sql.ts:76](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L76)
123211
123378
 
123212
123379
  #### Parameters
123213
123380
 
@@ -123249,7 +123416,7 @@ Defined in: [lib/sql.ts:73](https://github.com/maiyunnet/kebab/blob/master/lib/s
123249
123416
 
123250
123417
  > **append**(`sql`): `this`
123251
123418
 
123252
- Defined in: [lib/sql.ts:1057](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1057)
123419
+ Defined in: [lib/sql.ts:1126](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1126)
123253
123420
 
123254
123421
  在 sql 最后追加字符串
123255
123422
 
@@ -123269,7 +123436,7 @@ Defined in: [lib/sql.ts:1057](https://github.com/maiyunnet/kebab/blob/master/lib
123269
123436
 
123270
123437
  > **by**(`c`, `d?`): `this`
123271
123438
 
123272
- Defined in: [lib/sql.ts:809](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L809)
123439
+ Defined in: [lib/sql.ts:813](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L813)
123273
123440
 
123274
123441
  ORDER BY
123275
123442
 
@@ -123297,7 +123464,7 @@ ORDER BY
123297
123464
 
123298
123465
  > **copy**(`f?`, `opt?`): `Sql`
123299
123466
 
123300
- Defined in: [lib/sql.ts:877](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L877)
123467
+ Defined in: [lib/sql.ts:932](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L932)
123301
123468
 
123302
123469
  创建一个本对象的一个新的 sql 对象拷贝
123303
123470
 
@@ -123311,6 +123478,18 @@ Defined in: [lib/sql.ts:877](https://github.com/maiyunnet/kebab/blob/master/lib/
123311
123478
 
123312
123479
  ##### opt?
123313
123480
 
123481
+ ###### limit?
123482
+
123483
+ `false`
123484
+
123485
+ false 时移除本查询的 LIMIT/OFFSET,不修改子查询
123486
+
123487
+ ###### order?
123488
+
123489
+ `false`
123490
+
123491
+ false 时移除本查询的排序,不修改子查询
123492
+
123314
123493
  ###### where?
123315
123494
 
123316
123495
  `any`
@@ -123325,7 +123504,7 @@ Defined in: [lib/sql.ts:877](https://github.com/maiyunnet/kebab/blob/master/lib/
123325
123504
 
123326
123505
  > **crossJoin**(`f`, `s?`, `suf?`, `pre?`): `this`
123327
123506
 
123328
- Defined in: [lib/sql.ts:528](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L528)
123507
+ Defined in: [lib/sql.ts:532](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L532)
123329
123508
 
123330
123509
  cross join 方法
123331
123510
 
@@ -123365,7 +123544,7 @@ MySQL 时为表前缀,PostgreSQL 时为 Schema 名,仅在 join 非默认前
123365
123544
 
123366
123545
  > **delete**(`f`): `this`
123367
123546
 
123368
- Defined in: [lib/sql.ts:416](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L416)
123547
+ Defined in: [lib/sql.ts:420](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L420)
123369
123548
 
123370
123549
  'xx'
123371
123550
 
@@ -123387,7 +123566,7 @@ Defined in: [lib/sql.ts:416](https://github.com/maiyunnet/kebab/blob/master/lib/
123387
123566
 
123388
123567
  > **field**(`str`, `pre?`, `suf?`): `string`
123389
123568
 
123390
- Defined in: [lib/sql.ts:1068](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1068)
123569
+ Defined in: [lib/sql.ts:1137](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1137)
123391
123570
 
123392
123571
  对字段进行包裹
123393
123572
 
@@ -123419,7 +123598,7 @@ MySQL 时为表前缀,PostgreSQL 时为 Schema 名,仅请在 field 表名时
123419
123598
 
123420
123599
  > **format**(`sql?`, `data?`): `string`
123421
123600
 
123422
- Defined in: [lib/sql.ts:1047](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1047)
123601
+ Defined in: [lib/sql.ts:1116](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1116)
123423
123602
 
123424
123603
  获取带 data 的 sql 语句
123425
123604
 
@@ -123443,7 +123622,7 @@ Defined in: [lib/sql.ts:1047](https://github.com/maiyunnet/kebab/blob/master/lib
123443
123622
 
123444
123623
  > **fullJoin**(`f`, `s?`, `suf?`, `pre?`): `this`
123445
123624
 
123446
- Defined in: [lib/sql.ts:517](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L517)
123625
+ Defined in: [lib/sql.ts:521](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L521)
123447
123626
 
123448
123627
  full join 方法
123449
123628
 
@@ -123483,7 +123662,7 @@ MySQL 时为表前缀,PostgreSQL 时为 Schema 名,仅在 join 非默认前
123483
123662
 
123484
123663
  > **getData**(): [`DbValue`](../../../index/type-aliases/DbValue.md)[]
123485
123664
 
123486
- Defined in: [lib/sql.ts:1031](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1031)
123665
+ Defined in: [lib/sql.ts:1100](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1100)
123487
123666
 
123488
123667
  获取全部 data
123489
123668
 
@@ -123497,7 +123676,7 @@ Defined in: [lib/sql.ts:1031](https://github.com/maiyunnet/kebab/blob/master/lib
123497
123676
 
123498
123677
  > **getPre**(): `string`
123499
123678
 
123500
- Defined in: [lib/sql.ts:1038](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1038)
123679
+ Defined in: [lib/sql.ts:1107](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1107)
123501
123680
 
123502
123681
  获取定义的 pre
123503
123682
 
@@ -123511,7 +123690,7 @@ Defined in: [lib/sql.ts:1038](https://github.com/maiyunnet/kebab/blob/master/lib
123511
123690
 
123512
123691
  > **getSql**(): `string`
123513
123692
 
123514
- Defined in: [lib/sql.ts:1011](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1011)
123693
+ Defined in: [lib/sql.ts:1080](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1080)
123515
123694
 
123516
123695
  获取 sql 语句
123517
123696
 
@@ -123525,7 +123704,7 @@ Defined in: [lib/sql.ts:1011](https://github.com/maiyunnet/kebab/blob/master/lib
123525
123704
 
123526
123705
  > **group**(`c`): `this`
123527
123706
 
123528
- Defined in: [lib/sql.ts:833](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L833)
123707
+ Defined in: [lib/sql.ts:888](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L888)
123529
123708
 
123530
123709
  GROUP BY
123531
123710
 
@@ -123547,7 +123726,7 @@ GROUP BY
123547
123726
 
123548
123727
  > **having**(`s?`): `this`
123549
123728
 
123550
- Defined in: [lib/sql.ts:535](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L535)
123729
+ Defined in: [lib/sql.ts:539](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L539)
123551
123730
 
123552
123731
  having 后置筛选器,用法类似 where
123553
123732
 
@@ -123567,7 +123746,7 @@ having 后置筛选器,用法类似 where
123567
123746
 
123568
123747
  > **hint**(`h`): `this`
123569
123748
 
123570
- Defined in: [lib/sql.ts:119](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L119)
123749
+ Defined in: [lib/sql.ts:123](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L123)
123571
123750
 
123572
123751
  设置 MySQL 优化器 Hint
123573
123752
  会以 Optimizer Hint 注释语法注入到 SELECT 关键字后
@@ -123612,7 +123791,7 @@ INDEX(`t1` `idx_a`) JOIN_INDEX(`t2` `idx_b`)
123612
123791
 
123613
123792
  > **innerJoin**(`f`, `s?`, `suf?`, `pre?`): `this`
123614
123793
 
123615
- Defined in: [lib/sql.ts:506](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L506)
123794
+ Defined in: [lib/sql.ts:510](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L510)
123616
123795
 
123617
123796
  inner join 方法
123618
123797
 
@@ -123652,7 +123831,7 @@ MySQL 时为表前缀,PostgreSQL 时为 Schema 名,仅在 join 非默认前
123652
123831
 
123653
123832
  > **insert**(`table`, `ignore?`): `this`
123654
123833
 
123655
- Defined in: [lib/sql.ts:131](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L131)
123834
+ Defined in: [lib/sql.ts:135](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L135)
123656
123835
 
123657
123836
  插入数据前导
123658
123837
 
@@ -123680,7 +123859,7 @@ Defined in: [lib/sql.ts:131](https://github.com/maiyunnet/kebab/blob/master/lib/
123680
123859
 
123681
123860
  > **join**(`f`, `s?`, `type?`, `suf?`, `pre?`): `this`
123682
123861
 
123683
- Defined in: [lib/sql.ts:458](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L458)
123862
+ Defined in: [lib/sql.ts:462](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L462)
123684
123863
 
123685
123864
  join 方法
123686
123865
 
@@ -123726,7 +123905,7 @@ MySQL 时为表前缀,PostgreSQL 时为 Schema 名,仅在 join 非默认前
123726
123905
 
123727
123906
  > **leftJoin**(`f`, `s?`, `suf?`, `pre?`): `this`
123728
123907
 
123729
- Defined in: [lib/sql.ts:484](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L484)
123908
+ Defined in: [lib/sql.ts:488](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L488)
123730
123909
 
123731
123910
  left join 方法
123732
123911
 
@@ -123766,7 +123945,7 @@ MySQL 时为表前缀,PostgreSQL 时为 Schema 名,仅在 join 非默认前
123766
123945
 
123767
123946
  > **limit**(`a`, `b?`): `this`
123768
123947
 
123769
- Defined in: [lib/sql.ts:853](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L853)
123948
+ Defined in: [lib/sql.ts:908](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L908)
123770
123949
 
123771
123950
  LIMIT(limit、offset, limit)
123772
123951
 
@@ -123794,7 +123973,7 @@ LIMIT(limit、offset, limit)
123794
123973
 
123795
123974
  > **lock**(): `this`
123796
123975
 
123797
- Defined in: [lib/sql.ts:868](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L868)
123976
+ Defined in: [lib/sql.ts:923](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L923)
123798
123977
 
123799
123978
  追加消极锁,通常不建议使用
123800
123979
 
@@ -123808,7 +123987,7 @@ Defined in: [lib/sql.ts:868](https://github.com/maiyunnet/kebab/blob/master/lib/
123808
123987
 
123809
123988
  > **rightJoin**(`f`, `s?`, `suf?`, `pre?`): `this`
123810
123989
 
123811
- Defined in: [lib/sql.ts:495](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L495)
123990
+ Defined in: [lib/sql.ts:499](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L499)
123812
123991
 
123813
123992
  right join 方法
123814
123993
 
@@ -123844,11 +124023,48 @@ MySQL 时为表前缀,PostgreSQL 时为 Schema 名,仅在 join 非默认前
123844
124023
 
123845
124024
  ***
123846
124025
 
124026
+ ### seek()
124027
+
124028
+ > **seek**(`c`, `values?`, `d?`): `this`
124029
+
124030
+ Defined in: [lib/sql.ts:841](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L841)
124031
+
124032
+ 按非空、同向排序字段定位游标并设置排序;字段组合须唯一且有匹配索引
124033
+ 使用行比较,让 PostgreSQL 可以从复合索引边界开始扫描
124034
+
124035
+ #### Parameters
124036
+
124037
+ ##### c
124038
+
124039
+ `string` \| `string`[]
124040
+
124041
+ 排序字段,支持表别名;不支持表达式、GROUP BY 或 UNION
124042
+
124043
+ ##### values?
124044
+
124045
+ [`TCursorValue`](../type-aliases/TCursorValue.md)[]
124046
+
124047
+ 上一页末行的字段值,省略时读取首批
124048
+
124049
+ ##### d?
124050
+
124051
+ `"DESC"` \| `"ASC"`
124052
+
124053
+ 扫描方向;读取前一批时反转方向并在取回后反转列表
124054
+
124055
+ #### Returns
124056
+
124057
+ `this`
124058
+
124059
+ 当前 SQL 对象
124060
+
124061
+ ***
124062
+
123847
124063
  ### select()
123848
124064
 
123849
124065
  > **select**(`c`, `f`): `this`
123850
124066
 
123851
- Defined in: [lib/sql.ts:303](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L303)
124067
+ Defined in: [lib/sql.ts:307](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L307)
123852
124068
 
123853
124069
  '*', 'xx'
123854
124070
 
@@ -123876,7 +124092,7 @@ Defined in: [lib/sql.ts:303](https://github.com/maiyunnet/kebab/blob/master/lib/
123876
124092
 
123877
124093
  > **union**(`lsql`, `type?`): `this`
123878
124094
 
123879
- Defined in: [lib/sql.ts:428](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L428)
124095
+ Defined in: [lib/sql.ts:432](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L432)
123880
124096
 
123881
124097
  联查另一个 sql 对象
123882
124098
 
@@ -123904,7 +124120,7 @@ sql 对象
123904
124120
 
123905
124121
  > **unionAll**(`lsql`): `this`
123906
124122
 
123907
- Defined in: [lib/sql.ts:446](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L446)
124123
+ Defined in: [lib/sql.ts:450](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L450)
123908
124124
 
123909
124125
  所有联查另一个 sql 对象
123910
124126
 
@@ -123926,7 +124142,7 @@ sql 对象
123926
124142
 
123927
124143
  > **update**(`f`, `s`): `this`
123928
124144
 
123929
- Defined in: [lib/sql.ts:344](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L344)
124145
+ Defined in: [lib/sql.ts:348](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L348)
123930
124146
 
123931
124147
  UPDATE SQL 方法
123932
124148
 
@@ -123954,7 +124170,7 @@ UPDATE SQL 方法
123954
124170
 
123955
124171
  > **updateByValues**(`table`, `key`, `cols`, `rows`): `this`
123956
124172
 
123957
- Defined in: [lib/sql.ts:247](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L247)
124173
+ Defined in: [lib/sql.ts:251](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L251)
123958
124174
 
123959
124175
  批量 UPDATE,以子查询作为数据源,纯更新语义(不会插入新行)
123960
124176
  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 +124213,7 @@ PostgreSQL: UPDATE t SET c=tmp.c FROM (VALUES (typed nulls), ($1,...)) AS tmp(co
123997
124213
 
123998
124214
  > **upsert**(`data`, `conflict?`): `this`
123999
124215
 
124000
- Defined in: [lib/sql.ts:208](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L208)
124216
+ Defined in: [lib/sql.ts:212](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L212)
124001
124217
 
124002
124218
  如果存在则更新不存在则插入(UPSERT)
124003
124219
 
@@ -124025,7 +124241,7 @@ Defined in: [lib/sql.ts:208](https://github.com/maiyunnet/kebab/blob/master/lib/
124025
124241
 
124026
124242
  > **values**(`cs`, `vs?`): `this`
124027
124243
 
124028
- Defined in: [lib/sql.ts:150](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L150)
124244
+ Defined in: [lib/sql.ts:154](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L154)
124029
124245
 
124030
124246
  实际插入数据的数据
124031
124247
 
@@ -124053,7 +124269,7 @@ Defined in: [lib/sql.ts:150](https://github.com/maiyunnet/kebab/blob/master/lib/
124053
124269
 
124054
124270
  > **where**(`s`): `this`
124055
124271
 
124056
- Defined in: [lib/sql.ts:568](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L568)
124272
+ Defined in: [lib/sql.ts:572](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L572)
124057
124273
 
124058
124274
  筛选器
124059
124275
  标量相等:'city': 'bj', 'type': '2'
@@ -124087,7 +124303,7 @@ lib/sql/enumerations/EJSON.md
124087
124303
 
124088
124304
  # Enumeration: EJSON
124089
124305
 
124090
- Defined in: [lib/sql.ts:22](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L22)
124306
+ Defined in: [lib/sql.ts:25](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L25)
124091
124307
 
124092
124308
  JSON 查询操作符
124093
124309
 
@@ -124097,7 +124313,7 @@ JSON 查询操作符
124097
124313
 
124098
124314
  > **CONTAINED\_BY**: `"json_in"`
124099
124315
 
124100
- Defined in: [lib/sql.ts:26](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L26)
124316
+ Defined in: [lib/sql.ts:29](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L29)
124101
124317
 
124102
124318
  被包含值 (MySQL: JSON_CONTAINS, PG: <@)
124103
124319
 
@@ -124107,7 +124323,7 @@ Defined in: [lib/sql.ts:26](https://github.com/maiyunnet/kebab/blob/master/lib/s
124107
124323
 
124108
124324
  > **CONTAINS**: `"json"`
124109
124325
 
124110
- Defined in: [lib/sql.ts:24](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L24)
124326
+ Defined in: [lib/sql.ts:27](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L27)
124111
124327
 
124112
124328
  包含值 (MySQL: JSON_CONTAINS, PG: @>)
124113
124329
 
@@ -124117,7 +124333,7 @@ Defined in: [lib/sql.ts:24](https://github.com/maiyunnet/kebab/blob/master/lib/s
124117
124333
 
124118
124334
  > **HAS\_ALL\_KEYS**: `"json_all"`
124119
124335
 
124120
- Defined in: [lib/sql.ts:32](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L32)
124336
+ Defined in: [lib/sql.ts:35](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L35)
124121
124337
 
124122
124338
  存在所有 Key 不含值 (MySQL: JSON_CONTAINS_PATH all, PG: ?&)
124123
124339
 
@@ -124127,7 +124343,7 @@ Defined in: [lib/sql.ts:32](https://github.com/maiyunnet/kebab/blob/master/lib/s
124127
124343
 
124128
124344
  > **HAS\_ANY\_KEYS**: `"json_any"`
124129
124345
 
124130
- Defined in: [lib/sql.ts:30](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L30)
124346
+ Defined in: [lib/sql.ts:33](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L33)
124131
124347
 
124132
124348
  存在任意 Key 不含值 (MySQL: JSON_CONTAINS_PATH one, PG: ?|)
124133
124349
 
@@ -124137,7 +124353,7 @@ Defined in: [lib/sql.ts:30](https://github.com/maiyunnet/kebab/blob/master/lib/s
124137
124353
 
124138
124354
  > **HAS\_KEY**: `"json_key"`
124139
124355
 
124140
- Defined in: [lib/sql.ts:28](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L28)
124356
+ Defined in: [lib/sql.ts:31](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L31)
124141
124357
 
124142
124358
  存在 Key 不含值 (MySQL: JSON_CONTAINS_PATH one, PG: ?)
124143
124359
 
@@ -124147,7 +124363,7 @@ Defined in: [lib/sql.ts:28](https://github.com/maiyunnet/kebab/blob/master/lib/s
124147
124363
 
124148
124364
  > **OVERLAPS**: `"json_overlaps"`
124149
124365
 
124150
- Defined in: [lib/sql.ts:34](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L34)
124366
+ Defined in: [lib/sql.ts:37](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L37)
124151
124367
 
124152
124368
  简单数组重叠 (MySQL: JSON_OVERLAPS, PG: &&)
124153
124369
 
@@ -124195,7 +124411,7 @@ lib/sql/functions/aoMix.md
124195
124411
 
124196
124412
  > **aoMix**(`arr`): `Record`\<`string`, `string` \| `number` \| [`Json`](../../../index/type-aliases/Json.md)\>
124197
124413
 
124198
- Defined in: [lib/sql.ts:1417](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1417)
124414
+ Defined in: [lib/sql.ts:1486](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1486)
124199
124415
 
124200
124416
  将数组兑换为组合的对象(Array/Object mix)
124201
124417
 
@@ -124224,7 +124440,7 @@ lib/sql/functions/column.md
124224
124440
 
124225
124441
  > **column**(`field`): `object`
124226
124442
 
124227
- Defined in: [lib/sql.ts:1438](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1438)
124443
+ Defined in: [lib/sql.ts:1507](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1507)
124228
124444
 
124229
124445
  创建字段对象
124230
124446
 
@@ -124263,7 +124479,7 @@ lib/sql/functions/format.md
124263
124479
 
124264
124480
  > **format**(`sql`, `data`, `service?`): `string`
124265
124481
 
124266
- Defined in: [lib/sql.ts:1378](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1378)
124482
+ Defined in: [lib/sql.ts:1447](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1447)
124267
124483
 
124268
124484
  返回代入后的完整 SQL 字符串,这并不安全不能直接执行,只是用来调试打印 sql 语句
124269
124485
 
@@ -124304,7 +124520,7 @@ lib/sql/functions/get.md
124304
124520
 
124305
124521
  > **get**(`opt`): [`Sql`](../classes/Sql.md)
124306
124522
 
124307
- Defined in: [lib/sql.ts:1350](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1350)
124523
+ Defined in: [lib/sql.ts:1419](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1419)
124308
124524
 
124309
124525
  创建 sql 对象
124310
124526
 
@@ -124357,7 +124573,7 @@ lib/sql/functions/json.md
124357
124573
 
124358
124574
  > **json**\<`T`\>(`obj`): `T`
124359
124575
 
124360
- Defined in: [lib/sql.ts:1477](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1477)
124576
+ Defined in: [lib/sql.ts:1546](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1546)
124361
124577
 
124362
124578
  标记需要写入 JSON/jsonb 字段的值;实际序列化延迟到数据库边界
124363
124579
 
@@ -124394,7 +124610,7 @@ lib/sql/functions/value.md
124394
124610
 
124395
124611
  > **value**(`val`): `object`
124396
124612
 
124397
- Defined in: [lib/sql.ts:1457](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1457)
124613
+ Defined in: [lib/sql.ts:1526](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1526)
124398
124614
 
124399
124615
  创建字面量值对象,用于 where 条件中 v[0] 需要是值而非字段名的场景
124400
124616
  例:[value('hello'), 'IN', column('tags')]
@@ -124441,6 +124657,10 @@ lib/sql/index.md
124441
124657
 
124442
124658
  - [Sql](classes/Sql.md)
124443
124659
 
124660
+ ## Type Aliases
124661
+
124662
+ - [TCursorValue](type-aliases/TCursorValue.md)
124663
+
124444
124664
  ## Functions
124445
124665
 
124446
124666
  - [aoMix](functions/aoMix.md)
@@ -124450,6 +124670,23 @@ lib/sql/index.md
124450
124670
  - [json](functions/json.md)
124451
124671
  - [value](functions/value.md)
124452
124672
 
124673
+ lib/sql/type-aliases/TCursorValue.md
124674
+ ---
124675
+
124676
+ [**Documents for @maiyunnet/kebab**](../../../index.md)
124677
+
124678
+ ***
124679
+
124680
+ [Documents for @maiyunnet/kebab](../../../index.md) / [lib/sql](../index.md) / TCursorValue
124681
+
124682
+ # Type Alias: TCursorValue
124683
+
124684
+ > **TCursorValue** = `string` \| `number`
124685
+
124686
+ Defined in: [lib/sql.ts:22](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L22)
124687
+
124688
+ 非空游标值;大整数和日期请使用数据库可比较的字符串
124689
+
124453
124690
  lib/sql/value/functions/isJson.md
124454
124691
  ---
124455
124692
 
@@ -125752,6 +125989,43 @@ lib/ssh/shell/index.md
125752
125989
 
125753
125990
  - [Connection](classes/Connection.md)
125754
125991
 
125992
+ lib/text/functions/compareVersion.md
125993
+ ---
125994
+
125995
+ [**Documents for @maiyunnet/kebab**](../../../index.md)
125996
+
125997
+ ***
125998
+
125999
+ [Documents for @maiyunnet/kebab](../../../index.md) / [lib/text](../index.md) / compareVersion
126000
+
126001
+ # Function: compareVersion()
126002
+
126003
+ > **compareVersion**(`version`, `target`): `0` \| `1` \| `-1` \| `null`
126004
+
126005
+ Defined in: [lib/text.ts:35](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L35)
126006
+
126007
+ 逐段比较三段正式发行版本 X.Y.Z,不按字符串或浮点数比较
126008
+
126009
+ ## Parameters
126010
+
126011
+ ### version
126012
+
126013
+ `unknown`
126014
+
126015
+ 待比较的版本
126016
+
126017
+ ### target
126018
+
126019
+ `unknown`
126020
+
126021
+ 目标版本
126022
+
126023
+ ## Returns
126024
+
126025
+ `0` \| `1` \| `-1` \| `null`
126026
+
126027
+ 小于返回 -1,等于返回 0,大于返回 1;任一版本无效时返回 null
126028
+
125755
126029
  lib/text/functions/csvescape.md
125756
126030
  ---
125757
126031
 
@@ -125765,7 +126039,7 @@ lib/text/functions/csvescape.md
125765
126039
 
125766
126040
  > **csvescape**(`str`): `string`
125767
126041
 
125768
- Defined in: [lib/text.ts:547](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L547)
126042
+ Defined in: [lib/text.ts:585](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L585)
125769
126043
 
125770
126044
  CSV 特殊字符转换为实体字符
125771
126045
 
@@ -125792,7 +126066,7 @@ lib/text/functions/getFileExt.md
125792
126066
 
125793
126067
  > **getFileExt**(`path`): `string`
125794
126068
 
125795
- Defined in: [lib/text.ts:588](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L588)
126069
+ Defined in: [lib/text.ts:626](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L626)
125796
126070
 
125797
126071
  获取文件后缀
125798
126072
 
@@ -125821,7 +126095,7 @@ lib/text/functions/getFileNameExt.md
125821
126095
 
125822
126096
  > **getFileNameExt**(`path`): `object`
125823
126097
 
125824
- Defined in: [lib/text.ts:601](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L601)
126098
+ Defined in: [lib/text.ts:639](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L639)
125825
126099
 
125826
126100
  获取文件名和后缀
125827
126101
 
@@ -125858,7 +126132,7 @@ lib/text/functions/getFilename.md
125858
126132
 
125859
126133
  > **getFilename**(`path`, `ext?`): `string`
125860
126134
 
125861
- Defined in: [lib/text.ts:568](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L568)
126135
+ Defined in: [lib/text.ts:606](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L606)
125862
126136
 
125863
126137
  获取文件名
125864
126138
 
@@ -125893,7 +126167,7 @@ lib/text/functions/htmlescape.md
125893
126167
 
125894
126168
  > **htmlescape**(`html`): `string`
125895
126169
 
125896
- Defined in: [lib/text.ts:533](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L533)
126170
+ Defined in: [lib/text.ts:571](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L571)
125897
126171
 
125898
126172
  HTML 特殊字符转换为实体字符
125899
126173
 
@@ -125922,7 +126196,7 @@ lib/text/functions/int2str.md
125922
126196
 
125923
126197
  > **int2str**(`int`, `digits?`, `decimal?`): `string`
125924
126198
 
125925
- Defined in: [lib/text.ts:825](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L825)
126199
+ Defined in: [lib/text.ts:863](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L863)
125926
126200
 
125927
126201
  为解决精度问题,将整数转换为小数字符串
125928
126202
  以下几个示例都是当 digits 为 3、decimal 为 2 时
@@ -125968,7 +126242,7 @@ lib/text/functions/isAscii.md
125968
126242
 
125969
126243
  > **isAscii**(`text`): `boolean`
125970
126244
 
125971
- Defined in: [lib/text.ts:291](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L291)
126245
+ Defined in: [lib/text.ts:329](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L329)
125972
126246
 
125973
126247
  判断是否在 ascii 字符集内,仅可输入部分
125974
126248
 
@@ -125997,7 +126271,7 @@ lib/text/functions/isDomain.md
125997
126271
 
125998
126272
  > **isDomain**(`domain`): `boolean`
125999
126273
 
126000
- Defined in: [lib/text.ts:280](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L280)
126274
+ Defined in: [lib/text.ts:318](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L318)
126001
126275
 
126002
126276
  判断是否是域名
126003
126277
 
@@ -126028,7 +126302,7 @@ lib/text/functions/isEMail.md
126028
126302
 
126029
126303
  > **isEMail**(`email`): `boolean`
126030
126304
 
126031
- Defined in: [lib/text.ts:253](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L253)
126305
+ Defined in: [lib/text.ts:291](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L291)
126032
126306
 
126033
126307
  是否是邮件地址
126034
126308
 
@@ -126055,7 +126329,7 @@ lib/text/functions/isFalsy.md
126055
126329
 
126056
126330
  > **isFalsy**(`val`): `val is TFalsy`
126057
126331
 
126058
- Defined in: [lib/text.ts:776](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L776)
126332
+ Defined in: [lib/text.ts:814](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L814)
126059
126333
 
126060
126334
  判断一个值是否是虚假的(为 null/undefined/空字符串/false/0)
126061
126335
 
@@ -126084,7 +126358,7 @@ lib/text/functions/isIdCardCN.md
126084
126358
 
126085
126359
  > **isIdCardCN**(`idcard`): `boolean`
126086
126360
 
126087
- Defined in: [lib/text.ts:403](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L403)
126361
+ Defined in: [lib/text.ts:441](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L441)
126088
126362
 
126089
126363
  是否是中国大陆身份证号码
126090
126364
 
@@ -126113,7 +126387,7 @@ lib/text/functions/isIPv4.md
126113
126387
 
126114
126388
  > **isIPv4**(`ip`): `boolean`
126115
126389
 
126116
- Defined in: [lib/text.ts:261](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L261)
126390
+ Defined in: [lib/text.ts:299](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L299)
126117
126391
 
126118
126392
  是否是 IPv4(基于 Node 原生 net.isIP,严格校验)
126119
126393
 
@@ -126140,7 +126414,7 @@ lib/text/functions/isIPv6.md
126140
126414
 
126141
126415
  > **isIPv6**(`ip`): `boolean`
126142
126416
 
126143
- Defined in: [lib/text.ts:269](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L269)
126417
+ Defined in: [lib/text.ts:307](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L307)
126144
126418
 
126145
126419
  是否是 IPv6(基于 Node 原生 net.isIP,严格校验)
126146
126420
 
@@ -126167,7 +126441,7 @@ lib/text/functions/isPhoneCN.md
126167
126441
 
126168
126442
  > **isPhoneCN**(`p`): `boolean`
126169
126443
 
126170
- Defined in: [lib/text.ts:395](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L395)
126444
+ Defined in: [lib/text.ts:433](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L433)
126171
126445
 
126172
126446
  判断手机号是否是 11 位,不做真实性校验
126173
126447
 
@@ -126196,7 +126470,7 @@ lib/text/functions/isRealPath.md
126196
126470
 
126197
126471
  > **isRealPath**(`path`): `boolean`
126198
126472
 
126199
- Defined in: [lib/text.ts:555](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L555)
126473
+ Defined in: [lib/text.ts:593](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L593)
126200
126474
 
126201
126475
  判断是否是绝对路径,是返回 true,相对路径返回 false
126202
126476
 
@@ -126225,7 +126499,7 @@ lib/text/functions/isSameOrigin.md
126225
126499
 
126226
126500
  > **isSameOrigin**(`from`, `to`): `boolean`
126227
126501
 
126228
- Defined in: [lib/text.ts:134](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L134)
126502
+ Defined in: [lib/text.ts:172](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L172)
126229
126503
 
126230
126504
  判断两个 URL 是否属于同源地址
126231
126505
 
@@ -126260,7 +126534,7 @@ lib/text/functions/isTruthy.md
126260
126534
 
126261
126535
  > **isTruthy**\<`T`\>(`val`): `val is Exclude<T, TFalsy>`
126262
126536
 
126263
- Defined in: [lib/text.ts:784](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L784)
126537
+ Defined in: [lib/text.ts:822](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L822)
126264
126538
 
126265
126539
  判断一个值是否是真实的(不为 null/undefined/空字符串/false/0)
126266
126540
 
@@ -126295,7 +126569,7 @@ lib/text/functions/logicalOr.md
126295
126569
 
126296
126570
  > **logicalOr**\<`T`, `T2`\>(`v1`, `v2`): `T` *extends* [`TFalsy`](../type-aliases/TFalsy.md) ? `T2` : `T`
126297
126571
 
126298
- Defined in: [lib/text.ts:793](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L793)
126572
+ Defined in: [lib/text.ts:831](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L831)
126299
126573
 
126300
126574
  类似 || 运算符的效果
126301
126575
 
@@ -126340,7 +126614,7 @@ lib/text/functions/match.md
126340
126614
 
126341
126615
  > **match**(`str`, `regs`): `boolean`
126342
126616
 
126343
- Defined in: [lib/text.ts:380](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L380)
126617
+ Defined in: [lib/text.ts:418](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L418)
126344
126618
 
126345
126619
  传入正则进行匹配 str 是否有一项满足
126346
126620
 
@@ -126375,7 +126649,7 @@ lib/text/functions/nlReplace.md
126375
126649
 
126376
126650
  > **nlReplace**(`str`, `to?`): `string`
126377
126651
 
126378
- Defined in: [lib/text.ts:300](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L300)
126652
+ Defined in: [lib/text.ts:338](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L338)
126379
126653
 
126380
126654
  换行替换为别的
126381
126655
 
@@ -126410,7 +126684,7 @@ lib/text/functions/parseDomain.md
126410
126684
 
126411
126685
  > **parseDomain**(`domain`): `Promise`\<[`IDomain`](../interfaces/IDomain.md)\>
126412
126686
 
126413
- Defined in: [lib/text.ts:323](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L323)
126687
+ Defined in: [lib/text.ts:361](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L361)
126414
126688
 
126415
126689
  解析域名并获取 tld/sld/domain/sub
126416
126690
 
@@ -126439,7 +126713,7 @@ lib/text/functions/parseHost.md
126439
126713
 
126440
126714
  > **parseHost**(`host`): `object`
126441
126715
 
126442
- Defined in: [lib/text.ts:30](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L30)
126716
+ Defined in: [lib/text.ts:68](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L68)
126443
126717
 
126444
126718
  解析主机名和端口号
126445
126719
 
@@ -126480,7 +126754,7 @@ lib/text/functions/parseJson.md
126480
126754
 
126481
126755
  > **parseJson**\<`T`\>(`str`): `false` \| `T`
126482
126756
 
126483
- Defined in: [lib/text.ts:663](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L663)
126757
+ Defined in: [lib/text.ts:701](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L701)
126484
126758
 
126485
126759
  将字符串解析为对象,返回 false 代表解析失败,支持 BigInt
126486
126760
 
@@ -126515,7 +126789,7 @@ lib/text/functions/parseUrl.md
126515
126789
 
126516
126790
  > **parseUrl**(`url`): [`IUrlParse`](../../../index/interfaces/IUrlParse.md)
126517
126791
 
126518
- Defined in: [lib/text.ts:56](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L56)
126792
+ Defined in: [lib/text.ts:94](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L94)
126519
126793
 
126520
126794
  格式化一段 URL
126521
126795
 
@@ -126529,6 +126803,37 @@ Defined in: [lib/text.ts:56](https://github.com/maiyunnet/kebab/blob/master/lib/
126529
126803
 
126530
126804
  [`IUrlParse`](../../../index/interfaces/IUrlParse.md)
126531
126805
 
126806
+ lib/text/functions/parseVersion.md
126807
+ ---
126808
+
126809
+ [**Documents for @maiyunnet/kebab**](../../../index.md)
126810
+
126811
+ ***
126812
+
126813
+ [Documents for @maiyunnet/kebab](../../../index.md) / [lib/text](../index.md) / parseVersion
126814
+
126815
+ # Function: parseVersion()
126816
+
126817
+ > **parseVersion**(`value`): \[`number`, `number`, `number`\] \| `null`
126818
+
126819
+ Defined in: [lib/text.ts:16](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L16)
126820
+
126821
+ 解析三段正式发行版本 X.Y.Z,不接受前导零、预发行和构建后缀
126822
+
126823
+ ## Parameters
126824
+
126825
+ ### value
126826
+
126827
+ `unknown`
126828
+
126829
+ 待解析的版本
126830
+
126831
+ ## Returns
126832
+
126833
+ \[`number`, `number`, `number`\] \| `null`
126834
+
126835
+ 三段安全整数,无效时返回 null
126836
+
126532
126837
  lib/text/functions/queryParse.md
126533
126838
  ---
126534
126839
 
@@ -126542,7 +126847,7 @@ lib/text/functions/queryParse.md
126542
126847
 
126543
126848
  > **queryParse**(`query`): `Record`\<`string`, `string` \| `string`[]\>
126544
126849
 
126545
- Defined in: [lib/text.ts:480](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L480)
126850
+ Defined in: [lib/text.ts:518](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L518)
126546
126851
 
126547
126852
  将 query string 转换为对象
126548
126853
 
@@ -126573,7 +126878,7 @@ lib/text/functions/queryStringify.md
126573
126878
 
126574
126879
  > **queryStringify**(`query`, `encode?`): `string`
126575
126880
 
126576
- Defined in: [lib/text.ts:431](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L431)
126881
+ Defined in: [lib/text.ts:469](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L469)
126577
126882
 
126578
126883
  将对象转换为 query string
126579
126884
 
@@ -126599,7 +126904,7 @@ Defined in: [lib/text.ts:431](https://github.com/maiyunnet/kebab/blob/master/lib
126599
126904
 
126600
126905
  > **queryStringify**(`query`, `options`): `string`
126601
126906
 
126602
- Defined in: [lib/text.ts:437](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L437)
126907
+ Defined in: [lib/text.ts:475](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L475)
126603
126908
 
126604
126909
  将对象转换为 query string
126605
126910
 
@@ -126644,7 +126949,7 @@ lib/text/functions/sizeFormat.md
126644
126949
 
126645
126950
  > **sizeFormat**(`size`, `spliter?`): `string`
126646
126951
 
126647
- Defined in: [lib/text.ts:16](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L16)
126952
+ Defined in: [lib/text.ts:54](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L54)
126648
126953
 
126649
126954
  将文件大小格式化为带单位的字符串
126650
126955
 
@@ -126679,7 +126984,7 @@ lib/text/functions/str2int.md
126679
126984
 
126680
126985
  > **str2int**(`str`, `digits?`): `number`
126681
126986
 
126682
- Defined in: [lib/text.ts:807](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L807)
126987
+ Defined in: [lib/text.ts:845](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L845)
126683
126988
 
126684
126989
  为解决精度问题,将字符串数字转换为整数显示
126685
126990
  以下几个示例都是当 digits 为 2 时
@@ -126719,7 +127024,7 @@ lib/text/functions/stringifyBuffer.md
126719
127024
 
126720
127025
  > **stringifyBuffer**(`buf`): `string`
126721
127026
 
126722
- Defined in: [lib/text.ts:730](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L730)
127027
+ Defined in: [lib/text.ts:768](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L768)
126723
127028
 
126724
127029
  输出文本格式的 buffer
126725
127030
 
@@ -126748,7 +127053,7 @@ lib/text/functions/stringifyError.md
126748
127053
 
126749
127054
  > **stringifyError**(`error`): `string`
126750
127055
 
126751
- Defined in: [lib/text.ts:707](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L707)
127056
+ Defined in: [lib/text.ts:745](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L745)
126752
127057
 
126753
127058
  将未知异常转换为适合单行日志的文本,Error 优先返回完整堆栈
126754
127059
 
@@ -126779,7 +127084,7 @@ lib/text/functions/stringifyJson.md
126779
127084
 
126780
127085
  > **stringifyJson**(`obj`, `space?`): `string`
126781
127086
 
126782
- Defined in: [lib/text.ts:693](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L693)
127087
+ Defined in: [lib/text.ts:731](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L731)
126783
127088
 
126784
127089
  将对象转换为 json 字符串,返回 false 代表解析失败,支持 BigInt
126785
127090
 
@@ -126814,7 +127119,7 @@ lib/text/functions/stringifyResult.md
126814
127119
 
126815
127120
  > **stringifyResult**(`rtn`): `string`
126816
127121
 
126817
- Defined in: [lib/text.ts:623](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L623)
127122
+ Defined in: [lib/text.ts:661](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L661)
126818
127123
 
126819
127124
  将普通的返回 JSON 对象序列化为字符串
126820
127125
 
@@ -126843,7 +127148,7 @@ lib/text/functions/trimJson.md
126843
127148
 
126844
127149
  > **trimJson**(`json`): `any`
126845
127150
 
126846
- Defined in: [lib/text.ts:738](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L738)
127151
+ Defined in: [lib/text.ts:776](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L776)
126847
127152
 
126848
127153
  递归删除 json 中的字符串首尾空格,会返回一个新的对象
126849
127154
 
@@ -126870,7 +127175,7 @@ lib/text/functions/urlAtom.md
126870
127175
 
126871
127176
  > **urlAtom**(`url`): `string`
126872
127177
 
126873
- Defined in: [lib/text.ts:234](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L234)
127178
+ Defined in: [lib/text.ts:272](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L272)
126874
127179
 
126875
127180
  将路径中的 ../ ./ 都按规范妥善处理
126876
127181
 
@@ -126899,7 +127204,7 @@ lib/text/functions/urlResolve.md
126899
127204
 
126900
127205
  > **urlResolve**(`from`, `to`, `limit?`): `string`
126901
127206
 
126902
- Defined in: [lib/text.ts:168](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L168)
127207
+ Defined in: [lib/text.ts:206](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L206)
126903
127208
 
126904
127209
  将相对路径根据基准路径进行转换
126905
127210
 
@@ -126954,6 +127259,7 @@ lib/text/index.md
126954
127259
 
126955
127260
  ## Functions
126956
127261
 
127262
+ - [compareVersion](functions/compareVersion.md)
126957
127263
  - [csvescape](functions/csvescape.md)
126958
127264
  - [getFileExt](functions/getFileExt.md)
126959
127265
  - [getFilename](functions/getFilename.md)
@@ -126978,6 +127284,7 @@ lib/text/index.md
126978
127284
  - [parseHost](functions/parseHost.md)
126979
127285
  - [parseJson](functions/parseJson.md)
126980
127286
  - [parseUrl](functions/parseUrl.md)
127287
+ - [parseVersion](functions/parseVersion.md)
126981
127288
  - [queryParse](functions/queryParse.md)
126982
127289
  - [queryStringify](functions/queryStringify.md)
126983
127290
  - [sizeFormat](functions/sizeFormat.md)
@@ -127001,7 +127308,7 @@ lib/text/interfaces/IDomain.md
127001
127308
 
127002
127309
  # Interface: IDomain
127003
127310
 
127004
- Defined in: [lib/text.ts:312](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L312)
127311
+ Defined in: [lib/text.ts:350](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L350)
127005
127312
 
127006
127313
  解析后的 domain
127007
127314
 
@@ -127011,7 +127318,7 @@ Defined in: [lib/text.ts:312](https://github.com/maiyunnet/kebab/blob/master/lib
127011
127318
 
127012
127319
  > **domain**: `string` \| `null`
127013
127320
 
127014
- Defined in: [lib/text.ts:315](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L315)
127321
+ Defined in: [lib/text.ts:353](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L353)
127015
127322
 
127016
127323
  ***
127017
127324
 
@@ -127019,7 +127326,7 @@ Defined in: [lib/text.ts:315](https://github.com/maiyunnet/kebab/blob/master/lib
127019
127326
 
127020
127327
  > **sld**: `string` \| `null`
127021
127328
 
127022
- Defined in: [lib/text.ts:314](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L314)
127329
+ Defined in: [lib/text.ts:352](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L352)
127023
127330
 
127024
127331
  ***
127025
127332
 
@@ -127027,7 +127334,7 @@ Defined in: [lib/text.ts:314](https://github.com/maiyunnet/kebab/blob/master/lib
127027
127334
 
127028
127335
  > **sub**: `string` \| `null`
127029
127336
 
127030
- Defined in: [lib/text.ts:316](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L316)
127337
+ Defined in: [lib/text.ts:354](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L354)
127031
127338
 
127032
127339
  ***
127033
127340
 
@@ -127035,7 +127342,7 @@ Defined in: [lib/text.ts:316](https://github.com/maiyunnet/kebab/blob/master/lib
127035
127342
 
127036
127343
  > **tld**: `string` \| `null`
127037
127344
 
127038
- Defined in: [lib/text.ts:313](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L313)
127345
+ Defined in: [lib/text.ts:351](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L351)
127039
127346
 
127040
127347
  lib/text/type-aliases/TFalsy.md
127041
127348
  ---
@@ -127050,7 +127357,7 @@ lib/text/type-aliases/TFalsy.md
127050
127357
 
127051
127358
  > **TFalsy** = `false` \| `""` \| `0` \| `null` \| `undefined` \| *typeof* `NaN`
127052
127359
 
127053
- Defined in: [lib/text.ts:770](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L770)
127360
+ Defined in: [lib/text.ts:808](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L808)
127054
127361
 
127055
127362
  虚假值类型
127056
127363
 
@@ -127067,7 +127374,7 @@ lib/text/variables/REGEXP_ASCII.md
127067
127374
 
127068
127375
  > `const` **REGEXP\_ASCII**: `RegExp`
127069
127376
 
127070
- Defined in: [lib/text.ts:285](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L285)
127377
+ Defined in: [lib/text.ts:323](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L323)
127071
127378
 
127072
127379
  可打印的 ascii 字符集
127073
127380
 
@@ -127084,7 +127391,7 @@ lib/text/variables/REGEXP_DOMAIN.md
127084
127391
 
127085
127392
  > `const` **REGEXP\_DOMAIN**: `RegExp`
127086
127393
 
127087
- Defined in: [lib/text.ts:273](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L273)
127394
+ Defined in: [lib/text.ts:311](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L311)
127088
127395
 
127089
127396
  lib/text/variables/REGEXP_EMAIL.md
127090
127397
  ---
@@ -127099,7 +127406,7 @@ lib/text/variables/REGEXP_EMAIL.md
127099
127406
 
127100
127407
  > `const` **REGEXP\_EMAIL**: `RegExp`
127101
127408
 
127102
- Defined in: [lib/text.ts:247](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L247)
127409
+ Defined in: [lib/text.ts:285](https://github.com/maiyunnet/kebab/blob/master/lib/text.ts#L285)
127103
127410
 
127104
127411
  lib/time/classes/Time.md
127105
127412
  ---
@@ -134542,7 +134849,7 @@ sys/mod/classes/default.md
134542
134849
 
134543
134850
  # Class: default
134544
134851
 
134545
- Defined in: [sys/mod.ts:66](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L66)
134852
+ Defined in: [sys/mod.ts:74](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L74)
134546
134853
 
134547
134854
  开启软更需要在表添加字段:ALTER TABLE `table_name` ADD `time_remove` bigint NOT NULL DEFAULT '0' AFTER `xxx`;
134548
134855
 
@@ -134552,7 +134859,7 @@ Defined in: [sys/mod.ts:66](https://github.com/maiyunnet/kebab/blob/master/sys/m
134552
134859
 
134553
134860
  > **new default**(`opt`): `Mod`
134554
134861
 
134555
- Defined in: [sys/mod.ts:120](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L120)
134862
+ Defined in: [sys/mod.ts:128](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L128)
134556
134863
 
134557
134864
  构造函数
134558
134865
 
@@ -134626,7 +134933,7 @@ MySQL 表前缀或 PostgreSQL Schema 名,优先级:选项 > 类属性 > 配
134626
134933
 
134627
134934
  > `protected` **\_contain**: \{ `key`: `string`; `list`: `string`[]; \} \| `null` = `null`
134628
134935
 
134629
- Defined in: [sys/mod.ts:96](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L96)
134936
+ Defined in: [sys/mod.ts:104](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L104)
134630
134937
 
134631
134938
  必须追加的数据筛选 key 与 values,仅单表模式有效
134632
134939
 
@@ -134636,7 +134943,7 @@ Defined in: [sys/mod.ts:96](https://github.com/maiyunnet/kebab/blob/master/sys/m
134636
134943
 
134637
134944
  > `protected` `optional` **\_ctr?**: [`Ctr`](../../ctr/classes/Ctr.md) = `undefined`
134638
134945
 
134639
- Defined in: [sys/mod.ts:111](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L111)
134946
+ Defined in: [sys/mod.ts:119](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L119)
134640
134947
 
134641
134948
  ctr 对象
134642
134949
 
@@ -134646,7 +134953,7 @@ ctr 对象
134646
134953
 
134647
134954
  > `protected` **\_data**: `Record`\<`string`, `any`\> = `{}`
134648
134955
 
134649
- Defined in: [sys/mod.ts:90](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L90)
134956
+ Defined in: [sys/mod.ts:98](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L98)
134650
134957
 
134651
134958
  模型获取的属性
134652
134959
 
@@ -134656,7 +134963,7 @@ Defined in: [sys/mod.ts:90](https://github.com/maiyunnet/kebab/blob/master/sys/m
134656
134963
 
134657
134964
  > `protected` **\_db**: [`Transaction`](../../../lib/db/tran/classes/Transaction.md) \| [`Pool`](../../../lib/db/pool/classes/Pool.md)
134658
134965
 
134659
- Defined in: [sys/mod.ts:105](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L105)
134966
+ Defined in: [sys/mod.ts:113](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L113)
134660
134967
 
134661
134968
  数据库连接对象
134662
134969
 
@@ -134666,7 +134973,7 @@ Defined in: [sys/mod.ts:105](https://github.com/maiyunnet/kebab/blob/master/sys/
134666
134973
 
134667
134974
  > `protected` **\_fieldPrefix**: `string` = `''`
134668
134975
 
134669
- Defined in: [sys/mod.ts:114](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L114)
134976
+ Defined in: [sys/mod.ts:122](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L122)
134670
134977
 
134671
134978
  主表筛选前缀,优先 alias,其次表名
134672
134979
 
@@ -134676,7 +134983,7 @@ Defined in: [sys/mod.ts:114](https://github.com/maiyunnet/kebab/blob/master/sys/
134676
134983
 
134677
134984
  > `protected` **\_index**: `string`[] \| `null` = `null`
134678
134985
 
134679
- Defined in: [sys/mod.ts:93](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L93)
134986
+ Defined in: [sys/mod.ts:101](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L101)
134680
134987
 
134681
134988
  当前选择的分表 _ 后缀,多个代表联查
134682
134989
 
@@ -134686,7 +134993,7 @@ Defined in: [sys/mod.ts:93](https://github.com/maiyunnet/kebab/blob/master/sys/m
134686
134993
 
134687
134994
  > `protected` **\_jsonUpdates**: `Record`\<`string`, `boolean`\> = `{}`
134688
134995
 
134689
- Defined in: [sys/mod.ts:87](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L87)
134996
+ Defined in: [sys/mod.ts:95](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L95)
134690
134997
 
134691
134998
  要在数据库边界序列化的 JSON 字段
134692
134999
 
@@ -134696,7 +135003,7 @@ Defined in: [sys/mod.ts:87](https://github.com/maiyunnet/kebab/blob/master/sys/m
134696
135003
 
134697
135004
  > `protected` **\_sql**: [`Sql`](../../../lib/sql/classes/Sql.md)
134698
135005
 
134699
- Defined in: [sys/mod.ts:108](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L108)
135006
+ Defined in: [sys/mod.ts:116](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L116)
134700
135007
 
134701
135008
  Sql 对象
134702
135009
 
@@ -134706,7 +135013,7 @@ Sql 对象
134706
135013
 
134707
135014
  > `protected` **\_total**: `number`[] = `[]`
134708
135015
 
134709
- Defined in: [sys/mod.ts:102](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L102)
135016
+ Defined in: [sys/mod.ts:110](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L110)
134710
135017
 
134711
135018
  已算出的 total
134712
135019
 
@@ -134716,7 +135023,7 @@ Defined in: [sys/mod.ts:102](https://github.com/maiyunnet/kebab/blob/master/sys/
134716
135023
 
134717
135024
  > `protected` **\_updates**: `Record`\<`string`, `boolean`\> = `{}`
134718
135025
 
134719
- Defined in: [sys/mod.ts:84](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L84)
135026
+ Defined in: [sys/mod.ts:92](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L92)
134720
135027
 
134721
135028
  要 update 的内容
134722
135029
 
@@ -134726,7 +135033,7 @@ Defined in: [sys/mod.ts:84](https://github.com/maiyunnet/kebab/blob/master/sys/m
134726
135033
 
134727
135034
  > `protected` `static` **\_$index**: `string` = `''`
134728
135035
 
134729
- Defined in: [sys/mod.ts:78](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L78)
135036
+ Defined in: [sys/mod.ts:86](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L86)
134730
135037
 
134731
135038
  若使用 _$key 并且有多个 unique 索引,这里指定 _$key 的索引名
134732
135039
 
@@ -134736,7 +135043,7 @@ Defined in: [sys/mod.ts:78](https://github.com/maiyunnet/kebab/blob/master/sys/m
134736
135043
 
134737
135044
  > `protected` `static` **\_$key**: `string` = `''`
134738
135045
 
134739
- Defined in: [sys/mod.ts:75](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L75)
135046
+ Defined in: [sys/mod.ts:83](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L83)
134740
135047
 
134741
135048
  设置后将由 _keyGenerator 函数生成唯一字段
134742
135049
 
@@ -134746,7 +135053,7 @@ Defined in: [sys/mod.ts:75](https://github.com/maiyunnet/kebab/blob/master/sys/m
134746
135053
 
134747
135054
  > `protected` `static` `optional` **\_$pre?**: `string`
134748
135055
 
134749
- Defined in: [sys/mod.ts:81](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L81)
135056
+ Defined in: [sys/mod.ts:89](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L89)
134750
135057
 
134751
135058
  前缀,MySQL 时为表前缀(如 prefix_),PostgreSQL 时为 Schema 名。顺序:选项前缀 -> 本前缀 -> 配置文件前缀
134752
135059
 
@@ -134756,7 +135063,7 @@ Defined in: [sys/mod.ts:81](https://github.com/maiyunnet/kebab/blob/master/sys/m
134756
135063
 
134757
135064
  > `protected` `static` **\_$primary**: `string` = `'id'`
134758
135065
 
134759
- Defined in: [sys/mod.ts:72](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L72)
135066
+ Defined in: [sys/mod.ts:80](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L80)
134760
135067
 
134761
135068
  主键字段名
134762
135069
 
@@ -134766,7 +135073,7 @@ Defined in: [sys/mod.ts:72](https://github.com/maiyunnet/kebab/blob/master/sys/m
134766
135073
 
134767
135074
  > `protected` `static` **\_$table**: `string` = `''`
134768
135075
 
134769
- Defined in: [sys/mod.ts:69](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L69)
135076
+ Defined in: [sys/mod.ts:77](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L77)
134770
135077
 
134771
135078
  表名
134772
135079
 
@@ -134776,7 +135083,7 @@ Defined in: [sys/mod.ts:69](https://github.com/maiyunnet/kebab/blob/master/sys/m
134776
135083
 
134777
135084
  > `protected` **\_keyGenerator**(): `string`
134778
135085
 
134779
- Defined in: [sys/mod.ts:1888](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1888)
135086
+ Defined in: [sys/mod.ts:1987](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1987)
134780
135087
 
134781
135088
  当 _key 不为空时,则依据继承此方法的方法自动生成填充 key
134782
135089
 
@@ -134800,7 +135107,7 @@ Defined in: [sys/mod.ts:1888](https://github.com/maiyunnet/kebab/blob/master/sys
134800
135107
 
134801
135108
  > **all**(): `Promise`\<`false` \| [`Rows`](Rows.md)\<`Mod`\>\>
134802
135109
 
134803
- Defined in: [sys/mod.ts:1202](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1202)
135110
+ Defined in: [sys/mod.ts:1210](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1210)
134804
135111
 
134805
135112
  ##### Returns
134806
135113
 
@@ -134810,7 +135117,7 @@ Defined in: [sys/mod.ts:1202](https://github.com/maiyunnet/kebab/blob/master/sys
134810
135117
 
134811
135118
  > **all**(`key`): `Promise`\<`false` \| `Record`\<`string`, `Mod`\>\>
134812
135119
 
134813
- Defined in: [sys/mod.ts:1203](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1203)
135120
+ Defined in: [sys/mod.ts:1211](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1211)
134814
135121
 
134815
135122
  ##### Parameters
134816
135123
 
@@ -134838,7 +135145,7 @@ Defined in: [sys/mod.ts:1203](https://github.com/maiyunnet/kebab/blob/master/sys
134838
135145
 
134839
135146
  > **allArray**(): `Promise`\<`false` \| `Record`\<`string`, `any`\>[]\>
134840
135147
 
134841
- Defined in: [sys/mod.ts:1381](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1381)
135148
+ Defined in: [sys/mod.ts:1389](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1389)
134842
135149
 
134843
135150
  ##### Returns
134844
135151
 
@@ -134848,7 +135155,7 @@ Defined in: [sys/mod.ts:1381](https://github.com/maiyunnet/kebab/blob/master/sys
134848
135155
 
134849
135156
  > **allArray**(`key`): `Promise`\<`false` \| `Record`\<`string`, `Record`\<`string`, `any`\>\>\>
134850
135157
 
134851
- Defined in: [sys/mod.ts:1382](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1382)
135158
+ Defined in: [sys/mod.ts:1390](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1390)
134852
135159
 
134853
135160
  ##### Parameters
134854
135161
 
@@ -134862,11 +135169,76 @@ Defined in: [sys/mod.ts:1382](https://github.com/maiyunnet/kebab/blob/master/sys
134862
135169
 
134863
135170
  ***
134864
135171
 
135172
+ ### allCursor()
135173
+
135174
+ > **allCursor**\<`T`\>(`count`, `opt`): `Promise`\<`false` \| [`ICursorPage`](../interfaces/ICursorPage.md)\<`T`\>\>
135175
+
135176
+ Defined in: [sys/mod.ts:1638](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1638)
135177
+
135178
+ 读取一批游标数据,多取一条判断后续记录,不使用 OFFSET,不修改原查询
135179
+ 排序字段必须全部非空、同向,且组合唯一;SELECT 中须包含对应字段(同名或指定 keys)
135180
+
135181
+ #### Type Parameters
135182
+
135183
+ ##### T
135184
+
135185
+ `T` *extends* `Record`\<`string`, `unknown`\> = `Record`\<`string`, `unknown`\>
135186
+
135187
+ #### Parameters
135188
+
135189
+ ##### count
135190
+
135191
+ `number`
135192
+
135193
+ 本批数量
135194
+
135195
+ ##### opt
135196
+
135197
+ 排序、边界和方向;before 为 true 时读取前一批并恢复展示顺序
135198
+
135199
+ ###### before?
135200
+
135201
+ `boolean`
135202
+
135203
+ 是否读取边界前一批,须提供 cursor
135204
+
135205
+ ###### by
135206
+
135207
+ `string` \| `string`[]
135208
+
135209
+ 排序字段,支持表别名
135210
+
135211
+ ###### cursor?
135212
+
135213
+ [`TCursorValue`](../../../lib/sql/type-aliases/TCursorValue.md)[]
135214
+
135215
+ 边界行的字段值,首批省略
135216
+
135217
+ ###### keys?
135218
+
135219
+ `string`[]
135220
+
135221
+ SELECT 结果中对应的字段名,默认去掉 by 的表别名
135222
+
135223
+ ###### order?
135224
+
135225
+ `"DESC"` \| `"ASC"`
135226
+
135227
+ 展示顺序,默认 DESC
135228
+
135229
+ #### Returns
135230
+
135231
+ `Promise`\<`false` \| [`ICursorPage`](../interfaces/ICursorPage.md)\<`T`\>\>
135232
+
135233
+ 列表、首末行游标和扫描方向上的 hasMore,数据库错误返回 false
135234
+
135235
+ ***
135236
+
134865
135237
  ### append()
134866
135238
 
134867
135239
  > **append**(`sql`): `this`
134868
135240
 
134869
- Defined in: [sys/mod.ts:1797](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1797)
135241
+ Defined in: [sys/mod.ts:1896](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1896)
134870
135242
 
134871
135243
  在 sql 最后追加字符串
134872
135244
 
@@ -134886,7 +135258,7 @@ Defined in: [sys/mod.ts:1797](https://github.com/maiyunnet/kebab/blob/master/sys
134886
135258
 
134887
135259
  > **by**(`c`, `d?`): `this`
134888
135260
 
134889
- Defined in: [sys/mod.ts:1753](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1753)
135261
+ Defined in: [sys/mod.ts:1852](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1852)
134890
135262
 
134891
135263
  ORDER BY
134892
135264
 
@@ -134914,7 +135286,7 @@ ORDER BY
134914
135286
 
134915
135287
  > **contain**(`contain`): `this`
134916
135288
 
134917
- Defined in: [sys/mod.ts:1806](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1806)
135289
+ Defined in: [sys/mod.ts:1905](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1905)
134918
135290
 
134919
135291
  设置闭包含数据
134920
135292
 
@@ -134942,7 +135314,7 @@ Defined in: [sys/mod.ts:1806](https://github.com/maiyunnet/kebab/blob/master/sys
134942
135314
 
134943
135315
  > **count**(): `Promise`\<`number`\>
134944
135316
 
134945
- Defined in: [sys/mod.ts:1589](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1589)
135317
+ Defined in: [sys/mod.ts:1688](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1688)
134946
135318
 
134947
135319
  根据当前条件,筛选出当前条目该有的数据条数
134948
135320
 
@@ -134956,7 +135328,7 @@ Defined in: [sys/mod.ts:1589](https://github.com/maiyunnet/kebab/blob/master/sys
134956
135328
 
134957
135329
  > **countSql**(): `string`
134958
135330
 
134959
- Defined in: [sys/mod.ts:1610](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1610)
135331
+ Defined in: [sys/mod.ts:1709](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1709)
134960
135332
 
134961
135333
  获取当前条件下的 count 的 SQL 语句
134962
135334
 
@@ -134970,7 +135342,7 @@ Defined in: [sys/mod.ts:1610](https://github.com/maiyunnet/kebab/blob/master/sys
134970
135342
 
134971
135343
  > **create**(): `Promise`\<`boolean` \| `null`\>
134972
135344
 
134973
- Defined in: [sys/mod.ts:881](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L881)
135345
+ Defined in: [sys/mod.ts:889](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L889)
134974
135346
 
134975
135347
  创建数据
134976
135348
 
@@ -134986,7 +135358,7 @@ true-成功,false-报错,null-唯一键非 _$key 键冲突
134986
135358
 
134987
135359
  > **crossJoin**(`f`, `s`, `index?`, `pre?`): `this`
134988
135360
 
134989
- Defined in: [sys/mod.ts:1685](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1685)
135361
+ Defined in: [sys/mod.ts:1784](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1784)
134990
135362
 
134991
135363
  cross join 方法
134992
135364
 
@@ -135036,7 +135408,7 @@ ON 信息
135036
135408
 
135037
135409
  > **explain**(`all?`): `Promise`\<`string` \| `false`\>
135038
135410
 
135039
- Defined in: [sys/mod.ts:1507](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1507)
135411
+ Defined in: [sys/mod.ts:1515](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1515)
135040
135412
 
135041
135413
  ##### Parameters
135042
135414
 
@@ -135052,7 +135424,7 @@ Defined in: [sys/mod.ts:1507](https://github.com/maiyunnet/kebab/blob/master/sys
135052
135424
 
135053
135425
  > **explain**(`all`): `Promise`\<`false` \| `Record`\<`string`, `any`\>\>
135054
135426
 
135055
- Defined in: [sys/mod.ts:1508](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1508)
135427
+ Defined in: [sys/mod.ts:1516](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1516)
135056
135428
 
135057
135429
  ##### Parameters
135058
135430
 
@@ -135070,7 +135442,7 @@ Defined in: [sys/mod.ts:1508](https://github.com/maiyunnet/kebab/blob/master/sys
135070
135442
 
135071
135443
  > **filter**(`s`): `this`
135072
135444
 
135073
- Defined in: [sys/mod.ts:1731](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1731)
135445
+ Defined in: [sys/mod.ts:1830](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1830)
135074
135446
 
135075
135447
  筛选器
135076
135448
 
@@ -135108,7 +135480,7 @@ Defined in: [sys/mod.ts:1731](https://github.com/maiyunnet/kebab/blob/master/sys
135108
135480
 
135109
135481
  > **first**(`lock`, `array`): `Promise`\<`false` \| `Record`\<`string`, `any`\> \| `null`\>
135110
135482
 
135111
- Defined in: [sys/mod.ts:1091](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1091)
135483
+ Defined in: [sys/mod.ts:1099](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1099)
135112
135484
 
135113
135485
  ##### Parameters
135114
135486
 
@@ -135128,7 +135500,7 @@ Defined in: [sys/mod.ts:1091](https://github.com/maiyunnet/kebab/blob/master/sys
135128
135500
 
135129
135501
  > **first**(`lock?`, `array?`): `Promise`\<`false` \| `Mod` & `Record`\<`string`, `any`\> \| `null`\>
135130
135502
 
135131
- Defined in: [sys/mod.ts:1095](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1095)
135503
+ Defined in: [sys/mod.ts:1103](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1103)
135132
135504
 
135133
135505
  ##### Parameters
135134
135506
 
@@ -135150,7 +135522,7 @@ Defined in: [sys/mod.ts:1095](https://github.com/maiyunnet/kebab/blob/master/sys
135150
135522
 
135151
135523
  > **firstArray**(`lock?`): `Promise`\<`false` \| `Record`\<`string`, `any`\> \| `null`\>
135152
135524
 
135153
- Defined in: [sys/mod.ts:1135](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1135)
135525
+ Defined in: [sys/mod.ts:1143](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1143)
135154
135526
 
135155
135527
  获取数据库第一个原生对象
135156
135528
 
@@ -135172,7 +135544,7 @@ Defined in: [sys/mod.ts:1135](https://github.com/maiyunnet/kebab/blob/master/sys
135172
135544
 
135173
135545
  > **format**(`sql?`, `data?`): `string`
135174
135546
 
135175
- Defined in: [sys/mod.ts:1833](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1833)
135547
+ Defined in: [sys/mod.ts:1932](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1932)
135176
135548
 
135177
135549
  获取带 data 的 sql 语句
135178
135550
 
@@ -135200,7 +135572,7 @@ sql 语句
135200
135572
 
135201
135573
  > **fullJoin**(`f`, `s`, `index?`, `pre?`): `this`
135202
135574
 
135203
- Defined in: [sys/mod.ts:1673](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1673)
135575
+ Defined in: [sys/mod.ts:1772](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1772)
135204
135576
 
135205
135577
  full join 方法
135206
135578
 
@@ -135240,7 +135612,7 @@ ON 信息
135240
135612
 
135241
135613
  > **get**(`n`): `any`
135242
135614
 
135243
- Defined in: [sys/mod.ts:873](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L873)
135615
+ Defined in: [sys/mod.ts:881](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L881)
135244
135616
 
135245
135617
  获取一个字段值
135246
135618
 
@@ -135262,7 +135634,7 @@ Defined in: [sys/mod.ts:873](https://github.com/maiyunnet/kebab/blob/master/sys/
135262
135634
 
135263
135635
  > **getData**(): `any`[]
135264
135636
 
135265
- Defined in: [sys/mod.ts:1824](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1824)
135637
+ Defined in: [sys/mod.ts:1923](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1923)
135266
135638
 
135267
135639
  获取全部 data
135268
135640
 
@@ -135276,7 +135648,7 @@ Defined in: [sys/mod.ts:1824](https://github.com/maiyunnet/kebab/blob/master/sys
135276
135648
 
135277
135649
  > **getSql**(): `string`
135278
135650
 
135279
- Defined in: [sys/mod.ts:1817](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1817)
135651
+ Defined in: [sys/mod.ts:1916](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1916)
135280
135652
 
135281
135653
  获取 sql 语句
135282
135654
 
@@ -135290,7 +135662,7 @@ Defined in: [sys/mod.ts:1817](https://github.com/maiyunnet/kebab/blob/master/sys
135290
135662
 
135291
135663
  > **group**(`c`): `this`
135292
135664
 
135293
- Defined in: [sys/mod.ts:1762](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1762)
135665
+ Defined in: [sys/mod.ts:1861](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1861)
135294
135666
 
135295
135667
  GROUP BY
135296
135668
 
@@ -135312,7 +135684,7 @@ GROUP BY
135312
135684
 
135313
135685
  > **having**(`s`): `this`
135314
135686
 
135315
- Defined in: [sys/mod.ts:1722](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1722)
135687
+ Defined in: [sys/mod.ts:1821](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1821)
135316
135688
 
135317
135689
  筛选器
135318
135690
 
@@ -135334,7 +135706,7 @@ Defined in: [sys/mod.ts:1722](https://github.com/maiyunnet/kebab/blob/master/sys
135334
135706
 
135335
135707
  > **hint**(`h`): `this`
135336
135708
 
135337
- Defined in: [sys/mod.ts:1713](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1713)
135709
+ Defined in: [sys/mod.ts:1812](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1812)
135338
135710
 
135339
135711
  设置 MySQL 优化器 Hint
135340
135712
  内容会以 Optimizer Hint 注释语法注入到 SELECT 关键字后
@@ -135379,7 +135751,7 @@ Hint 内容
135379
135751
 
135380
135752
  > **innerJoin**(`f`, `s`, `index?`, `pre?`): `this`
135381
135753
 
135382
- Defined in: [sys/mod.ts:1661](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1661)
135754
+ Defined in: [sys/mod.ts:1760](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1760)
135383
135755
 
135384
135756
  inner join 方法
135385
135757
 
@@ -135419,7 +135791,7 @@ ON 信息
135419
135791
 
135420
135792
  > **join**(`f`, `s?`, `type?`, `index?`, `pre?`): `this`
135421
135793
 
135422
- Defined in: [sys/mod.ts:1625](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1625)
135794
+ Defined in: [sys/mod.ts:1724](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1724)
135423
135795
 
135424
135796
  #### Parameters
135425
135797
 
@@ -135463,7 +135835,7 @@ ON 信息
135463
135835
 
135464
135836
  > **langText**(`col`, `lang`): `string`
135465
135837
 
135466
- Defined in: [sys/mod.ts:1868](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1868)
135838
+ Defined in: [sys/mod.ts:1967](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1967)
135467
135839
 
135468
135840
  获取字段的可用语种文本
135469
135841
 
@@ -135491,7 +135863,7 @@ Defined in: [sys/mod.ts:1868](https://github.com/maiyunnet/kebab/blob/master/sys
135491
135863
 
135492
135864
  > **leftJoin**(`f`, `s`, `index?`, `pre?`): `this`
135493
135865
 
135494
- Defined in: [sys/mod.ts:1637](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1637)
135866
+ Defined in: [sys/mod.ts:1736](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1736)
135495
135867
 
135496
135868
  left join 方法
135497
135869
 
@@ -135531,7 +135903,7 @@ ON 信息
135531
135903
 
135532
135904
  > **limit**(`a`, `b?`): `this`
135533
135905
 
135534
- Defined in: [sys/mod.ts:1775](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1775)
135906
+ Defined in: [sys/mod.ts:1874](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1874)
135535
135907
 
135536
135908
  LIMIT
135537
135909
 
@@ -135559,7 +135931,7 @@ LIMIT
135559
135931
 
135560
135932
  > **page**(`count`, `page?`): `this`
135561
135933
 
135562
- Defined in: [sys/mod.ts:1786](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1786)
135934
+ Defined in: [sys/mod.ts:1885](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1885)
135563
135935
 
135564
135936
  分页
135565
135937
 
@@ -135587,7 +135959,7 @@ Defined in: [sys/mod.ts:1786](https://github.com/maiyunnet/kebab/blob/master/sys
135587
135959
 
135588
135960
  > **refresh**(`lock?`): `Promise`\<`boolean` \| `null`\>
135589
135961
 
135590
- Defined in: [sys/mod.ts:1003](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1003)
135962
+ Defined in: [sys/mod.ts:1011](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1011)
135591
135963
 
135592
135964
  刷新当前模型获取最新数据
135593
135965
 
@@ -135609,7 +135981,7 @@ Defined in: [sys/mod.ts:1003](https://github.com/maiyunnet/kebab/blob/master/sys
135609
135981
 
135610
135982
  > **remove**(): `Promise`\<`boolean`\>
135611
135983
 
135612
- Defined in: [sys/mod.ts:1069](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1069)
135984
+ Defined in: [sys/mod.ts:1077](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1077)
135613
135985
 
135614
135986
  移除本条目
135615
135987
 
@@ -135623,7 +135995,7 @@ Defined in: [sys/mod.ts:1069](https://github.com/maiyunnet/kebab/blob/master/sys
135623
135995
 
135624
135996
  > **rightJoin**(`f`, `s`, `index?`, `pre?`): `this`
135625
135997
 
135626
- Defined in: [sys/mod.ts:1649](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1649)
135998
+ Defined in: [sys/mod.ts:1748](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1748)
135627
135999
 
135628
136000
  right join 方法
135629
136001
 
@@ -135663,7 +136035,7 @@ ON 信息
135663
136035
 
135664
136036
  > **save**(`where?`): `Promise`\<`boolean`\>
135665
136037
 
135666
- Defined in: [sys/mod.ts:1035](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1035)
136038
+ Defined in: [sys/mod.ts:1043](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1043)
135667
136039
 
135668
136040
  更新 set 的数据到数据库,有未保存数据时才保存
135669
136041
 
@@ -135701,7 +136073,7 @@ Defined in: [sys/mod.ts:1035](https://github.com/maiyunnet/kebab/blob/master/sys
135701
136073
 
135702
136074
  > **set**\<`T`, `TK`\>(`n`): `void`
135703
136075
 
135704
- Defined in: [sys/mod.ts:838](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L838)
136076
+ Defined in: [sys/mod.ts:846](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L846)
135705
136077
 
135706
136078
  ##### Type Parameters
135707
136079
 
@@ -135727,7 +136099,7 @@ Defined in: [sys/mod.ts:838](https://github.com/maiyunnet/kebab/blob/master/sys/
135727
136099
 
135728
136100
  > **set**\<`T`, `TK`\>(`n`, `v`): `void`
135729
136101
 
135730
- Defined in: [sys/mod.ts:839](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L839)
136102
+ Defined in: [sys/mod.ts:847](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L847)
135731
136103
 
135732
136104
  ##### Type Parameters
135733
136105
 
@@ -135759,7 +136131,7 @@ Defined in: [sys/mod.ts:839](https://github.com/maiyunnet/kebab/blob/master/sys/
135759
136131
 
135760
136132
  > **toArray**\<`TC`\>(): [`TOnlyProperties`](../type-aliases/TOnlyProperties.md)\<`InstanceType`\<`TC`\>\> & `Record`\<`string`, `any`\>
135761
136133
 
135762
- Defined in: [sys/mod.ts:1840](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1840)
136134
+ Defined in: [sys/mod.ts:1939](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1939)
135763
136135
 
135764
136136
  获取值对象,获取的是新创建的数组
135765
136137
 
@@ -135779,7 +136151,7 @@ Defined in: [sys/mod.ts:1840](https://github.com/maiyunnet/kebab/blob/master/sys
135779
136151
 
135780
136152
  > **total**(`f?`): `Promise`\<`number`\>
135781
136153
 
135782
- Defined in: [sys/mod.ts:1565](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1565)
136154
+ Defined in: [sys/mod.ts:1573](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1573)
135783
136155
 
135784
136156
  获取总条数,自动抛弃 LIMIT,仅用于获取数据的情况(select)
135785
136157
 
@@ -135795,11 +136167,28 @@ Defined in: [sys/mod.ts:1565](https://github.com/maiyunnet/kebab/blob/master/sys
135795
136167
 
135796
136168
  ***
135797
136169
 
136170
+ ### totalEstimate()
136171
+
136172
+ > **totalEstimate**(): `Promise`\<`number` \| `false`\>
136173
+
136174
+ Defined in: [sys/mod.ts:1599](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1599)
136175
+
136176
+ 从 PostgreSQL 执行计划估算查询总行数,移除外层排序和分页,不执行数据扫描
136177
+ 请在应用游标条件前调用;非 PostgreSQL、框架分表联查或查询失败返回 false,绝不回退到 COUNT
136178
+
136179
+ #### Returns
136180
+
136181
+ `Promise`\<`number` \| `false`\>
136182
+
136183
+ 近似行数或 false;估算可能偏差很大,不能用于判断有无下一批
136184
+
136185
+ ***
136186
+
135798
136187
  ### union()
135799
136188
 
135800
136189
  > **union**(`f`, `type?`): `this`
135801
136190
 
135802
- Defined in: [sys/mod.ts:1146](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1146)
136191
+ Defined in: [sys/mod.ts:1154](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1154)
135803
136192
 
135804
136193
  联合查询表数据
135805
136194
 
@@ -135827,7 +136216,7 @@ Defined in: [sys/mod.ts:1146](https://github.com/maiyunnet/kebab/blob/master/sys
135827
136216
 
135828
136217
  > **unionAll**(`f`): `this`
135829
136218
 
135830
- Defined in: [sys/mod.ts:1176](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1176)
136219
+ Defined in: [sys/mod.ts:1184](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1184)
135831
136220
 
135832
136221
  所有联合查询表数据
135833
136222
 
@@ -135849,7 +136238,7 @@ Defined in: [sys/mod.ts:1176](https://github.com/maiyunnet/kebab/blob/master/sys
135849
136238
 
135850
136239
  > **unsaved**(): `boolean`
135851
136240
 
135852
- Defined in: [sys/mod.ts:1859](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1859)
136241
+ Defined in: [sys/mod.ts:1958](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1958)
135853
136242
 
135854
136243
  当前是否设置了未保存 --=
135855
136244
 
@@ -135863,7 +136252,7 @@ Defined in: [sys/mod.ts:1859](https://github.com/maiyunnet/kebab/blob/master/sys
135863
136252
 
135864
136253
  > **updates**(): `Record`\<`string`, `any`\>
135865
136254
 
135866
- Defined in: [sys/mod.ts:1848](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1848)
136255
+ Defined in: [sys/mod.ts:1947](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1947)
135867
136256
 
135868
136257
  获取当前设置要提交的数据
135869
136258
 
@@ -135877,7 +136266,7 @@ Defined in: [sys/mod.ts:1848](https://github.com/maiyunnet/kebab/blob/master/sys
135877
136266
 
135878
136267
  > **upsert**(`conflict`): `Promise`\<`boolean`\>
135879
136268
 
135880
- Defined in: [sys/mod.ts:972](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L972)
136269
+ Defined in: [sys/mod.ts:980](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L980)
135881
136270
 
135882
136271
  插入数据,如果存在则更新(UPSERT)
135883
136272
 
@@ -135899,7 +136288,7 @@ Defined in: [sys/mod.ts:972](https://github.com/maiyunnet/kebab/blob/master/sys/
135899
136288
 
135900
136289
  > **where**(`s`): `this`
135901
136290
 
135902
- Defined in: [sys/mod.ts:1742](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1742)
136291
+ Defined in: [sys/mod.ts:1841](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1841)
135903
136292
 
135904
136293
  是 filter 的别名
135905
136294
 
@@ -135921,7 +136310,7 @@ Defined in: [sys/mod.ts:1742](https://github.com/maiyunnet/kebab/blob/master/sys
135921
136310
 
135922
136311
  > `static` **column**(`field`): `object`
135923
136312
 
135924
- Defined in: [sys/mod.ts:185](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L185)
136313
+ Defined in: [sys/mod.ts:193](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L193)
135925
136314
 
135926
136315
  创建字段对象
135927
136316
 
@@ -135953,7 +136342,7 @@ Defined in: [sys/mod.ts:185](https://github.com/maiyunnet/kebab/blob/master/sys/
135953
136342
 
135954
136343
  > `static` **find**\<`T`\>(`db`, `val`, `opt?`): `Promise`\<`false` \| `T` & `Record`\<`string`, `any`\> \| `null`\>
135955
136344
 
135956
- Defined in: [sys/mod.ts:634](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L634)
136345
+ Defined in: [sys/mod.ts:642](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L642)
135957
136346
 
135958
136347
  根据主键(或 key 字段)获取对象
135959
136348
 
@@ -136017,7 +136406,7 @@ Defined in: [sys/mod.ts:634](https://github.com/maiyunnet/kebab/blob/master/sys/
136017
136406
 
136018
136407
  > `static` **getCreate**\<`T`\>(`db`, `opt?`): `T`
136019
136408
 
136020
- Defined in: [sys/mod.ts:616](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L616)
136409
+ Defined in: [sys/mod.ts:624](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L624)
136021
136410
 
136022
136411
  获取创建对象,通常用于新建数据库条目
136023
136412
 
@@ -136061,7 +136450,7 @@ Defined in: [sys/mod.ts:616](https://github.com/maiyunnet/kebab/blob/master/sys/
136061
136450
 
136062
136451
  > `static` **insert**(`db`, `cs`, `vs?`, `opt?`): `Promise`\<`boolean` \| `null`\>
136063
136452
 
136064
- Defined in: [sys/mod.ts:214](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L214)
136453
+ Defined in: [sys/mod.ts:222](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L222)
136065
136454
 
136066
136455
  添加一个序列(允许超过 65536 的占位符会被拆分多次执行)
136067
136456
 
@@ -136115,7 +136504,7 @@ Defined in: [sys/mod.ts:214](https://github.com/maiyunnet/kebab/blob/master/sys/
136115
136504
 
136116
136505
  > `static` **insertSql**(`db`, `cs`, `vs?`, `opt?`): `string`
136117
136506
 
136118
- Defined in: [sys/mod.ts:274](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L274)
136507
+ Defined in: [sys/mod.ts:282](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L282)
136119
136508
 
136120
136509
  获取添加一个序列的模拟 SQL
136121
136510
 
@@ -136169,7 +136558,7 @@ Defined in: [sys/mod.ts:274](https://github.com/maiyunnet/kebab/blob/master/sys/
136169
136558
 
136170
136559
  > `static` **json**\<`T`\>(`obj`): `T`
136171
136560
 
136172
- Defined in: [sys/mod.ts:203](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L203)
136561
+ Defined in: [sys/mod.ts:211](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L211)
136173
136562
 
136174
136563
  标记 JSON 字段;模型内保持原始对象,写入数据库时再序列化
136175
136564
 
@@ -136217,7 +136606,7 @@ Defined in: [sys/mod.ts:203](https://github.com/maiyunnet/kebab/blob/master/sys/
136217
136606
 
136218
136607
  > `static` **one**(`db`, `s`, `opt`): `Promise`\<`false` \| `Record`\<`string`, `any`\> \| `null`\>
136219
136608
 
136220
- Defined in: [sys/mod.ts:663](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L663)
136609
+ Defined in: [sys/mod.ts:671](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L671)
136221
136610
 
136222
136611
  ##### Parameters
136223
136612
 
@@ -136271,7 +136660,7 @@ Defined in: [sys/mod.ts:663](https://github.com/maiyunnet/kebab/blob/master/sys/
136271
136660
 
136272
136661
  > `static` **one**\<`T`\>(`db`, `s`, `opt?`): `Promise`\<`false` \| `T` & `Record`\<`string`, `any`\> \| `null`\>
136273
136662
 
136274
- Defined in: [sys/mod.ts:677](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L677)
136663
+ Defined in: [sys/mod.ts:685](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L685)
136275
136664
 
136276
136665
  ##### Type Parameters
136277
136666
 
@@ -136333,7 +136722,7 @@ Defined in: [sys/mod.ts:677](https://github.com/maiyunnet/kebab/blob/master/sys/
136333
136722
 
136334
136723
  > `static` **oneArray**(`db`, `s`, `opt?`): `Promise`\<`false` \| `Record`\<`string`, `any`\> \| `null`\>
136335
136724
 
136336
- Defined in: [sys/mod.ts:758](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L758)
136725
+ Defined in: [sys/mod.ts:766](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L766)
136337
136726
 
136338
136727
  通过 where 条件筛选单条数据返回原生对象
136339
136728
 
@@ -136389,7 +136778,7 @@ Defined in: [sys/mod.ts:758](https://github.com/maiyunnet/kebab/blob/master/sys/
136389
136778
 
136390
136779
  > `static` **primarys**(`db`, `where?`, `opt?`): `Promise`\<`false` \| `any`[]\>
136391
136780
 
136392
- Defined in: [sys/mod.ts:780](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L780)
136781
+ Defined in: [sys/mod.ts:788](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L788)
136393
136782
 
136394
136783
  根据 where 条件获取主键值列表
136395
136784
 
@@ -136433,7 +136822,7 @@ where 条件
136433
136822
 
136434
136823
  > `static` **removeByWhere**(`db`, `where`, `opt?`): `Promise`\<`number` \| `false` \| `null`\>
136435
136824
 
136436
- Defined in: [sys/mod.ts:300](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L300)
136825
+ Defined in: [sys/mod.ts:308](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L308)
136437
136826
 
136438
136827
  根据条件移除条目
136439
136828
 
@@ -136485,7 +136874,7 @@ Defined in: [sys/mod.ts:300](https://github.com/maiyunnet/kebab/blob/master/sys/
136485
136874
 
136486
136875
  > `static` **removeByWhereSql**(`db`, `where`, `opt?`): [`Sql`](../../../lib/sql/classes/Sql.md)
136487
136876
 
136488
- Defined in: [sys/mod.ts:344](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L344)
136877
+ Defined in: [sys/mod.ts:352](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L352)
136489
136878
 
136490
136879
  根据条件移除条目(仅获取 SQL 对象)
136491
136880
 
@@ -136537,7 +136926,7 @@ Defined in: [sys/mod.ts:344](https://github.com/maiyunnet/kebab/blob/master/sys/
136537
136926
 
136538
136927
  > `static` **select**\<`T`\>(`db`, `c`, `opt?`): `T` & `Record`\<`string`, `any`\>
136539
136928
 
136540
- Defined in: [sys/mod.ts:553](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L553)
136929
+ Defined in: [sys/mod.ts:561](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L561)
136541
136930
 
136542
136931
  select 自定字段
136543
136932
 
@@ -136607,7 +136996,7 @@ select 自定字段
136607
136996
 
136608
136997
  > `static` **toArrayByRecord**\<`T`\>(`obj`): `Record`\<`string`, `Record`\<`string`, `any`\>\>
136609
136998
 
136610
- Defined in: [sys/mod.ts:807](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L807)
136999
+ Defined in: [sys/mod.ts:815](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L815)
136611
137000
 
136612
137001
  将 key val 组成的数据列表转换为原生对象模式,获取的是新创建的数组
136613
137002
 
@@ -136635,7 +137024,7 @@ Defined in: [sys/mod.ts:807](https://github.com/maiyunnet/kebab/blob/master/sys/
136635
137024
 
136636
137025
  > `static` **updateByWhere**(`db`, `data`, `where`, `opt?`): `Promise`\<`number` \| `false` \| `null`\>
136637
137026
 
136638
- Defined in: [sys/mod.ts:377](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L377)
137027
+ Defined in: [sys/mod.ts:385](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L385)
136639
137028
 
136640
137029
  根据条件更新数据
136641
137030
 
@@ -136693,7 +137082,7 @@ Defined in: [sys/mod.ts:377](https://github.com/maiyunnet/kebab/blob/master/sys/
136693
137082
 
136694
137083
  > `static` **updateByWhereSql**(`db`, `data`, `where`, `opt?`): [`Sql`](../../../lib/sql/classes/Sql.md)
136695
137084
 
136696
- Defined in: [sys/mod.ts:423](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L423)
137085
+ Defined in: [sys/mod.ts:431](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L431)
136697
137086
 
136698
137087
  根据条件更新数据(仅获取 SQL 对象)
136699
137088
 
@@ -136751,7 +137140,7 @@ Defined in: [sys/mod.ts:423](https://github.com/maiyunnet/kebab/blob/master/sys/
136751
137140
 
136752
137141
  > `static` **updateList**(`db`, `data`, `key`, `opt?`): `Promise`\<`boolean` \| `null`\>
136753
137142
 
136754
- Defined in: [sys/mod.ts:461](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L461)
137143
+ Defined in: [sys/mod.ts:469](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L469)
136755
137144
 
136756
137145
  批量更新数据
136757
137146
 
@@ -136809,7 +137198,7 @@ Defined in: [sys/mod.ts:461](https://github.com/maiyunnet/kebab/blob/master/sys/
136809
137198
 
136810
137199
  > `static` **value**(`val`): `object`
136811
137200
 
136812
- Defined in: [sys/mod.ts:194](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L194)
137201
+ Defined in: [sys/mod.ts:202](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L202)
136813
137202
 
136814
137203
  创建字面量值对象,用于 where 条件中 v[0] 需要是值而非字段名的场景
136815
137204
 
@@ -136841,7 +137230,7 @@ Defined in: [sys/mod.ts:194](https://github.com/maiyunnet/kebab/blob/master/sys/
136841
137230
 
136842
137231
  > `static` **where**\<`T`\>(`db`, `s?`, `opt?`): `T` & `Record`\<`string`, `any`\>
136843
137232
 
136844
- Defined in: [sys/mod.ts:585](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L585)
137233
+ Defined in: [sys/mod.ts:593](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L593)
136845
137234
 
136846
137235
  通过 where 条件获取模型
136847
137236
 
@@ -136916,7 +137305,7 @@ sys/mod/classes/Rows.md
136916
137305
 
136917
137306
  # Class: Rows\<T\>
136918
137307
 
136919
- Defined in: [sys/mod.ts:20](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L20)
137308
+ Defined in: [sys/mod.ts:28](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L28)
136920
137309
 
136921
137310
  条数列表
136922
137311
 
@@ -136936,7 +137325,7 @@ Defined in: [sys/mod.ts:20](https://github.com/maiyunnet/kebab/blob/master/sys/m
136936
137325
 
136937
137326
  > **new Rows**\<`T`\>(`initialItems?`): `Rows`\<`T`\>
136938
137327
 
136939
- Defined in: [sys/mod.ts:24](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L24)
137328
+ Defined in: [sys/mod.ts:32](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L32)
136940
137329
 
136941
137330
  #### Parameters
136942
137331
 
@@ -136956,7 +137345,7 @@ Defined in: [sys/mod.ts:24](https://github.com/maiyunnet/kebab/blob/master/sys/m
136956
137345
 
136957
137346
  > **get** **length**(): `number`
136958
137347
 
136959
- Defined in: [sys/mod.ts:29](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L29)
137348
+ Defined in: [sys/mod.ts:37](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L37)
136960
137349
 
136961
137350
  总行数
136962
137351
 
@@ -136974,7 +137363,7 @@ Defined in: [sys/mod.ts:29](https://github.com/maiyunnet/kebab/blob/master/sys/m
136974
137363
 
136975
137364
  > **\[iterator\]**(): `IterableIterator`\<`T`\>
136976
137365
 
136977
- Defined in: [sys/mod.ts:58](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L58)
137366
+ Defined in: [sys/mod.ts:66](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L66)
136978
137367
 
136979
137368
  for of
136980
137369
 
@@ -136992,7 +137381,7 @@ for of
136992
137381
 
136993
137382
  > **filter**(`predicate`): `Rows`\<`T`\>
136994
137383
 
136995
- Defined in: [sys/mod.ts:44](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L44)
137384
+ Defined in: [sys/mod.ts:52](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L52)
136996
137385
 
136997
137386
  根据规则筛掉项,predicate 返回 true 代表保留
136998
137387
 
@@ -137012,7 +137401,7 @@ Defined in: [sys/mod.ts:44](https://github.com/maiyunnet/kebab/blob/master/sys/m
137012
137401
 
137013
137402
  > **item**(`index`): `T`
137014
137403
 
137015
- Defined in: [sys/mod.ts:34](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L34)
137404
+ Defined in: [sys/mod.ts:42](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L42)
137016
137405
 
137017
137406
  通过索引获取一个对象
137018
137407
 
@@ -137036,7 +137425,7 @@ Defined in: [sys/mod.ts:34](https://github.com/maiyunnet/kebab/blob/master/sys/m
137036
137425
 
137037
137426
  > **map**\<`TU`\>(`callbackfn`): `TU`[]
137038
137427
 
137039
- Defined in: [sys/mod.ts:49](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L49)
137428
+ Defined in: [sys/mod.ts:57](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L57)
137040
137429
 
137041
137430
  重塑对象内容为数组
137042
137431
 
@@ -137062,7 +137451,7 @@ Defined in: [sys/mod.ts:49](https://github.com/maiyunnet/kebab/blob/master/sys/m
137062
137451
 
137063
137452
  > **toArray**(): `Record`\<`string`, `any`\>[]
137064
137453
 
137065
- Defined in: [sys/mod.ts:39](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L39)
137454
+ Defined in: [sys/mod.ts:47](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L47)
137066
137455
 
137067
137456
  转换为数组对象,获取的是新创建的数组
137068
137457
 
@@ -137092,6 +137481,7 @@ sys/mod/index.md
137092
137481
 
137093
137482
  ## Interfaces
137094
137483
 
137484
+ - [ICursorPage](interfaces/ICursorPage.md)
137095
137485
  - [IModUnionItem](interfaces/IModUnionItem.md)
137096
137486
  - [IRows](interfaces/IRows.md)
137097
137487
 
@@ -137099,6 +137489,59 @@ sys/mod/index.md
137099
137489
 
137100
137490
  - [TOnlyProperties](type-aliases/TOnlyProperties.md)
137101
137491
 
137492
+ sys/mod/interfaces/ICursorPage.md
137493
+ ---
137494
+
137495
+ [**Documents for @maiyunnet/kebab**](../../../index.md)
137496
+
137497
+ ***
137498
+
137499
+ [Documents for @maiyunnet/kebab](../../../index.md) / [sys/mod](../index.md) / ICursorPage
137500
+
137501
+ # Interface: ICursorPage\<T\>
137502
+
137503
+ Defined in: [sys/mod.ts:20](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L20)
137504
+
137505
+ 一批游标查询结果,hasMore 表示扫描方向上还有记录
137506
+
137507
+ ## Type Parameters
137508
+
137509
+ ### T
137510
+
137511
+ `T` *extends* `Record`\<`string`, `unknown`\> = `Record`\<`string`, `unknown`\>
137512
+
137513
+ ## Properties
137514
+
137515
+ ### hasMore
137516
+
137517
+ > **hasMore**: `boolean`
137518
+
137519
+ Defined in: [sys/mod.ts:22](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L22)
137520
+
137521
+ ***
137522
+
137523
+ ### list
137524
+
137525
+ > **list**: `T`[]
137526
+
137527
+ Defined in: [sys/mod.ts:21](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L21)
137528
+
137529
+ ***
137530
+
137531
+ ### next
137532
+
137533
+ > **next**: [`TCursorValue`](../../../lib/sql/type-aliases/TCursorValue.md)[] \| `null`
137534
+
137535
+ Defined in: [sys/mod.ts:23](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L23)
137536
+
137537
+ ***
137538
+
137539
+ ### previous
137540
+
137541
+ > **previous**: [`TCursorValue`](../../../lib/sql/type-aliases/TCursorValue.md)[] \| `null`
137542
+
137543
+ Defined in: [sys/mod.ts:24](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L24)
137544
+
137102
137545
  sys/mod/interfaces/IModUnionItem.md
137103
137546
  ---
137104
137547
 
@@ -137110,7 +137553,7 @@ sys/mod/interfaces/IModUnionItem.md
137110
137553
 
137111
137554
  # Interface: IModUnionItem
137112
137555
 
137113
- Defined in: [sys/mod.ts:1902](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1902)
137556
+ Defined in: [sys/mod.ts:2001](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L2001)
137114
137557
 
137115
137558
  ## Properties
137116
137559
 
@@ -137118,7 +137561,7 @@ Defined in: [sys/mod.ts:1902](https://github.com/maiyunnet/kebab/blob/master/sys
137118
137561
 
137119
137562
  > **field**: `string`
137120
137563
 
137121
- Defined in: [sys/mod.ts:1903](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1903)
137564
+ Defined in: [sys/mod.ts:2002](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L2002)
137122
137565
 
137123
137566
  ***
137124
137567
 
@@ -137126,7 +137569,7 @@ Defined in: [sys/mod.ts:1903](https://github.com/maiyunnet/kebab/blob/master/sys
137126
137569
 
137127
137570
  > `optional` **where?**: `any`
137128
137571
 
137129
- Defined in: [sys/mod.ts:1904](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1904)
137572
+ Defined in: [sys/mod.ts:2003](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L2003)
137130
137573
 
137131
137574
  sys/mod/interfaces/IRows.md
137132
137575
  ---
@@ -137139,7 +137582,7 @@ sys/mod/interfaces/IRows.md
137139
137582
 
137140
137583
  # Interface: IRows\<T\>
137141
137584
 
137142
- Defined in: [sys/mod.ts:1896](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1896)
137585
+ Defined in: [sys/mod.ts:1995](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1995)
137143
137586
 
137144
137587
  ## Extends
137145
137588
 
@@ -137157,7 +137600,7 @@ Defined in: [sys/mod.ts:1896](https://github.com/maiyunnet/kebab/blob/master/sys
137157
137600
 
137158
137601
  > `readonly` **length**: `number`
137159
137602
 
137160
- Defined in: [sys/mod.ts:1897](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1897)
137603
+ Defined in: [sys/mod.ts:1996](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1996)
137161
137604
 
137162
137605
  ## Methods
137163
137606
 
@@ -137165,7 +137608,7 @@ Defined in: [sys/mod.ts:1897](https://github.com/maiyunnet/kebab/blob/master/sys
137165
137608
 
137166
137609
  > **item**(`index`): `T`
137167
137610
 
137168
- Defined in: [sys/mod.ts:1898](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1898)
137611
+ Defined in: [sys/mod.ts:1997](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1997)
137169
137612
 
137170
137613
  #### Parameters
137171
137614
 
@@ -137183,7 +137626,7 @@ Defined in: [sys/mod.ts:1898](https://github.com/maiyunnet/kebab/blob/master/sys
137183
137626
 
137184
137627
  > **toArray**(): `Record`\<`string`, `any`\>[]
137185
137628
 
137186
- Defined in: [sys/mod.ts:1899](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1899)
137629
+ Defined in: [sys/mod.ts:1998](https://github.com/maiyunnet/kebab/blob/master/sys/mod.ts#L1998)
137187
137630
 
137188
137631
  #### Returns
137189
137632