@aiao/rxdb-adapter-pglite 0.0.5 → 0.0.7
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/dist/PGliteClient.d.ts +10 -4
- package/dist/PGliteClient.d.ts.map +1 -1
- package/dist/RxDBAdapterPGlite.d.ts +174 -19
- package/dist/RxDBAdapterPGlite.d.ts.map +1 -1
- package/dist/entity/delete_sql.d.ts +13 -0
- package/dist/entity/delete_sql.d.ts.map +1 -0
- package/dist/entity/deletes_sql.d.ts +11 -0
- package/dist/entity/deletes_sql.d.ts.map +1 -0
- package/dist/entity/insert_sql.d.ts +14 -0
- package/dist/entity/insert_sql.d.ts.map +1 -0
- package/dist/entity/inserts_sql.d.ts +12 -0
- package/dist/entity/inserts_sql.d.ts.map +1 -0
- package/dist/entity/update_sql.d.ts +15 -0
- package/dist/entity/update_sql.d.ts.map +1 -0
- package/dist/execute_helper.d.ts +70 -0
- package/dist/execute_helper.d.ts.map +1 -0
- package/dist/handle_rxdb_change.d.ts +26 -0
- package/dist/handle_rxdb_change.d.ts.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3116 -128
- package/dist/pglite.interface.d.ts +171 -2
- package/dist/pglite.interface.d.ts.map +1 -1
- package/dist/pglite.utils.d.ts +67 -5
- package/dist/pglite.utils.d.ts.map +1 -1
- package/dist/query/find_by_row_ids_sql.d.ts +15 -0
- package/dist/query/find_by_row_ids_sql.d.ts.map +1 -0
- package/dist/query/join_sql.d.ts +51 -0
- package/dist/query/join_sql.d.ts.map +1 -0
- package/dist/query/query_sql.d.ts +19 -0
- package/dist/query/query_sql.d.ts.map +1 -0
- package/dist/query/query_tree_sql.d.ts +36 -0
- package/dist/query/query_tree_sql.d.ts.map +1 -0
- package/dist/repository/PGliteRepository.d.ts +13 -0
- package/dist/repository/PGliteRepository.d.ts.map +1 -0
- package/dist/repository/PGliteRepositoryBase.d.ts +18 -0
- package/dist/repository/PGliteRepositoryBase.d.ts.map +1 -0
- package/dist/repository/PGliteTreeRepository.d.ts +13 -0
- package/dist/repository/PGliteTreeRepository.d.ts.map +1 -0
- package/dist/rxdb_adapter_mutations.d.ts +72 -0
- package/dist/rxdb_adapter_mutations.d.ts.map +1 -0
- package/dist/sql_dialect.d.ts +77 -0
- package/dist/sql_dialect.d.ts.map +1 -0
- package/dist/table/create_table_sql.d.ts +5 -0
- package/dist/table/create_table_sql.d.ts.map +1 -0
- package/dist/table/create_tables_sql.d.ts +31 -0
- package/dist/table/create_tables_sql.d.ts.map +1 -0
- package/dist/table/notify_function_sql.d.ts +46 -0
- package/dist/table/notify_function_sql.d.ts.map +1 -0
- package/dist/table/remove_trigger_sql.d.ts +41 -0
- package/dist/table/remove_trigger_sql.d.ts.map +1 -0
- package/dist/table/trigger_sql.d.ts +37 -0
- package/dist/table/trigger_sql.d.ts.map +1 -0
- package/dist/transaction_pglite_result.d.ts +102 -0
- package/dist/transaction_pglite_result.d.ts.map +1 -0
- package/dist/version/create_branch.d.ts +24 -0
- package/dist/version/create_branch.d.ts.map +1 -0
- package/dist/version/switch_transaction_id.d.ts +18 -0
- package/dist/version/switch_transaction_id.d.ts.map +1 -0
- package/package.json +7 -5
- package/dist/generate_table_create_sql.d.ts +0 -5
- package/dist/generate_table_create_sql.d.ts.map +0 -1
|
@@ -1,6 +1,175 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PGliteOptions } from '@electric-sql/pglite';
|
|
2
|
+
/**
|
|
3
|
+
* PGlite 适配器名称常量
|
|
4
|
+
*/
|
|
2
5
|
export declare const ADAPTER_NAME: "pglite";
|
|
3
|
-
|
|
6
|
+
/**
|
|
7
|
+
* PGlite 变更事件类型枚举
|
|
8
|
+
* 对应 PostgreSQL 的 TG_OP (trigger operation)
|
|
9
|
+
*/
|
|
10
|
+
export declare enum PGliteChangeType {
|
|
11
|
+
INSERT = "INSERT",
|
|
12
|
+
UPDATE = "UPDATE",
|
|
13
|
+
DELETE = "DELETE"
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* PGlite 通知 payload 结构
|
|
17
|
+
* 从 NOTIFY 消息中解析的数据
|
|
18
|
+
*/
|
|
19
|
+
export interface PGliteNotifyPayload {
|
|
20
|
+
/** 操作类型 */
|
|
21
|
+
operation: PGliteChangeType;
|
|
22
|
+
/** 表名 */
|
|
23
|
+
table: string;
|
|
24
|
+
/** 受影响的行 ID 数组 */
|
|
25
|
+
ids: Array<string | number>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* PGlite 变更事件
|
|
29
|
+
* 触发器通过 NOTIFY 发送的数据库变更事件
|
|
30
|
+
*/
|
|
31
|
+
export interface PGliteChangeEvent {
|
|
32
|
+
/** 事件类型 */
|
|
33
|
+
type: PGliteChangeType;
|
|
34
|
+
/** 数据库名称 */
|
|
35
|
+
dbName: string;
|
|
36
|
+
/** 表名称 */
|
|
37
|
+
tableName: string;
|
|
38
|
+
/** 受影响的行 ID 列表 */
|
|
39
|
+
rowIds: Array<string | number>;
|
|
40
|
+
/** 记录时间 */
|
|
41
|
+
recordAt: Date;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* PGlite 客户端配置选项
|
|
45
|
+
* 扩展自 PGlite 原生配置
|
|
46
|
+
*/
|
|
47
|
+
export interface PGliteClientOptions extends PGliteOptions {
|
|
48
|
+
/**
|
|
49
|
+
* 存储类型
|
|
50
|
+
* - 'memory': 内存存储
|
|
51
|
+
* - 'idb': IndexedDB 存储
|
|
52
|
+
*/
|
|
4
53
|
store?: 'memory' | 'idb';
|
|
5
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* PGlite 数据库表列信息接口
|
|
57
|
+
* 包含 PostgreSQL information_schema.columns 视图的所有字段
|
|
58
|
+
*/
|
|
59
|
+
export interface PgliteTableColumn {
|
|
60
|
+
/** 数据库目录名称 */
|
|
61
|
+
table_catalog: string;
|
|
62
|
+
/** 数据库模式名称 */
|
|
63
|
+
table_schema: string;
|
|
64
|
+
/** 表名称 */
|
|
65
|
+
table_name: string;
|
|
66
|
+
/** 列名称 */
|
|
67
|
+
column_name: string;
|
|
68
|
+
/** 列在表中的顺序位置 */
|
|
69
|
+
ordinal_position: number;
|
|
70
|
+
/** 列的默认值 */
|
|
71
|
+
column_default: unknown;
|
|
72
|
+
/** 列是否可为 NULL */
|
|
73
|
+
is_nullable: 'YES' | 'NO';
|
|
74
|
+
/** 数据类型 */
|
|
75
|
+
data_type: string;
|
|
76
|
+
/** 字符类型的最大长度 */
|
|
77
|
+
character_maximum_length?: number;
|
|
78
|
+
/** 字符类型的字节长度 */
|
|
79
|
+
character_octet_length?: number;
|
|
80
|
+
/** 数值类型的精度 */
|
|
81
|
+
numeric_precision?: number;
|
|
82
|
+
/** 数值精度的基数 */
|
|
83
|
+
numeric_precision_radix?: number;
|
|
84
|
+
/** 数值类型的小数位数 */
|
|
85
|
+
numeric_scale?: number;
|
|
86
|
+
/** 日期时间类型的精度 */
|
|
87
|
+
datetime_precision?: number;
|
|
88
|
+
/** 间隔类型 */
|
|
89
|
+
interval_type?: string;
|
|
90
|
+
/** 间隔精度 */
|
|
91
|
+
interval_precision?: number;
|
|
92
|
+
/** 字符集目录 */
|
|
93
|
+
character_set_catalog?: string;
|
|
94
|
+
/** 字符集模式 */
|
|
95
|
+
character_set_schema?: string;
|
|
96
|
+
/** 字符集名称 */
|
|
97
|
+
character_set_name?: string;
|
|
98
|
+
/** 排序规则目录 */
|
|
99
|
+
collation_catalog?: string;
|
|
100
|
+
/** 排序规则模式 */
|
|
101
|
+
collation_schema?: string;
|
|
102
|
+
/** 排序规则名称 */
|
|
103
|
+
collation_name?: string;
|
|
104
|
+
/** 域目录 */
|
|
105
|
+
domain_catalog?: string;
|
|
106
|
+
/** 域模式 */
|
|
107
|
+
domain_schema?: string;
|
|
108
|
+
/** 域名称 */
|
|
109
|
+
domain_name?: string;
|
|
110
|
+
/** 用户定义类型目录 */
|
|
111
|
+
udt_catalog: string;
|
|
112
|
+
/** 用户定义类型模式 */
|
|
113
|
+
udt_schema: string;
|
|
114
|
+
/** 用户定义类型名称 */
|
|
115
|
+
udt_name: string;
|
|
116
|
+
/** 作用域目录 */
|
|
117
|
+
scope_catalog?: string;
|
|
118
|
+
/** 作用域模式 */
|
|
119
|
+
scope_schema?: string;
|
|
120
|
+
/** 作用域名称 */
|
|
121
|
+
scope_nam?: string;
|
|
122
|
+
/** 最大基数 */
|
|
123
|
+
maximum_cardinality?: number;
|
|
124
|
+
/** 数据类型描述符标识符 */
|
|
125
|
+
dtd_identifier: string;
|
|
126
|
+
/** 是否自引用 */
|
|
127
|
+
is_self_referencing: string;
|
|
128
|
+
/** 是否为标识列 */
|
|
129
|
+
is_identity: string;
|
|
130
|
+
/** 标识列生成方式 */
|
|
131
|
+
identity_generation?: string;
|
|
132
|
+
/** 标识列起始值 */
|
|
133
|
+
identity_start?: string;
|
|
134
|
+
/** 标识列增量 */
|
|
135
|
+
identity_increment?: string;
|
|
136
|
+
/** 标识列最大值 */
|
|
137
|
+
identity_maximum?: string;
|
|
138
|
+
/** 标识列最小值 */
|
|
139
|
+
identity_minimum?: string;
|
|
140
|
+
/** 标识列是否循环 */
|
|
141
|
+
identity_cycle: string;
|
|
142
|
+
/** 是否为生成列 */
|
|
143
|
+
is_generated: string;
|
|
144
|
+
/** 生成列表达式 */
|
|
145
|
+
generation_expression?: string;
|
|
146
|
+
/** 是否可更新 */
|
|
147
|
+
is_updatable: string;
|
|
148
|
+
/** 约束类型 */
|
|
149
|
+
constraint_type: string;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* 外键约束信息类型
|
|
153
|
+
* 描述表之间的外键关系
|
|
154
|
+
*/
|
|
155
|
+
export type ForeignKey = {
|
|
156
|
+
/** 约束目录名称 */
|
|
157
|
+
constraint_catalog: string;
|
|
158
|
+
/** 约束模式名称 */
|
|
159
|
+
constraint_schema: string;
|
|
160
|
+
/** 约束名称 */
|
|
161
|
+
constraint_name: string;
|
|
162
|
+
/** 表目录名称 */
|
|
163
|
+
table_catalog: string;
|
|
164
|
+
/** 表模式名称 */
|
|
165
|
+
table_schema: string;
|
|
166
|
+
/** 表名称 */
|
|
167
|
+
table_name: string;
|
|
168
|
+
/** 列名称 */
|
|
169
|
+
column_name: string;
|
|
170
|
+
/** 列在约束中的顺序位置 */
|
|
171
|
+
ordinal_position: number;
|
|
172
|
+
/** 在唯一约束中的位置 */
|
|
173
|
+
position_in_unique_constraint?: number;
|
|
174
|
+
};
|
|
6
175
|
//# sourceMappingURL=pglite.interface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pglite.interface.d.ts","sourceRoot":"","sources":["../src/pglite.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"pglite.interface.d.ts","sourceRoot":"","sources":["../src/pglite.interface.ts"],"names":[],"mappings":"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"}
|
package/dist/pglite.utils.d.ts
CHANGED
|
@@ -1,18 +1,80 @@
|
|
|
1
|
-
import { EntityMetadata, EntityPropertyMetadata, EntityRelationMetadata } from '
|
|
1
|
+
import { EntityMetadata, EntityPropertyMetadata, EntityRelationMetadata } from '../packages/rxdb/src/index.ts';
|
|
2
|
+
/**
|
|
3
|
+
* PGlite 适配器错误类
|
|
4
|
+
*
|
|
5
|
+
* 扩展标准 Error,添加错误码和原始错误引用
|
|
6
|
+
*/
|
|
2
7
|
export declare class RxdbAdapterPGliteError extends Error {
|
|
3
|
-
|
|
8
|
+
/**
|
|
9
|
+
* 错误代码(例如:DUPLICATE_ENTITY, INVALID_SQL)
|
|
10
|
+
*/
|
|
11
|
+
readonly code?: string;
|
|
12
|
+
/**
|
|
13
|
+
* 原始错误对象(如果是从其他错误转换而来)
|
|
14
|
+
*/
|
|
15
|
+
readonly originalError?: Error;
|
|
16
|
+
constructor(message: string, code?: string, originalError?: Error);
|
|
4
17
|
}
|
|
18
|
+
export declare const getTableName: (entityName: string, namespace?: string) => string;
|
|
5
19
|
export declare const getTableNameByMetadata: (metadata: EntityMetadata) => string;
|
|
6
20
|
type PGliteDataType = 'uuid' | 'varchar' | 'jsonb' | 'numeric' | 'integer' | 'boolean' | 'timestamptz';
|
|
7
21
|
/**
|
|
8
|
-
*
|
|
22
|
+
* 将 RxDB 属性类型转换为 PGlite 数据类型
|
|
9
23
|
*/
|
|
10
24
|
export declare const rxDBColumnTypeToPGliteType: (property: EntityPropertyMetadata) => PGliteDataType;
|
|
11
25
|
/**
|
|
12
|
-
*
|
|
13
|
-
*http://www.postgres.cn/docs/current/indexes-opclass.html
|
|
26
|
+
* 获取属性的索引操作符
|
|
27
|
+
* http://www.postgres.cn/docs/current/indexes-opclass.html
|
|
14
28
|
*/
|
|
15
29
|
export declare const rxDBColumnTypeToPGliteTypeIndexName: (property: EntityPropertyMetadata) => string;
|
|
30
|
+
/**
|
|
31
|
+
* 获取表列索引名称
|
|
32
|
+
*/
|
|
16
33
|
export declare const getTableColumnIndexName: (metadata: EntityMetadata, property: EntityPropertyMetadata | EntityRelationMetadata) => string;
|
|
34
|
+
/**
|
|
35
|
+
* 将 JavaScript 值转换为 PostgreSQL 兼容的值
|
|
36
|
+
*/
|
|
37
|
+
export declare const transformValueJsToPGlite: (value: any, property: EntityPropertyMetadata) => any;
|
|
38
|
+
/**
|
|
39
|
+
* 将实体值转换为 SQL 兼容格式
|
|
40
|
+
*/
|
|
41
|
+
export declare const transformEntityValueToSql: (metadata: EntityMetadata, entity: any) => any;
|
|
42
|
+
/**
|
|
43
|
+
* 规范化创建实体的字段(过滤可写字段)
|
|
44
|
+
*/
|
|
45
|
+
export declare const normalizeCreateEntity: (metadata: EntityMetadata, entity: any) => any;
|
|
46
|
+
/**
|
|
47
|
+
* 规范化实体数据,过滤掉只读字段
|
|
48
|
+
*/
|
|
49
|
+
export declare const normalizeEntity: (metadata: EntityMetadata, entity: any) => any;
|
|
50
|
+
export declare const getSqlValue: (value: any) => string;
|
|
51
|
+
/**
|
|
52
|
+
* 将 PostgreSQL 参数占位符($1、$2 等)替换为实际值
|
|
53
|
+
* 用于批量操作中无法使用参数化查询的情况
|
|
54
|
+
*/
|
|
55
|
+
export declare const getSqlWithParams: (sql: string, params?: any[]) => string;
|
|
56
|
+
/**
|
|
57
|
+
* 从 PGlite 结果行获取实体对象数据
|
|
58
|
+
* PGlite 返回行作为对象,主要用于类型转换
|
|
59
|
+
*/
|
|
60
|
+
export declare const getEntityObjectFromResult: (metadata: EntityMetadata, row: any) => any;
|
|
61
|
+
/**
|
|
62
|
+
* 将 PGlite 存储的值转换为 JS 类型
|
|
63
|
+
* PostgreSQL 的 JSONB 字段已经是对象,不需要 JSON.parse
|
|
64
|
+
*
|
|
65
|
+
* @param value - 数据库值
|
|
66
|
+
* @param property - 属性元数据
|
|
67
|
+
* @returns 转换后的 JS 值
|
|
68
|
+
*/
|
|
69
|
+
export declare const transformValuePGliteToJs: (value: any, property: EntityPropertyMetadata) => any;
|
|
70
|
+
/**
|
|
71
|
+
* 将实体对象中的所有值从 PGlite 格式转换为 JS 类型
|
|
72
|
+
* 主要用于 RxDBChange 表的 patch/inversePatch 字段
|
|
73
|
+
*
|
|
74
|
+
* @param metadata - 实体元数据
|
|
75
|
+
* @param entity - 实体对象
|
|
76
|
+
* @returns 转换后的实体对象
|
|
77
|
+
*/
|
|
78
|
+
export declare const transformEntityValuePGliteToJs: (metadata: EntityMetadata, entity: Record<string, any>) => Record<string, any>;
|
|
17
79
|
export {};
|
|
18
80
|
//# sourceMappingURL=pglite.utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pglite.utils.d.ts","sourceRoot":"","sources":["../src/pglite.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,sBAAsB,EAAgB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"pglite.utils.d.ts","sourceRoot":"","sources":["../src/pglite.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,sBAAsB,EAAgB,MAAM,YAAY,CAAC;AAG1G;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C;;OAEG;IACH,SAAgB,IAAI,CAAC,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,SAAgB,aAAa,CAAC,EAAE,KAAK,CAAC;gBAE1B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK;CAOlE;AAED,eAAO,MAAM,YAAY,GAAI,YAAY,MAAM,EAAE,YAAW,MAAiB,WAAqC,CAAC;AAEnH,eAAO,MAAM,sBAAsB,GAAI,UAAU,cAAc,WAAoD,CAAC;AAGpH,KAAK,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC;AAEvG;;GAEG;AACH,eAAO,MAAM,0BAA0B,GAAI,UAAU,sBAAsB,KAAG,cAkB7E,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mCAAmC,GAAI,UAAU,sBAAsB,KAAG,MAgBtF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,UAAU,cAAc,EACxB,UAAU,sBAAsB,GAAG,sBAAsB,WACO,CAAC;AAEnE;;GAEG;AACH,eAAO,MAAM,wBAAwB,GAAI,OAAO,GAAG,EAAE,UAAU,sBAAsB,KAAG,GAyBvF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,GAAI,UAAU,cAAc,EAAE,QAAQ,GAAG,QAmB9E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,UAAU,cAAc,EAAE,QAAQ,GAAG,QAC0B,CAAC;AAEtG;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,UAAU,cAAc,EAAE,QAAQ,GAAG,QACS,CAAC;AAW/E,eAAO,MAAM,WAAW,GAAI,OAAO,GAAG,KAAG,MA0BxC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,EAAE,SAAQ,GAAG,EAAO,KAAG,MAWlE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,GAAI,UAAU,cAAc,EAAE,KAAK,GAAG,KAAG,GAwB9E,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,GAAI,OAAO,GAAG,EAAE,UAAU,sBAAsB,KAAG,GAmBvF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,GAAI,UAAU,cAAc,EAAE,QAAQ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,wBASnG,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { EntityMetadata } from '../../packages/rxdb/src/index.ts';
|
|
2
|
+
export interface GenerateSqlResult {
|
|
3
|
+
sql: string;
|
|
4
|
+
params?: any[];
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* 生成 findByRowIds 查询 SQL
|
|
8
|
+
*
|
|
9
|
+
* @param metadata - 实体元数据
|
|
10
|
+
* @param rowIds - 行 ID 数组
|
|
11
|
+
* @returns SQL 查询和参数
|
|
12
|
+
*/
|
|
13
|
+
declare const _default: (metadata: EntityMetadata, rowIds: Array<string | number>) => GenerateSqlResult;
|
|
14
|
+
export default _default;
|
|
15
|
+
//# sourceMappingURL=find_by_row_ids_sql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find_by_row_ids_sql.d.ts","sourceRoot":"","sources":["../../src/query/find_by_row_ids_sql.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5C,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;CAChB;AAED;;;;;;GAMG;yBACa,UAAU,cAAc,EAAE,QAAQ,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAAG,iBAAiB;AAA5F,wBAYE"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { EntityMetadata, EntityRelationMetadata } from '../../packages/rxdb/src/index.ts';
|
|
2
|
+
import { RxDBAdapterPGlite } from '../RxDBAdapterPGlite.js';
|
|
3
|
+
export declare const MAIN_TABLE_ALIAS: "_";
|
|
4
|
+
export interface JoinOptions {
|
|
5
|
+
joinTableName: string;
|
|
6
|
+
on: string;
|
|
7
|
+
}
|
|
8
|
+
export interface RelationPair {
|
|
9
|
+
metadata: EntityMetadata;
|
|
10
|
+
relation: EntityRelationMetadata;
|
|
11
|
+
}
|
|
12
|
+
export interface JoinContext {
|
|
13
|
+
joinMap: Map<EntityMetadata, JoinOptions[]>;
|
|
14
|
+
usedAliases: Set<string>;
|
|
15
|
+
fieldAliasMap: Map<string, string>;
|
|
16
|
+
relationAliasMap: Map<string, string>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 获取或创建稳定的关系别名
|
|
20
|
+
*/
|
|
21
|
+
export declare const get_or_create_relation_alias: (context: JoinContext, relationKey: string) => string;
|
|
22
|
+
/**
|
|
23
|
+
* 尝试将关系路径解析为一系列关系配对(RelationPair)
|
|
24
|
+
*/
|
|
25
|
+
export declare const try_resolve_relation_path: (adapter: RxDBAdapterPGlite, entityMetadata: EntityMetadata, parts: string[], cut: number) => {
|
|
26
|
+
metaWalker?: EntityMetadata;
|
|
27
|
+
relPairs: RelationPair[];
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* 尝试在关系链上处理 JSON keyValue 字段(例如 orders.meta.xxx)
|
|
31
|
+
*
|
|
32
|
+
* @remarks
|
|
33
|
+
* **已知限制**:当前实现假定点号仅用于表示嵌套路径。
|
|
34
|
+
* 如果 keyValue 对象内部的键本身包含点(如 "version.major"),此方法将无法正确处理。
|
|
35
|
+
* 详见 SQLite 适配器中 `_try_process_top_level_flatmap` 的文档说明。
|
|
36
|
+
*/
|
|
37
|
+
export declare const try_process_relation_flatmap: (adapter: RxDBAdapterPGlite, context: JoinContext, entityMetadata: EntityMetadata, strValue: string, parts: string[]) => boolean;
|
|
38
|
+
/**
|
|
39
|
+
* 处理一条关系链上的所有 JOIN
|
|
40
|
+
*/
|
|
41
|
+
export declare const process_relation_joins: (adapter: RxDBAdapterPGlite, context: JoinContext, relations: RelationPair[], joinTableName: string) => void;
|
|
42
|
+
export declare const get_relation_key: (relations: RelationPair[], joinTableName: string, relation: EntityRelationMetadata) => string;
|
|
43
|
+
export declare const format_table_alias: (alias: string) => string;
|
|
44
|
+
/**
|
|
45
|
+
* 根据规则组构建 JOIN SQL 以及字段别名映射表
|
|
46
|
+
*/
|
|
47
|
+
export declare const build_rule_group_join_pg: (adapter: RxDBAdapterPGlite, entityMetadata: EntityMetadata, ruleGroup: any) => {
|
|
48
|
+
joinSQL: string;
|
|
49
|
+
fieldAliasMap: Map<string, string>;
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=join_sql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"join_sql.d.ts","sourceRoot":"","sources":["../../src/query/join_sql.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEd,sBAAsB,EAIvB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG5D,eAAO,MAAM,gBAAgB,EAAG,GAAY,CAAC;AAE7C,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,EAAE,sBAAsB,CAAC;CAClC;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,GAAG,CAAC,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;IAC5C,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAOD;;GAEG;AACH,eAAO,MAAM,4BAA4B,GAAI,SAAS,WAAW,EAAE,aAAa,MAAM,KAAG,MAMxF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,GACpC,SAAS,iBAAiB,EAC1B,gBAAgB,cAAc,EAC9B,OAAO,MAAM,EAAE,EACf,KAAK,MAAM,KACV;IAAE,UAAU,CAAC,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,YAAY,EAAE,CAAA;CAazD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,GACvC,SAAS,iBAAiB,EAC1B,SAAS,WAAW,EACpB,gBAAgB,cAAc,EAC9B,UAAU,MAAM,EAChB,OAAO,MAAM,EAAE,KACd,OA0BF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,GACjC,SAAS,iBAAiB,EAC1B,SAAS,WAAW,EACpB,WAAW,YAAY,EAAE,EACzB,eAAe,MAAM,KACpB,IA4BF,CAAC;AAwEF,eAAO,MAAM,gBAAgB,GAC3B,WAAW,YAAY,EAAE,EACzB,eAAe,MAAM,EACrB,UAAU,sBAAsB,KAC/B,MAAwF,CAAC;AAE5F,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,KAAG,MAA6D,CAAC;AAEjH;;GAEG;AACH,eAAO,MAAM,wBAAwB,GACnC,SAAS,iBAAiB,EAC1B,gBAAgB,cAAc,EAC9B,WAAW,GAAG;;;CAyBf,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CountOptions, EntityMetadata, FindAllOptions, FindOptions, RuleGroup } from '../../packages/rxdb/src/index.ts';
|
|
2
|
+
import { RxDBAdapterPGlite } from '../RxDBAdapterPGlite.js';
|
|
3
|
+
export interface GenerateSqlResult {
|
|
4
|
+
sql: string;
|
|
5
|
+
params: any[];
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* 基于 RuleGroup 递归构建 WHERE 语句
|
|
9
|
+
*/
|
|
10
|
+
export declare const buildRuleGroupPG: <RG extends RuleGroup<any, any, any>>(ruleGroup: RG, params: any[], fieldAliasMap?: Map<string, string>, entityMetadata?: EntityMetadata) => string;
|
|
11
|
+
/**
|
|
12
|
+
* 生成查找(SELECT)SQL(支持 where / join / order / limit / offset)
|
|
13
|
+
*/
|
|
14
|
+
export declare const generate_find_sql: (adapter: RxDBAdapterPGlite, metadata: EntityMetadata, options: FindOptions | FindAllOptions) => GenerateSqlResult;
|
|
15
|
+
/**
|
|
16
|
+
* 生成计数(COUNT)SQL
|
|
17
|
+
*/
|
|
18
|
+
export declare const generate_count_sql: (adapter: RxDBAdapterPGlite, metadata: EntityMetadata, options: CountOptions) => GenerateSqlResult;
|
|
19
|
+
//# sourceMappingURL=query_sql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query_sql.d.ts","sourceRoot":"","sources":["../../src/query/query_sql.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,cAAc,EACd,WAAW,EAGX,SAAS,EACV,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAY5D,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,GAAG,EAAE,CAAC;CACf;AA2LD;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,EAAE,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAClE,WAAW,EAAE,EACb,QAAQ,GAAG,EAAE,EACb,gBAAe,GAAG,CAAC,MAAM,EAAE,MAAM,CAAa,EAC9C,iBAAiB,cAAc,KAC9B,MAcF,CAAC;AAkDF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,SAAS,iBAAiB,EAC1B,UAAU,cAAc,EACxB,SAAS,WAAW,GAAG,cAAc,KACpC,iBAyBF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAC7B,SAAS,iBAAiB,EAC1B,UAAU,cAAc,EACxB,SAAS,YAAY,KACpB,iBAoBF,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { EntityMetadata, FindTreeOptions } from '../../packages/rxdb/src/index.ts';
|
|
2
|
+
import { SetOptional } from 'type-fest';
|
|
3
|
+
import { RxDBAdapterPGlite } from '../RxDBAdapterPGlite.js';
|
|
4
|
+
import { GenerateSqlResult } from './query_sql.js';
|
|
5
|
+
interface TreeOptions extends SetOptional<FindTreeOptions, 'entityId'> {
|
|
6
|
+
/**
|
|
7
|
+
* 是否是查询数量
|
|
8
|
+
*/
|
|
9
|
+
isCount?: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* 查询子孙节点
|
|
12
|
+
*/
|
|
13
|
+
isFindDescendants?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* 生成树查询 SQL (使用 PostgreSQL 的递归 CTE)
|
|
17
|
+
*/
|
|
18
|
+
export declare const generate_tree_sql: (adapter: RxDBAdapterPGlite, metadata: EntityMetadata, options: TreeOptions) => GenerateSqlResult;
|
|
19
|
+
/**
|
|
20
|
+
* 查询子孙节点
|
|
21
|
+
*/
|
|
22
|
+
export declare const generate_entity_find_descendants_sql: (adapter: RxDBAdapterPGlite, metadata: EntityMetadata, options: FindTreeOptions) => GenerateSqlResult;
|
|
23
|
+
/**
|
|
24
|
+
* 查询子孙节点数量
|
|
25
|
+
*/
|
|
26
|
+
export declare const generate_entity_count_descendants_sql: (adapter: RxDBAdapterPGlite, metadata: EntityMetadata, options: FindTreeOptions) => GenerateSqlResult;
|
|
27
|
+
/**
|
|
28
|
+
* 查询祖先节点
|
|
29
|
+
*/
|
|
30
|
+
export declare const generate_entity_find_ancestors_sql: (adapter: RxDBAdapterPGlite, metadata: EntityMetadata, options: FindTreeOptions) => GenerateSqlResult;
|
|
31
|
+
/**
|
|
32
|
+
* 查询祖先节点数量
|
|
33
|
+
*/
|
|
34
|
+
export declare const generate_entity_count_ancestors_sql: (adapter: RxDBAdapterPGlite, metadata: EntityMetadata, options: FindTreeOptions) => GenerateSqlResult;
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=query_tree_sql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query_tree_sql.d.ts","sourceRoot":"","sources":["../../src/query/query_tree_sql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAoB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAErE,UAAU,WAAY,SAAQ,WAAW,CAAC,eAAe,EAAE,UAAU,CAAC;IACpE;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,SAAS,iBAAiB,EAC1B,UAAU,cAAc,EACxB,SAAS,WAAW,KACnB,iBA4EF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oCAAoC,GAC/C,SAAS,iBAAiB,EAC1B,UAAU,cAAc,EACxB,SAAS,eAAe,sBACwD,CAAC;AAEnF;;GAEG;AACH,eAAO,MAAM,qCAAqC,GAChD,SAAS,iBAAiB,EAC1B,UAAU,cAAc,EACxB,SAAS,eAAe,sBACuE,CAAC;AAElG;;GAEG;AACH,eAAO,MAAM,kCAAkC,GAC7C,SAAS,iBAAiB,EAC1B,UAAU,cAAc,EACxB,SAAS,eAAe,sBACyD,CAAC;AAEpF;;GAEG;AACH,eAAO,MAAM,mCAAmC,GAC9C,SAAS,iBAAiB,EAC1B,UAAU,cAAc,EACxB,SAAS,eAAe,sBACwE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CountOptions, EntityStaticType, EntityType, FindAllOptions, FindOptions, IRepository } from '../../packages/rxdb/src/index.ts';
|
|
2
|
+
import { PGliteRepositoryBase } from './PGliteRepositoryBase.js';
|
|
3
|
+
export declare class PGliteRepository<T extends EntityType> extends PGliteRepositoryBase<T> implements IRepository<T> {
|
|
4
|
+
get(id: EntityStaticType<T, 'idType'>): Promise<InstanceType<T>>;
|
|
5
|
+
findOne(options: EntityStaticType<T, 'findOneOptions'>): Promise<InstanceType<T> | undefined>;
|
|
6
|
+
find(options: FindOptions): Promise<InstanceType<T>[]>;
|
|
7
|
+
findAll(options: FindAllOptions): Promise<InstanceType<T>[]>;
|
|
8
|
+
count(options: CountOptions): Promise<number>;
|
|
9
|
+
create(entity: InstanceType<T>): Promise<InstanceType<T>>;
|
|
10
|
+
update(entity: InstanceType<T>, patch: Partial<InstanceType<T>>): Promise<InstanceType<T>>;
|
|
11
|
+
remove(entity: InstanceType<T>): Promise<InstanceType<T>>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=PGliteRepository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PGliteRepository.d.ts","sourceRoot":"","sources":["../../src/repository/PGliteRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAMlH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,qBAAa,gBAAgB,CAAC,CAAC,SAAS,UAAU,CAAE,SAAQ,oBAAoB,CAAC,CAAC,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;IACrG,GAAG,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAYhE,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAK7F,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAMtD,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAM5D,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAM7C,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAOzD,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAO1F,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CAKhE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { EntityMetadata, EntityType, RepositoryBase } from '../../packages/rxdb/src/index.ts';
|
|
2
|
+
import { Results } from '@electric-sql/pglite';
|
|
3
|
+
import { RxDBAdapterPGlite } from '../RxDBAdapterPGlite.js';
|
|
4
|
+
export declare class PGliteRepositoryBase<T extends EntityType> extends RepositoryBase<T> {
|
|
5
|
+
protected adapter: RxDBAdapterPGlite;
|
|
6
|
+
readonly metadata: EntityMetadata;
|
|
7
|
+
constructor(adapter: RxDBAdapterPGlite, EntityType: T);
|
|
8
|
+
/**
|
|
9
|
+
* 通过行 ID 列表查询实体
|
|
10
|
+
* 用于 handle_rxdb_change 中根据 NOTIFY 事件的 rowIds 查询实体
|
|
11
|
+
*
|
|
12
|
+
* @param rowIds - 行 ID 数组(string | number)
|
|
13
|
+
* @returns 实体数组
|
|
14
|
+
*/
|
|
15
|
+
findByRowIds(rowIds: Array<string | number>): Promise<InstanceType<T>[]>;
|
|
16
|
+
protected addQueryCache(result: Results<any>, forcedUpdate?: boolean): InstanceType<T>[];
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=PGliteRepositoryBase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PGliteRepositoryBase.d.ts","sourceRoot":"","sources":["../../src/repository/PGliteRepositoryBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAsC,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5G,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,qBAAa,oBAAoB,CAAC,CAAC,SAAS,UAAU,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IAI7E,SAAS,CAAC,OAAO,EAAE,iBAAiB;IAHtC,SAAgB,QAAQ,EAAG,cAAc,CAAC;gBAG9B,OAAO,EAAE,iBAAiB,EACpC,UAAU,EAAE,CAAC;IAMf;;;;;;OAMG;IACG,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAO9E,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,YAAY,UAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE;CAiBvF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { EntityType, FindTreeOptions, ITreeRepository } from '../../packages/rxdb/src/index.ts';
|
|
2
|
+
import { PGliteRepository } from './PGliteRepository.js';
|
|
3
|
+
/**
|
|
4
|
+
* PGlite Tree Entity Repository
|
|
5
|
+
* 支持树形结构实体的递归查询
|
|
6
|
+
*/
|
|
7
|
+
export declare class PGliteTreeRepository<T extends EntityType> extends PGliteRepository<T> implements ITreeRepository<T> {
|
|
8
|
+
findDescendants(options: FindTreeOptions<T>): Promise<InstanceType<T>[]>;
|
|
9
|
+
countDescendants(options: FindTreeOptions<T>): Promise<number>;
|
|
10
|
+
findAncestors(options: FindTreeOptions<T>): Promise<InstanceType<T>[]>;
|
|
11
|
+
countAncestors(options: FindTreeOptions<T>): Promise<number>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=PGliteTreeRepository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PGliteTreeRepository.d.ts","sourceRoot":"","sources":["../../src/repository/PGliteTreeRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAQ1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;GAGG;AACH,qBAAa,oBAAoB,CAAC,CAAC,SAAS,UAAU,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAE,YAAW,eAAe,CAAC,CAAC,CAAC;IACzG,eAAe,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAgBxE,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAU9D,aAAa,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAgBtE,cAAc,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;CAQnE"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { EntityType, IMutationContext, RxDBMutationsMap } from '../packages/rxdb/src/index.ts';
|
|
2
|
+
import { RxDBAdapterPGlite } from './RxDBAdapterPGlite.js';
|
|
3
|
+
/**
|
|
4
|
+
* 批量修改实体(创建/更新/删除)
|
|
5
|
+
*
|
|
6
|
+
* 这个函数从 `RxDBAdapterPGlite.mutations()` 提取出来,提供独立的批量操作实现。
|
|
7
|
+
*
|
|
8
|
+
* ## 优化策略
|
|
9
|
+
*
|
|
10
|
+
* ### 1. 按 Patch 键分组(T034)
|
|
11
|
+
* 对于更新操作,按实体的 `patch` 字段键进行哈希分组。相同字段修改的实体会被分到同一组,
|
|
12
|
+
* 可以用一条 SQL 语句批量更新,减少数据库往返次数。
|
|
13
|
+
*
|
|
14
|
+
* **示例:**
|
|
15
|
+
* ```typescript
|
|
16
|
+
* // 3 个用户,2 个只修改 name,1 个只修改 email
|
|
17
|
+
* user1.name = 'Updated 1'; // patch: { name }
|
|
18
|
+
* user2.name = 'Updated 2'; // patch: { name } - 与 user1 同组
|
|
19
|
+
* user3.email = 'new@example.com'; // patch: { email } - 独立一组
|
|
20
|
+
*
|
|
21
|
+
* // 结果:生成 2 条 UPDATE 语句而不是 3 条
|
|
22
|
+
* // UPDATE users SET name = ... WHERE id IN ('user1-id', 'user2-id')
|
|
23
|
+
* // UPDATE users SET email = ... WHERE id = 'user3-id'
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* ### 2. 参数化查询
|
|
27
|
+
* 使用 PostgreSQL 的参数化查询(`$1`, `$2`等),避免 SQL 注入风险,提升安全性。
|
|
28
|
+
*
|
|
29
|
+
* ### 3. 批量查询结果
|
|
30
|
+
* INSERT/UPDATE 后,使用 `WHERE id IN (...)` 批量查询更新后的数据,减少数据库往返。
|
|
31
|
+
*
|
|
32
|
+
* ## 事务保证
|
|
33
|
+
*
|
|
34
|
+
* **重要**:调用者必须在事务中执行此函数。通常通过以下方式调用:
|
|
35
|
+
* ```typescript
|
|
36
|
+
* await adapter.transaction(() => rxdb_adapter_mutations(adapter, mutations));
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* ## 性能目标
|
|
40
|
+
*
|
|
41
|
+
* - 100 个实体批量插入:< 100ms (p95)
|
|
42
|
+
* - 100 个实体批量更新:< 100ms (p95)
|
|
43
|
+
* - 1000 个实体批量插入:< 200ms (p95)
|
|
44
|
+
* - 1000 个实体批量更新:< 200ms (p95)
|
|
45
|
+
*
|
|
46
|
+
* @param adapter - PGlite 适配器实例
|
|
47
|
+
* @param mutations - 批量修改映射,包含 create/update/remove 三种操作
|
|
48
|
+
* @param context - 可选的修改上下文(例如 `userId`,用于设置 `createdBy`/`updatedBy`)
|
|
49
|
+
* @returns 所有操作涉及的实体数组
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* // 创建 + 更新 + 删除混合操作
|
|
54
|
+
* const newUser = new User({ name: 'New User' });
|
|
55
|
+
* existingUser.name = 'Updated Name';
|
|
56
|
+
*
|
|
57
|
+
* const result = await adapter.transaction(() =>
|
|
58
|
+
* rxdb_adapter_mutations(adapter, {
|
|
59
|
+
* create: new Map([[User, new Set([newUser])]]),
|
|
60
|
+
* update: new Map([[User, new Set([existingUser])]]),
|
|
61
|
+
* remove: new Map([[User, new Set([deletedUser])]])
|
|
62
|
+
* }, { userId: 'admin-id' })
|
|
63
|
+
* );
|
|
64
|
+
*
|
|
65
|
+
* console.log(result.length); // 3 (newUser, existingUser, deletedUser)
|
|
66
|
+
* ```
|
|
67
|
+
*
|
|
68
|
+
* @see {@link RxDBAdapterPGlite.mutations}
|
|
69
|
+
*/
|
|
70
|
+
declare const _default: <T extends EntityType = any>(adapter: RxDBAdapterPGlite, mutations: RxDBMutationsMap<T>, context?: IMutationContext) => Promise<InstanceType<T>[]>;
|
|
71
|
+
export default _default;
|
|
72
|
+
//# sourceMappingURL=rxdb_adapter_mutations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rxdb_adapter_mutations.d.ts","sourceRoot":"","sources":["../src/rxdb_adapter_mutations.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAsC,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAQhH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;yBACmB,CAAC,SAAS,UAAU,GAAG,GAAG,EAC9C,SAAS,iBAAiB,EAC1B,WAAW,gBAAgB,CAAC,CAAC,CAAC,EAC9B,UAAU,gBAAgB,KACzB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;AAJ7B,wBAmHE"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQL 方言抽象
|
|
3
|
+
* 处理不同数据库之间的 SQL 语法差异
|
|
4
|
+
*
|
|
5
|
+
* T006-T007: PostgreSQL 方言实现
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* SQL 方言接口
|
|
9
|
+
* 定义数据库特定的 SQL 语法转换方法
|
|
10
|
+
*/
|
|
11
|
+
export interface ISqlDialect {
|
|
12
|
+
/**
|
|
13
|
+
* 获取自增主键的 RETURNING 子句
|
|
14
|
+
* @returns RETURNING 子句字符串
|
|
15
|
+
*/
|
|
16
|
+
getReturningClause(): string;
|
|
17
|
+
/**
|
|
18
|
+
* 获取参数占位符
|
|
19
|
+
* @param index - 参数索引(从 1 开始)
|
|
20
|
+
* @returns 占位符字符串
|
|
21
|
+
*/
|
|
22
|
+
getParameterPlaceholder(index: number): string;
|
|
23
|
+
/**
|
|
24
|
+
* 转义标识符(表名、列名等)
|
|
25
|
+
* @param identifier - 标识符
|
|
26
|
+
* @returns 转义后的标识符
|
|
27
|
+
*/
|
|
28
|
+
escapeIdentifier(identifier: string): string;
|
|
29
|
+
/**
|
|
30
|
+
* 获取 JSON 提取操作符
|
|
31
|
+
* @returns JSON 提取操作符
|
|
32
|
+
*/
|
|
33
|
+
getJsonExtractOperator(): string;
|
|
34
|
+
/**
|
|
35
|
+
* 获取字符串连接操作符
|
|
36
|
+
* @returns 字符串连接操作符
|
|
37
|
+
*/
|
|
38
|
+
getConcatOperator(): string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* PostgreSQL 方言实现
|
|
42
|
+
*
|
|
43
|
+
* 关键差异:
|
|
44
|
+
* - 参数占位符:$1, $2, $3(而不是 SQLite 的 ?)
|
|
45
|
+
* - RETURNING 子句:支持返回插入/更新的行
|
|
46
|
+
* - 标识符转义:双引号
|
|
47
|
+
* - JSON 操作符:->> 和 ->
|
|
48
|
+
* - 字符串连接:||
|
|
49
|
+
*/
|
|
50
|
+
export declare class PostgreSQLDialect implements ISqlDialect {
|
|
51
|
+
getReturningClause(): string;
|
|
52
|
+
getParameterPlaceholder(index: number): string;
|
|
53
|
+
escapeIdentifier(identifier: string): string;
|
|
54
|
+
getJsonExtractOperator(): string;
|
|
55
|
+
getConcatOperator(): string;
|
|
56
|
+
/**
|
|
57
|
+
* 生成批量插入 SQL(带 RETURNING)
|
|
58
|
+
* @param tableName - 表名
|
|
59
|
+
* @param columns - 列名数组
|
|
60
|
+
* @param rowCount - 行数
|
|
61
|
+
* @returns SQL 语句
|
|
62
|
+
*/
|
|
63
|
+
generateBatchInsert(tableName: string, columns: string[], rowCount: number): string;
|
|
64
|
+
/**
|
|
65
|
+
* 生成批量更新 SQL(使用 UPDATE ... FROM 模式)
|
|
66
|
+
* @param tableName - 表名
|
|
67
|
+
* @param pkColumn - 主键列名
|
|
68
|
+
* @param updateColumns - 更新列名数组
|
|
69
|
+
* @returns SQL 模板
|
|
70
|
+
*/
|
|
71
|
+
generateBatchUpdate(tableName: string, pkColumn: string, updateColumns: string[]): string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* 默认导出 PostgreSQL 方言实例
|
|
75
|
+
*/
|
|
76
|
+
export declare const pgDialect: PostgreSQLDialect;
|
|
77
|
+
//# sourceMappingURL=sql_dialect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql_dialect.d.ts","sourceRoot":"","sources":["../src/sql_dialect.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,kBAAkB,IAAI,MAAM,CAAC;IAE7B;;;;OAIG;IACH,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAE/C;;;;OAIG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;IAE7C;;;OAGG;IACH,sBAAsB,IAAI,MAAM,CAAC;IAEjC;;;OAGG;IACH,iBAAiB,IAAI,MAAM,CAAC;CAC7B;AAED;;;;;;;;;GASG;AACH,qBAAa,iBAAkB,YAAW,WAAW;IACnD,kBAAkB,IAAI,MAAM;IAI5B,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI9C,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAM5C,sBAAsB,IAAI,MAAM;IAKhC,iBAAiB,IAAI,MAAM;IAI3B;;;;;;OAMG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAenF;;;;;;OAMG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM;CAY1F;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,mBAA0B,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { EntityMetadata } from '../../packages/rxdb/src/index.ts';
|
|
2
|
+
import { RxDBAdapterPGlite } from '../RxDBAdapterPGlite.js';
|
|
3
|
+
declare const _default: (adapter: RxDBAdapterPGlite, metadata: EntityMetadata) => string;
|
|
4
|
+
export default _default;
|
|
5
|
+
//# sourceMappingURL=create_table_sql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create_table_sql.d.ts","sourceRoot":"","sources":["../../src/table/create_table_sql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA6E,MAAM,YAAY,CAAC;AAEvH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;yBAgM5C,SAAS,iBAAiB,EAAE,UAAU,cAAc;AAApE,wBAME"}
|