@lovrabet/sdk 1.1.24 → 1.1.27-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -0
- package/dist/index.js +1 -1
- package/dist/src/client/client.d.ts +18 -0
- package/dist/src/models/abstract-base-model.d.ts +11 -4
- package/dist/src/models/model-factory.d.ts +6 -2
- package/dist/src/models/model-manager.d.ts +69 -3
- package/dist/src/types/index.d.ts +57 -15
- package/package.json +1 -1
|
@@ -74,6 +74,24 @@ export declare class LovrabetClient implements ILovrabetClient {
|
|
|
74
74
|
* 2. 支持动态获取配置中的所有模型
|
|
75
75
|
*/
|
|
76
76
|
getModelList(): string[];
|
|
77
|
+
/**
|
|
78
|
+
* 获取所有模型的详细信息,包含别名和名称
|
|
79
|
+
* 用于 UI 展示人类友好的模型列表
|
|
80
|
+
*
|
|
81
|
+
* @returns 模型详情数组,每个元素包含:
|
|
82
|
+
* - value: 用于访问的 dataset_xxx 格式
|
|
83
|
+
* - label: 人类友好的显示名称,格式为 "alias[name]" 或 "dataset_xxx"
|
|
84
|
+
* - alias: 别名(如果有)
|
|
85
|
+
* - name: 模型名称(如果有)
|
|
86
|
+
* - datasetCode: 原始 datasetCode
|
|
87
|
+
*/
|
|
88
|
+
getModelListDetails(): Array<{
|
|
89
|
+
value: string;
|
|
90
|
+
label: string;
|
|
91
|
+
alias?: string;
|
|
92
|
+
name?: string;
|
|
93
|
+
datasetCode: string;
|
|
94
|
+
}>;
|
|
77
95
|
/**
|
|
78
96
|
* 根据索引或名称获取模型实例
|
|
79
97
|
* 为什么提供这个方法:
|
|
@@ -5,13 +5,22 @@ import type { HttpClient } from '../http/http-client';
|
|
|
5
5
|
* 定义所有模型的通用接口和基础实现
|
|
6
6
|
*/
|
|
7
7
|
export declare abstract class AbstractBaseModel implements BaseModelMethods {
|
|
8
|
+
/** 数据集代码(用于 API 调用) */
|
|
9
|
+
protected datasetCode: string;
|
|
10
|
+
/** @deprecated 使用 datasetCode 代替 */
|
|
8
11
|
protected modelName: string;
|
|
9
12
|
protected httpClient: HttpClient;
|
|
10
13
|
protected config: ModelConfig;
|
|
11
14
|
protected appCode: string;
|
|
12
15
|
protected globalConfig: ClientConfig;
|
|
13
|
-
|
|
14
|
-
|
|
16
|
+
/**
|
|
17
|
+
* 构造函数
|
|
18
|
+
* @param datasetCode 数据集代码
|
|
19
|
+
* @param httpClient HTTP 客户端
|
|
20
|
+
* @param globalConfig 全局配置
|
|
21
|
+
* @param modelConfig 模型配置(直接传入,不再从 globalConfig 中查找)
|
|
22
|
+
*/
|
|
23
|
+
constructor(datasetCode: string, httpClient: HttpClient, globalConfig: ClientConfig, modelConfig: ModelConfig);
|
|
15
24
|
protected abstract getApiPath(method: string): string;
|
|
16
25
|
protected abstract buildRequestBody(method: string, data: any, sortList?: SortList): any;
|
|
17
26
|
getList<T = any>(params?: ListParams, sortList?: SortList): Promise<ListResponse<T>>;
|
|
@@ -20,10 +29,8 @@ export declare abstract class AbstractBaseModel implements BaseModelMethods {
|
|
|
20
29
|
create<T = any>(data: Record<string, any>): Promise<T>;
|
|
21
30
|
update<T = any>(id: string | number, data: Record<string, any>): Promise<T>;
|
|
22
31
|
delete(id: string | number): Promise<void>;
|
|
23
|
-
getDatasetList<T = any>(): Promise<T[]>;
|
|
24
32
|
getSelectOptions(params: SelectOptionsParams): Promise<SelectOption[]>;
|
|
25
33
|
excelExport<T = any>(params?: ListParams): Promise<T>;
|
|
26
|
-
private isOpenApiMode;
|
|
27
34
|
getConfig(): ModelConfig;
|
|
28
35
|
getModelName(): string;
|
|
29
36
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BaseModelMethods, ClientConfig } from '../types';
|
|
1
|
+
import type { BaseModelMethods, ClientConfig, ModelConfig } from '../types';
|
|
2
2
|
import type { HttpClient } from '../http/http-client';
|
|
3
3
|
/**
|
|
4
4
|
* 模型工厂类
|
|
@@ -7,8 +7,12 @@ import type { HttpClient } from '../http/http-client';
|
|
|
7
7
|
export declare class ModelFactory {
|
|
8
8
|
/**
|
|
9
9
|
* 创建模型实例
|
|
10
|
+
* @param datasetCode 数据集代码(作为模型标识)
|
|
11
|
+
* @param httpClient HTTP 客户端
|
|
12
|
+
* @param globalConfig 全局配置
|
|
13
|
+
* @param modelConfig 模型配置(直接传入,不再从 globalConfig 中查找)
|
|
10
14
|
*/
|
|
11
|
-
static createModel(
|
|
15
|
+
static createModel(datasetCode: string, httpClient: HttpClient, globalConfig: ClientConfig, modelConfig: ModelConfig): BaseModelMethods;
|
|
12
16
|
/**
|
|
13
17
|
* 判断是否为 OpenAPI 模式
|
|
14
18
|
*/
|
|
@@ -1,17 +1,83 @@
|
|
|
1
|
-
import type { ModelManager as IModelManager, ClientConfig, BaseModelMethods } from '../types';
|
|
1
|
+
import type { ModelManager as IModelManager, ClientConfig, BaseModelMethods, ModelConfig } from '../types';
|
|
2
2
|
import type { HttpClient } from '../http/http-client';
|
|
3
|
+
/**
|
|
4
|
+
* 模型管理器
|
|
5
|
+
*
|
|
6
|
+
* 支持三种访问方式:
|
|
7
|
+
* 1. dataset_{datasetCode} - 标准方式,直接通过 datasetCode 访问
|
|
8
|
+
* 2. alias - 通过配置的别名访问
|
|
9
|
+
* 3. key(老格式)- 通过对象配置的 key 访问(key 作为默认 alias)
|
|
10
|
+
*/
|
|
3
11
|
export declare class ModelManager implements IModelManager {
|
|
4
12
|
private httpClient;
|
|
5
13
|
private config;
|
|
6
14
|
private modelCache;
|
|
15
|
+
private datasetCodeMap;
|
|
16
|
+
private aliasMap;
|
|
7
17
|
constructor(httpClient: HttpClient, config: ClientConfig);
|
|
8
|
-
|
|
18
|
+
/**
|
|
19
|
+
* 构建内部映射表
|
|
20
|
+
*/
|
|
21
|
+
private buildMaps;
|
|
22
|
+
/**
|
|
23
|
+
* 解析访问名称,返回 datasetCode
|
|
24
|
+
* @param accessName 访问名称,可能是 dataset_{datasetCode} 格式或 alias
|
|
25
|
+
*
|
|
26
|
+
* 支持两种访问方式:
|
|
27
|
+
* 1. dataset_{datasetCode} - 标准格式,明确表示这是一个 datasetCode
|
|
28
|
+
* 2. alias - 通过别名访问(老格式中 key 作为默认 alias)
|
|
29
|
+
*/
|
|
30
|
+
private resolveDatasetCode;
|
|
31
|
+
/**
|
|
32
|
+
* 通过 datasetCode 获取模型实例
|
|
33
|
+
*/
|
|
34
|
+
private getModelByDatasetCode;
|
|
9
35
|
getCachedModels(): string[];
|
|
10
36
|
clearCache(): void;
|
|
11
|
-
|
|
37
|
+
/**
|
|
38
|
+
* 动态添加模型配置
|
|
39
|
+
* 支持两种调用方式:
|
|
40
|
+
* 1. addModel(modelConfig) - 新格式
|
|
41
|
+
* 2. addModel(name, config) - 老格式(向下兼容)
|
|
42
|
+
*/
|
|
43
|
+
addModel(modelNameOrConfig: string | ModelConfig, config?: {
|
|
12
44
|
tableName: string;
|
|
13
45
|
datasetCode: string;
|
|
14
46
|
}): void;
|
|
47
|
+
/**
|
|
48
|
+
* 获取所有可用模型的 datasetCode 列表(带 dataset_ 前缀)
|
|
49
|
+
* 返回格式与访问方式一致,便于 AI/LLM 直接使用
|
|
50
|
+
*/
|
|
15
51
|
list(): string[];
|
|
52
|
+
/**
|
|
53
|
+
* 获取所有可用的别名列表
|
|
54
|
+
*/
|
|
55
|
+
listAliases(): string[];
|
|
56
|
+
/**
|
|
57
|
+
* 获取所有模型的详细信息,包含别名和名称
|
|
58
|
+
* 用于 UI 展示人类友好的模型列表
|
|
59
|
+
*
|
|
60
|
+
* @returns 模型详情数组,每个元素包含:
|
|
61
|
+
* - value: 用于访问的 dataset_xxx 格式
|
|
62
|
+
* - label: 人类友好的显示名称,格式为 "alias[name]" 或 "dataset_xxx"
|
|
63
|
+
* - alias: 别名(如果有)
|
|
64
|
+
* - name: 模型名称(如果有)
|
|
65
|
+
* - datasetCode: 原始 datasetCode
|
|
66
|
+
*/
|
|
67
|
+
listDetails(): Array<{
|
|
68
|
+
value: string;
|
|
69
|
+
label: string;
|
|
70
|
+
alias?: string;
|
|
71
|
+
name?: string;
|
|
72
|
+
datasetCode: string;
|
|
73
|
+
}>;
|
|
74
|
+
/**
|
|
75
|
+
* 根据索引、datasetCode 或 alias 获取模型实例
|
|
76
|
+
*
|
|
77
|
+
* 支持三种访问方式:
|
|
78
|
+
* 1. 数字索引 - 按 datasetCode 列表顺序获取
|
|
79
|
+
* 2. dataset_{datasetCode} - 直接通过 datasetCode 访问
|
|
80
|
+
* 3. alias - 通过别名访问
|
|
81
|
+
*/
|
|
16
82
|
get(indexOrName: number | string): BaseModelMethods;
|
|
17
83
|
}
|
|
@@ -176,16 +176,33 @@ export interface SelectOptionsParams {
|
|
|
176
176
|
export interface ModelConfig {
|
|
177
177
|
/** 数据表名称 */
|
|
178
178
|
tableName: string;
|
|
179
|
-
/**
|
|
179
|
+
/** 数据集代码(唯一标识) */
|
|
180
180
|
datasetCode: string;
|
|
181
181
|
/** 数据集名称 */
|
|
182
182
|
name?: string;
|
|
183
|
+
/** 别名,用于人类友好的访问方式(可选) */
|
|
184
|
+
alias?: string;
|
|
183
185
|
}
|
|
184
186
|
/**
|
|
185
187
|
* 模型配置集合接口
|
|
186
188
|
* @description 包含应用代码和所有模型配置的集合
|
|
189
|
+
*
|
|
190
|
+
* 支持两种格式:
|
|
191
|
+
* 1. 数组格式(推荐):ModelConfig[]
|
|
192
|
+
* 2. 对象格式(向下兼容):Record<string, ModelConfig>,key 作为默认 alias
|
|
193
|
+
*
|
|
187
194
|
* @example
|
|
188
195
|
* ```typescript
|
|
196
|
+
* // 新格式(数组)
|
|
197
|
+
* const config: ModelsConfig = {
|
|
198
|
+
* appCode: 'my-app',
|
|
199
|
+
* models: [
|
|
200
|
+
* { tableName: 'users', datasetCode: 'dataset_abc', alias: 'users' },
|
|
201
|
+
* { tableName: 'posts', datasetCode: 'dataset_def' }
|
|
202
|
+
* ]
|
|
203
|
+
* };
|
|
204
|
+
*
|
|
205
|
+
* // 老格式(对象,向下兼容)
|
|
189
206
|
* const config: ModelsConfig = {
|
|
190
207
|
* appCode: 'my-app',
|
|
191
208
|
* models: {
|
|
@@ -198,8 +215,12 @@ export interface ModelConfig {
|
|
|
198
215
|
export interface ModelsConfig {
|
|
199
216
|
/** 应用代码,用于标识不同的应用 */
|
|
200
217
|
appCode: string;
|
|
201
|
-
/**
|
|
202
|
-
|
|
218
|
+
/**
|
|
219
|
+
* 模型配置
|
|
220
|
+
* - 数组格式(推荐):直接使用 datasetCode 访问
|
|
221
|
+
* - 对象格式(兼容):key 作为默认 alias
|
|
222
|
+
*/
|
|
223
|
+
models: ModelConfig[] | Record<string, ModelConfig>;
|
|
203
224
|
}
|
|
204
225
|
/**
|
|
205
226
|
* 客户端配置接口
|
|
@@ -237,8 +258,12 @@ export interface ClientConfig {
|
|
|
237
258
|
secretKey?: string;
|
|
238
259
|
/** 是否需要认证,默认为 true */
|
|
239
260
|
requiresAuth?: boolean;
|
|
240
|
-
/**
|
|
241
|
-
|
|
261
|
+
/**
|
|
262
|
+
* 模型配置
|
|
263
|
+
* - 数组格式(推荐):直接使用 datasetCode 访问
|
|
264
|
+
* - 对象格式(兼容):key 作为默认 alias
|
|
265
|
+
*/
|
|
266
|
+
models?: ModelConfig[] | Record<string, ModelConfig>;
|
|
242
267
|
/**
|
|
243
268
|
* 引用已注册的 API 配置名称
|
|
244
269
|
* @description 当指定此字段时,会从配置注册表中获取对应的模型配置
|
|
@@ -334,13 +359,6 @@ export interface BaseModelMethods {
|
|
|
334
359
|
* @throws Error OpenAPI 模式暂不支持此操作,仅 WebAPI 模式可用
|
|
335
360
|
*/
|
|
336
361
|
delete(id: string | number): Promise<void>;
|
|
337
|
-
/**
|
|
338
|
-
* 获取数据集列表
|
|
339
|
-
* @template T 返回数据的类型
|
|
340
|
-
* @returns 返回数据集列表
|
|
341
|
-
* @description 获取当前应用下的所有数据集列表,主要用于 OpenAPI 模式
|
|
342
|
-
*/
|
|
343
|
-
getDatasetList<T = any>(): Promise<T[]>;
|
|
344
362
|
/**
|
|
345
363
|
* 获取下拉选项
|
|
346
364
|
* @param params 字段映射参数,指定用作 value 和 label 的字段名
|
|
@@ -406,13 +424,18 @@ export interface ModelManager {
|
|
|
406
424
|
clearCache(): void;
|
|
407
425
|
/**
|
|
408
426
|
* 动态添加模型配置
|
|
409
|
-
* @param
|
|
410
|
-
* @param config
|
|
427
|
+
* @param modelNameOrConfig 模型名称(老格式)或 ModelConfig(新格式)
|
|
428
|
+
* @param config 模型配置信息(老格式时使用)
|
|
411
429
|
*/
|
|
412
|
-
addModel(
|
|
430
|
+
addModel(modelNameOrConfig: string | ModelConfig, config?: {
|
|
413
431
|
tableName: string;
|
|
414
432
|
datasetCode: string;
|
|
415
433
|
}): void;
|
|
434
|
+
/**
|
|
435
|
+
* 获取所有可用的别名列表
|
|
436
|
+
* @returns 返回已配置的所有别名数组
|
|
437
|
+
*/
|
|
438
|
+
listAliases(): string[];
|
|
416
439
|
/**
|
|
417
440
|
* 获取所有可用模型列表
|
|
418
441
|
* @returns 返回已配置的所有模型名称数组
|
|
@@ -436,6 +459,25 @@ export interface ModelManager {
|
|
|
436
459
|
* ```
|
|
437
460
|
*/
|
|
438
461
|
get(indexOrName: number | string): BaseModelMethods;
|
|
462
|
+
/**
|
|
463
|
+
* 获取所有模型的详细信息,包含别名和名称
|
|
464
|
+
* @returns 模型详情数组,用于 UI 展示人类友好的模型列表
|
|
465
|
+
* @example
|
|
466
|
+
* ```typescript
|
|
467
|
+
* const details = client.getModelListDetails();
|
|
468
|
+
* // [
|
|
469
|
+
* // { value: 'dataset_xxx', label: 'projects[项目]', alias: 'projects', name: '项目', datasetCode: 'xxx' },
|
|
470
|
+
* // { value: 'dataset_yyy', label: 'dataset_yyy', datasetCode: 'yyy' }
|
|
471
|
+
* // ]
|
|
472
|
+
* ```
|
|
473
|
+
*/
|
|
474
|
+
listDetails(): Array<{
|
|
475
|
+
value: string;
|
|
476
|
+
label: string;
|
|
477
|
+
alias?: string;
|
|
478
|
+
name?: string;
|
|
479
|
+
datasetCode: string;
|
|
480
|
+
}>;
|
|
439
481
|
}
|
|
440
482
|
/**
|
|
441
483
|
* 认证请求头接口
|