@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.
Files changed (62) hide show
  1. package/dist/PGliteClient.d.ts +10 -4
  2. package/dist/PGliteClient.d.ts.map +1 -1
  3. package/dist/RxDBAdapterPGlite.d.ts +174 -19
  4. package/dist/RxDBAdapterPGlite.d.ts.map +1 -1
  5. package/dist/entity/delete_sql.d.ts +13 -0
  6. package/dist/entity/delete_sql.d.ts.map +1 -0
  7. package/dist/entity/deletes_sql.d.ts +11 -0
  8. package/dist/entity/deletes_sql.d.ts.map +1 -0
  9. package/dist/entity/insert_sql.d.ts +14 -0
  10. package/dist/entity/insert_sql.d.ts.map +1 -0
  11. package/dist/entity/inserts_sql.d.ts +12 -0
  12. package/dist/entity/inserts_sql.d.ts.map +1 -0
  13. package/dist/entity/update_sql.d.ts +15 -0
  14. package/dist/entity/update_sql.d.ts.map +1 -0
  15. package/dist/execute_helper.d.ts +70 -0
  16. package/dist/execute_helper.d.ts.map +1 -0
  17. package/dist/handle_rxdb_change.d.ts +26 -0
  18. package/dist/handle_rxdb_change.d.ts.map +1 -0
  19. package/dist/index.d.ts +8 -0
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +3116 -128
  22. package/dist/pglite.interface.d.ts +171 -2
  23. package/dist/pglite.interface.d.ts.map +1 -1
  24. package/dist/pglite.utils.d.ts +67 -5
  25. package/dist/pglite.utils.d.ts.map +1 -1
  26. package/dist/query/find_by_row_ids_sql.d.ts +15 -0
  27. package/dist/query/find_by_row_ids_sql.d.ts.map +1 -0
  28. package/dist/query/join_sql.d.ts +51 -0
  29. package/dist/query/join_sql.d.ts.map +1 -0
  30. package/dist/query/query_sql.d.ts +19 -0
  31. package/dist/query/query_sql.d.ts.map +1 -0
  32. package/dist/query/query_tree_sql.d.ts +36 -0
  33. package/dist/query/query_tree_sql.d.ts.map +1 -0
  34. package/dist/repository/PGliteRepository.d.ts +13 -0
  35. package/dist/repository/PGliteRepository.d.ts.map +1 -0
  36. package/dist/repository/PGliteRepositoryBase.d.ts +18 -0
  37. package/dist/repository/PGliteRepositoryBase.d.ts.map +1 -0
  38. package/dist/repository/PGliteTreeRepository.d.ts +13 -0
  39. package/dist/repository/PGliteTreeRepository.d.ts.map +1 -0
  40. package/dist/rxdb_adapter_mutations.d.ts +72 -0
  41. package/dist/rxdb_adapter_mutations.d.ts.map +1 -0
  42. package/dist/sql_dialect.d.ts +77 -0
  43. package/dist/sql_dialect.d.ts.map +1 -0
  44. package/dist/table/create_table_sql.d.ts +5 -0
  45. package/dist/table/create_table_sql.d.ts.map +1 -0
  46. package/dist/table/create_tables_sql.d.ts +31 -0
  47. package/dist/table/create_tables_sql.d.ts.map +1 -0
  48. package/dist/table/notify_function_sql.d.ts +46 -0
  49. package/dist/table/notify_function_sql.d.ts.map +1 -0
  50. package/dist/table/remove_trigger_sql.d.ts +41 -0
  51. package/dist/table/remove_trigger_sql.d.ts.map +1 -0
  52. package/dist/table/trigger_sql.d.ts +37 -0
  53. package/dist/table/trigger_sql.d.ts.map +1 -0
  54. package/dist/transaction_pglite_result.d.ts +102 -0
  55. package/dist/transaction_pglite_result.d.ts.map +1 -0
  56. package/dist/version/create_branch.d.ts +24 -0
  57. package/dist/version/create_branch.d.ts.map +1 -0
  58. package/dist/version/switch_transaction_id.d.ts +18 -0
  59. package/dist/version/switch_transaction_id.d.ts.map +1 -0
  60. package/package.json +7 -5
  61. package/dist/generate_table_create_sql.d.ts +0 -5
  62. package/dist/generate_table_create_sql.d.ts.map +0 -1
@@ -0,0 +1,31 @@
1
+ import { EntityType } from '../../packages/rxdb/src/index.ts';
2
+ import { RxDBAdapterPGlite } from '../RxDBAdapterPGlite.js';
3
+ /**
4
+ * 生成多张表的创建 SQL
5
+ *
6
+ * 为指定的实体类型生成完整的表结构创建 SQL,包括:
7
+ * 1. CREATE TABLE 语句
8
+ * 2. 外键约束
9
+ * 3. 触发器(仅对 log !== false 的实体)
10
+ * 4. 初始数据 INSERT 语句(可选)
11
+ *
12
+ * @param adapter - PGlite 适配器实例
13
+ * @param EntityTypes - 实体类型数组
14
+ * @param entities - 可选的初始数据实体数组
15
+ * @returns 完整的 SQL 语句字符串
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * // 创建表结构
20
+ * const sql = create_tables_sql(adapter, [User, Todo]);
21
+ * await adapter.query(sql);
22
+ *
23
+ * // 创建表并插入初始数据
24
+ * const user = new User();
25
+ * user.name = 'Admin';
26
+ * const sqlWithData = create_tables_sql(adapter, [User], [user]);
27
+ * ```
28
+ */
29
+ export declare function create_tables_sql<T extends EntityType>(adapter: RxDBAdapterPGlite, EntityTypes: T[], entities?: InstanceType<T>[]): string;
30
+ export default create_tables_sql;
31
+ //# sourceMappingURL=create_tables_sql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create_tables_sql.d.ts","sourceRoot":"","sources":["../../src/table/create_tables_sql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,UAAU,EAAqB,MAAM,YAAY,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAKjE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,UAAU,EACpD,OAAO,EAAE,iBAAiB,EAC1B,WAAW,EAAE,CAAC,EAAE,EAChB,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GAC3B,MAAM,CAwCR;AAED,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * T009-T010: PostgreSQL NOTIFY 触发器函数生成
3
+ *
4
+ * 为表创建触发器,在 INSERT/UPDATE/DELETE 时通过 NOTIFY 发送变更事件
5
+ */
6
+ /**
7
+ * 生成 NOTIFY 触发器函数 SQL
8
+ *
9
+ * 创建一个通用的 trigger function,可以在多个表上复用
10
+ * 触发器会:
11
+ * 1. 收集当前事务中的所有变更
12
+ * 2. 批量发送 NOTIFY 消息(包含 operation 和 id 数组)
13
+ * 3. 使用 JSON 格式传递 payload
14
+ *
15
+ * @returns SQL 语句,创建 notify_change() 函数
16
+ */
17
+ export declare function generateNotifyFunctionSQL(): string;
18
+ /**
19
+ * 为指定表创建 NOTIFY 触发器
20
+ *
21
+ * 触发器会在 INSERT, UPDATE, DELETE 后触发
22
+ * AFTER 触发器确保变更已提交
23
+ *
24
+ * @param tableName - 表名(例如 "public$RxDBChange")
25
+ * @returns SQL 语句,创建触发器(包含表存在性检查)
26
+ */
27
+ export declare function generateNotifyTriggerSQL(tableName: string): string;
28
+ /**
29
+ * 移除表的 NOTIFY 触发器
30
+ *
31
+ * @param tableName - 表名
32
+ * @returns SQL 语句,删除触发器
33
+ */
34
+ export declare function removeNotifyTriggerSQL(tableName: string): string;
35
+ /**
36
+ * 生成完整的 NOTIFY 基础设施 SQL
37
+ *
38
+ * 包括:
39
+ * 1. 创建 notify_change() 函数
40
+ * 2. 为监控表创建触发器
41
+ *
42
+ * @param watchTables - 需要监控的表名数组
43
+ * @returns 完整的 SQL 语句
44
+ */
45
+ export declare function generateNotifyInfrastructureSQL(watchTables?: string[]): string;
46
+ //# sourceMappingURL=notify_function_sql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notify_function_sql.d.ts","sourceRoot":"","sources":["../../src/table/notify_function_sql.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAuClD;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAwBlE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAGhE;AAED;;;;;;;;;GASG;AACH,wBAAgB,+BAA+B,CAC7C,WAAW,GAAE,MAAM,EAAuE,GACzF,MAAM,CAYR"}
@@ -0,0 +1,41 @@
1
+ import { EntityMetadata } from '../../packages/rxdb/src/index.ts';
2
+ import { RxDBAdapterPGlite } from '../RxDBAdapterPGlite.js';
3
+ /**
4
+ * 生成删除单个实体触发器的 SQL
5
+ *
6
+ * 为指定实体生成删除触发器和触发器函数的 SQL 语句
7
+ *
8
+ * @param entityMetadata - 实体元数据
9
+ * @returns 删除触发器的 SQL 语句(包含 DROP TRIGGER 和 DROP FUNCTION)
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const metadata = getEntityMetadata(Todo);
14
+ * const sql = remove_trigger_sql(metadata);
15
+ * // 返回:
16
+ * // DROP TRIGGER IF EXISTS "Todo_change_trigger" ON "public"."Todo"
17
+ * // ---STATEMENT_SEPARATOR---
18
+ * // DROP FUNCTION IF EXISTS "public"."Todo_change_trigger_fn"() CASCADE
19
+ * ```
20
+ */
21
+ export declare function remove_trigger_sql(entityMetadata: EntityMetadata): string;
22
+ /**
23
+ * 生成删除所有实体触发器的 SQL
24
+ *
25
+ * 遍历所有启用日志的实体(log !== false),生成删除触发器的 SQL
26
+ *
27
+ * @param adapter - PGlite 适配器实例
28
+ * @returns 删除所有触发器的 SQL 语句(每个实体的语句用 ---STATEMENT_SEPARATOR--- 分隔)
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * const sql = remove_all_triggers_sql(adapter);
33
+ * const statements = sql.split('---STATEMENT_SEPARATOR---');
34
+ * for (const statement of statements) {
35
+ * await adapter.query(statement);
36
+ * }
37
+ * ```
38
+ */
39
+ export declare function remove_all_triggers_sql(adapter: RxDBAdapterPGlite): string;
40
+ export default remove_all_triggers_sql;
41
+ //# sourceMappingURL=remove_trigger_sql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove_trigger_sql.d.ts","sourceRoot":"","sources":["../../src/table/remove_trigger_sql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,cAAc,GAAG,MAAM,CAkBzE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAe1E;AAED,eAAe,uBAAuB,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { EntityMetadata } from '../../packages/rxdb/src/index.ts';
2
+ /**
3
+ * 触发器选项
4
+ */
5
+ interface TriggerOptions {
6
+ /** 分支 ID (默认 'main') */
7
+ branchId?: string;
8
+ /** 事务 ID (可选,用于事务内的变更追踪) */
9
+ transactionId?: string;
10
+ }
11
+ /**
12
+ * 生成 PostgreSQL 触发器 SQL
13
+ *
14
+ * 为实体表生成 INSERT/UPDATE/DELETE 触发器,自动记录所有数据变更到 RxDBChange 表
15
+ * PostgreSQL 触发器需要先创建触发器函数,然后创建触发器本身
16
+ *
17
+ * 注意:由于 PostgreSQL 事务限制(pending trigger events),
18
+ * 我们无法通过修改列默认值来动态设置 transactionId,
19
+ * 必须在触发器中硬编码,并在每次切换时重建触发器(与 SQLite 方案一致)
20
+ *
21
+ * @param entityMetadata - 实体元数据
22
+ * @param options - 触发器选项
23
+ * @returns 完整的触发器 SQL 语句
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * const sql = generate_trigger_sql(todoMetadata);
28
+ * await adapter.exec(sql);
29
+ *
30
+ * // 在事务中使用
31
+ * const sqlWithTx = generate_trigger_sql(todoMetadata, { transactionId: 'tx-123' });
32
+ * await adapter.exec(sqlWithTx);
33
+ * ```
34
+ */
35
+ export declare function generate_trigger_sql(entityMetadata: EntityMetadata, options?: TriggerOptions): string;
36
+ export default generate_trigger_sql;
37
+ //# sourceMappingURL=trigger_sql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger_sql.d.ts","sourceRoot":"","sources":["../../src/table/trigger_sql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAiC,MAAM,YAAY,CAAC;AAG3E;;GAEG;AACH,UAAU,cAAc;IACtB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,cAAc,EAAE,OAAO,GAAE,cAAmB,GAAG,MAAM,CAiHzG;AAED,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,102 @@
1
+ import { EntityType } from '../packages/rxdb/src/index.ts';
2
+ import { RxDBAdapterPGlite } from './RxDBAdapterPGlite.js';
3
+ /**
4
+ * PGlite 执行结果(从 execute_helper 返回)
5
+ */
6
+ export interface PGliteExecuteResult<T = any> {
7
+ rows: T[];
8
+ rowsAffected: number;
9
+ elapsed: number;
10
+ }
11
+ /**
12
+ * 从 PGlite 查询结果创建或重用实体
13
+ *
14
+ * 这是处理 SELECT/INSERT RETURNING/UPDATE RETURNING 结果的统一入口。
15
+ *
16
+ * ## 行为
17
+ *
18
+ * 1. **新实体**:如果 ID 在缓存中不存在,创建新实体并标记为 `local=true, modified=false`
19
+ * 2. **已存在实体**:返回缓存中的同一实例(引用相等)
20
+ * 3. **forcedUpdate=true**:强制更新已存在实体的所有字段
21
+ * 4. **forcedUpdate=false**(默认):不更新已存在实体
22
+ *
23
+ * ## 使用场景
24
+ *
25
+ * - **INSERT RETURNING**: 总是创建新实体
26
+ * - **SELECT**: 查询结果,可能包含新旧实体
27
+ * - **UPDATE RETURNING**: 需要 `forcedUpdate=true` 更新实体状态
28
+ *
29
+ * @param adapter - PGlite 适配器实例
30
+ * @param EntityType - 实体类型
31
+ * @param result - execute_helper 返回的结果
32
+ * @param forcedUpdate - 是否强制更新已存在的实体
33
+ * @returns 实体数组(新创建或重用的)
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * // SELECT 查询:重用缓存实体
38
+ * const result = await execute_query(client, 'SELECT * FROM todos WHERE completed = $1', [false]);
39
+ * const todos = transaction_pglite_result(adapter, Todo, result);
40
+ *
41
+ * // INSERT RETURNING:创建新实体
42
+ * const insertResult = await execute_query(
43
+ * client,
44
+ * 'INSERT INTO todos (id, title) VALUES ($1, $2) RETURNING *',
45
+ * ['new-id', 'New Todo']
46
+ * );
47
+ * const newTodo = transaction_pglite_result(adapter, Todo, insertResult)[0];
48
+ *
49
+ * // UPDATE RETURNING:强制更新实体
50
+ * const updateResult = await execute_query(
51
+ * client,
52
+ * 'UPDATE todos SET completed = true WHERE id = $1 RETURNING *',
53
+ * ['todo-id']
54
+ * );
55
+ * transaction_pglite_result(adapter, Todo, updateResult, true);
56
+ * ```
57
+ */
58
+ export declare const transaction_pglite_result: <T extends EntityType>(adapter: RxDBAdapterPGlite, EntityType: T, result: PGliteExecuteResult, forcedUpdate?: boolean) => InstanceType<T>[];
59
+ /**
60
+ * 更新已存在的实体(仅更新,不创建新实体)
61
+ *
62
+ * 用于 UPDATE RETURNING 场景:只更新已在内存中的实体,不创建新实体。
63
+ *
64
+ * ## 与 transaction_pglite_result(forcedUpdate=true) 的区别
65
+ *
66
+ * - `transaction_pglite_result(forcedUpdate=true)`: 更新 **或** 创建
67
+ * - `update_entity_from_pglite_result`: **只更新**,忽略不存在的实体
68
+ *
69
+ * @param adapter - PGlite 适配器实例
70
+ * @param EntityType - 实体类型
71
+ * @param result - execute_helper 返回的结果
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * // 仅更新内存中的实体,忽略不存在的 ID
76
+ * const result = await execute_query(
77
+ * client,
78
+ * 'UPDATE todos SET completed = true WHERE id = ANY($1) RETURNING *',
79
+ * [todoIds]
80
+ * );
81
+ * update_entity_from_pglite_result(adapter, Todo, result);
82
+ * ```
83
+ */
84
+ export declare const update_entity_from_pglite_result: <T extends EntityType>(adapter: RxDBAdapterPGlite, EntityType: T, result: PGliteExecuteResult) => void;
85
+ /**
86
+ * 将实体标记为已删除(从缓存中移除)
87
+ *
88
+ * 用于 DELETE 操作后清理内存状态。实体不会被销毁,但会被标记为 `removed=true, local=false`。
89
+ *
90
+ * @param adapter - PGlite 适配器实例
91
+ * @param EntityType - 实体类型
92
+ * @param ids - 要删除的实体 ID 数组
93
+ *
94
+ * @example
95
+ * ```typescript
96
+ * // 删除后清理缓存
97
+ * await execute_query(client, 'DELETE FROM todos WHERE id = ANY($1)', [todoIds]);
98
+ * remove_entity_ids_from_cache(adapter, Todo, todoIds);
99
+ * ```
100
+ */
101
+ export declare const remove_entity_ids_from_cache: <T extends EntityType>(adapter: RxDBAdapterPGlite, EntityType: T, ids: any[]) => void;
102
+ //# sourceMappingURL=transaction_pglite_result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction_pglite_result.d.ts","sourceRoot":"","sources":["../src/transaction_pglite_result.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAsC,MAAM,YAAY,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAGhE;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,GAAG;IAC1C,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,UAAU,EAC5D,SAAS,iBAAiB,EAC1B,YAAY,CAAC,EACb,QAAQ,mBAAmB,EAC3B,eAAc,OAAe,KAC5B,YAAY,CAAC,CAAC,CAAC,EAkDjB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,gCAAgC,GAAI,CAAC,SAAS,UAAU,EACnE,SAAS,iBAAiB,EAC1B,YAAY,CAAC,EACb,QAAQ,mBAAmB,KAC1B,IAuBF,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,4BAA4B,GAAI,CAAC,SAAS,UAAU,EAC/D,SAAS,iBAAiB,EAC1B,YAAY,CAAC,EACb,KAAK,GAAG,EAAE,KACT,IAUF,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { RxDBBranch } from '../../packages/rxdb/src/index.ts';
2
+ import { RxDBAdapterPGlite } from '../RxDBAdapterPGlite.js';
3
+ /**
4
+ * 创建分支
5
+ *
6
+ * 从当前分支或指定变更点创建新分支
7
+ *
8
+ * @param adapter - PGlite 适配器实例
9
+ * @param branchId - 新分支 ID
10
+ * @param fromChangeId - 可选,从指定变更点创建分支
11
+ * @returns 创建的分支实体
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * // 从当前分支创建新分支
16
+ * const branch = await rxdb_adapter_create_branch(adapter, 'feature-01');
17
+ *
18
+ * // 从指定变更点创建分支
19
+ * const branch = await rxdb_adapter_create_branch(adapter, 'feature-02', 42);
20
+ * ```
21
+ */
22
+ declare const _default: (adapter: RxDBAdapterPGlite, branchId: string, fromChangeId?: number) => Promise<InstanceType<typeof RxDBBranch>>;
23
+ export default _default;
24
+ //# sourceMappingURL=create_branch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create_branch.d.ts","sourceRoot":"","sources":["../../src/version/create_branch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;GAkBG;yBAED,SAAS,iBAAiB,EAC1B,UAAU,MAAM,EAChB,eAAe,MAAM,KACpB,OAAO,CAAC,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;AAJ3C,wBA4EE"}
@@ -0,0 +1,18 @@
1
+ import { UUID } from '../../packages/rxdb/src/index.ts';
2
+ import { RxDBAdapterPGlite } from '../RxDBAdapterPGlite.js';
3
+ /**
4
+ * 切换事务 ID
5
+ *
6
+ * 生成 SQL 语句来重新创建所有实体表的触发器,注入新的事务 ID
7
+ *
8
+ * 注意:虽然理论上 PostgreSQL 可以通过修改 RxDBChange 表的列默认值来实现,
9
+ * 但由于事务中的触发器事件会导致 "cannot ALTER TABLE because it has pending trigger events" 错误,
10
+ * 因此我们必须采用与 SQLite 相同的方案:动态重建触发器
11
+ *
12
+ * @param adapter - PGlite 适配器实例
13
+ * @param branchId - 分支 ID
14
+ * @param transactionId - 事务 ID(可选,不传则清空)
15
+ * @returns SQL 语句数组(因为在事务中 query() 方法不支持多条语句)
16
+ */
17
+ export default function rxdb_adapter_switch_transaction_id(adapter: RxDBAdapterPGlite, branchId: string, transactionId?: UUID): string[];
18
+ //# sourceMappingURL=switch_transaction_id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch_transaction_id.d.ts","sourceRoot":"","sources":["../../src/version/switch_transaction_id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,IAAI,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAGjE;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,OAAO,UAAU,kCAAkC,CACxD,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,IAAI,GACnB,MAAM,EAAE,CAiBV"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiao/rxdb-adapter-pglite",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -25,12 +25,14 @@
25
25
  ]
26
26
  },
27
27
  "dependencies": {
28
+ "@electric-sql/pglite": "^0.3.14",
29
+ "object-hash": "^3.0.0",
28
30
  "rxjs": "^7.8.2",
29
- "@electric-sql/pglite": "^0.3.9",
30
- "@aiao/rxdb": "0.0.5",
31
- "@aiao/utils": "0.0.5"
31
+ "type-fest": "^5.3.1",
32
+ "@aiao/rxdb": "0.0.7",
33
+ "@aiao/utils": "0.0.7"
32
34
  },
33
35
  "devDependencies": {
34
- "@aiao/rxdb-test": "0.0.5"
36
+ "@aiao/rxdb-test": "0.0.7"
35
37
  }
36
38
  }
@@ -1,5 +0,0 @@
1
- import { EntityMetadata } from '@aiao/rxdb';
2
- import { RxDBAdapterPGlite } from './RxDBAdapterPGlite.js';
3
- declare const _default: (adapter: RxDBAdapterPGlite, metadata: EntityMetadata) => string;
4
- export default _default;
5
- //# sourceMappingURL=generate_table_create_sql.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate_table_create_sql.d.ts","sourceRoot":"","sources":["../src/generate_table_create_sql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAgB,MAAM,YAAY,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;yBAqE3C,SAAS,iBAAiB,EAAE,UAAU,cAAc;AAApE,wBAKE"}