@aiao/rxdb-adapter-supabase 0.0.13 → 0.0.14
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/RxDBAdapterSupabase.d.ts +9 -1
- package/dist/RxDBAdapterSupabase.d.ts.map +1 -1
- package/dist/RxDBAdapterSupabase.utils.d.ts +1 -1
- package/dist/RxDBAdapterSupabase.utils.d.ts.map +1 -1
- package/dist/SupabaseRepository.d.ts.map +1 -1
- package/dist/SupabaseTreeRepository.d.ts.map +1 -1
- package/dist/handle_supabase_change.d.ts.map +1 -1
- package/dist/index.js +198 -196
- package/dist/rule_group_builder.d.ts.map +1 -1
- package/dist/transform.d.ts +1 -1
- package/dist/transform.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -3,6 +3,13 @@ import { SupabaseClient } from '@supabase/supabase-js';
|
|
|
3
3
|
import { Observable } from 'rxjs';
|
|
4
4
|
import { SupabaseAdapterOptions } from './supabase.interface.js';
|
|
5
5
|
export declare const ADAPTER_NAME = "supabase";
|
|
6
|
+
/** pushChanges 参数结构(已压缩的变更) */
|
|
7
|
+
interface CompressedChange {
|
|
8
|
+
entityKey: string;
|
|
9
|
+
finalType: 'INSERT' | 'UPDATE' | 'DELETE' | null;
|
|
10
|
+
finalPatch: Record<string, unknown> | null;
|
|
11
|
+
inversePatch: Record<string, unknown> | null;
|
|
12
|
+
}
|
|
6
13
|
/**
|
|
7
14
|
* Supabase 适配器
|
|
8
15
|
*
|
|
@@ -88,7 +95,7 @@ export declare class RxDBAdapterSupabase extends RxDBAdapterRemoteBase implement
|
|
|
88
95
|
* @param changes - 待推送的变更(已压缩)
|
|
89
96
|
* @throws 当任何变更推送失败时抛出错误
|
|
90
97
|
*/
|
|
91
|
-
pushChanges(changes:
|
|
98
|
+
pushChanges(changes: CompressedChange[]): Promise<void>;
|
|
92
99
|
/**
|
|
93
100
|
* 应用压缩后的变更到远程(事务)
|
|
94
101
|
*
|
|
@@ -131,4 +138,5 @@ export declare class RxDBAdapterSupabase extends RxDBAdapterRemoteBase implement
|
|
|
131
138
|
/** 执行 delete(非事务) */
|
|
132
139
|
private executeDelete;
|
|
133
140
|
}
|
|
141
|
+
export {};
|
|
134
142
|
//# sourceMappingURL=RxDBAdapterSupabase.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RxDBAdapterSupabase.d.ts","sourceRoot":"","sources":["../src/RxDBAdapterSupabase.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,YAAY,EACZ,wBAAwB,EACxB,YAAY,EACZ,SAAS,EACT,IAAI,EACJ,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAqB,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAiC,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAoB,UAAU,EAAM,MAAM,MAAM,CAAC;AAKxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAIjE,eAAO,MAAM,YAAY,aAAa,CAAC;AAEvC;;;;;;;;;;;;;;GAcG;AACH,qBAAa,mBAAoB,SAAQ,qBAAsB,YAAW,YAAY;;IAWlF,QAAQ,CAAC,OAAO,EAAE,sBAAsB;IAR1C,QAAQ,CAAC,IAAI,cAAgB;IAE7B,IAAI,MAAM,IAAI,cAAc,CAE3B;gBAGC,IAAI,EAAE,IAAI,EACD,OAAO,EAAE,sBAAsB;IAUpC,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC;IAiBhC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAQhC;;OAEG;IACG,QAAQ,CAAC,CAAC,SAAS,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAK7F;;OAEG;IACG,UAAU,CAAC,CAAC,SAAS,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAK/F;;;;;OAKG;IACG,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IA+B/F,aAAa,CAAC,CAAC,SAAS,UAAU,EAAE,EAAE,SAAS,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE;IAmB5F,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB9D;;;;;;;;;;;;;;OAcG;IACG,WAAW,CACf,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,MAAa,EACpB,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAC3B,MAAM,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,GACtB,OAAO,CAAC,YAAY,EAAE,CAAC;IAoD1B;;;;;;;;;;;;;;;;OAgBG;IACG,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAC1B,OAAO,CAAC;QACT,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IAmDF;;;;;;OAMG;IACG,WAAW,CAAC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"RxDBAdapterSupabase.d.ts","sourceRoot":"","sources":["../src/RxDBAdapterSupabase.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ export declare function group_by_type<T extends EntityType>(entities: InstanceTy
|
|
|
7
7
|
export declare function build_upsert_params<T extends EntityType>(entityMap: Map<T, Set<InstanceType<T>>>, userId?: string): Array<{
|
|
8
8
|
table: string;
|
|
9
9
|
schema: string;
|
|
10
|
-
data:
|
|
10
|
+
data: Record<string, unknown>[];
|
|
11
11
|
}>;
|
|
12
12
|
/** 构建 delete RPC 参数 */
|
|
13
13
|
export declare function build_delete_params<T extends EntityType>(entityMap: Map<T, Set<InstanceType<T>>>): Array<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RxDBAdapterSupabase.utils.d.ts","sourceRoot":"","sources":["../src/RxDBAdapterSupabase.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAqB,MAAM,YAAY,CAAC;AAE3D;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,UAAU,EAChD,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GAC1B,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAUvC;AAED,uBAAuB;AACvB,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,UAAU,EACtD,SAAS,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EACvC,MAAM,CAAC,EAAE,MAAM,GACd,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"RxDBAdapterSupabase.utils.d.ts","sourceRoot":"","sources":["../src/RxDBAdapterSupabase.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAqB,MAAM,YAAY,CAAC;AAE3D;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,UAAU,EAChD,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GAC1B,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAUvC;AAED,uBAAuB;AACvB,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,UAAU,EACtD,SAAS,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EACvC,MAAM,CAAC,EAAE,MAAM,GACd,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;CAAE,CAAC,CAc3E;AAED,uBAAuB;AACvB,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,UAAU,EACtD,SAAS,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GACtC,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAazD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseRepository.d.ts","sourceRoot":"","sources":["../src/SupabaseRepository.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"SupabaseRepository.d.ts","sourceRoot":"","sources":["../src/SupabaseRepository.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAa,MAAM,YAAY,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAkC,cAAc,EAAE,MAAM,YAAY,CAAC;AAK9F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAGpE;;;GAGG;AACH,qBAAa,kBAAkB,CAAC,CAAC,SAAS,UAAU,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;IAIrG,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,mBAAmB;IAHjD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;gBAGvB,OAAO,EAAE,mBAAmB,EAC/C,UAAU,EAAE,CAAC;IAMf;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,EAAE,aAAa,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAwCnF;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IA2B1E;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAW/D;;OAEG;IACG,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;IAMhG;;;;OAIG;IACG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAU/D,6CAA6C;IAC7C,OAAO,CAAC,uBAAuB;IAgC/B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IA2B7B;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IAuBpC,qBAAqB;IACrB,OAAO,CAAC,sBAAsB;IAY9B,yBAAyB;IACzB,OAAO,CAAC,mBAAmB;IAI3B,0BAA0B;IAC1B,OAAO,CAAC,UAAU;CAGnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseTreeRepository.d.ts","sourceRoot":"","sources":["../src/SupabaseTreeRepository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;;;;GAKG;AACH,qBAAa,sBAAsB,CAAC,CAAC,SAAS,UAAU,CAAE,SAAQ,kBAAkB,CAAC,CAAC,CAAE,YAAW,eAAe,CAAC,CAAC,CAAC;gBACvG,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,CAAC;IAIvD;;;;;;OAMG;IACG,eAAe,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAoB9E;;;;;;OAMG;IACG,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAcpE;;;;;OAKG;IACG,aAAa,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAyB5E;;;;;OAKG;IACG,cAAc,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAOlE;;;;OAIG;YACW,uBAAuB;
|
|
1
|
+
{"version":3,"file":"SupabaseTreeRepository.d.ts","sourceRoot":"","sources":["../src/SupabaseTreeRepository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;;;;GAKG;AACH,qBAAa,sBAAsB,CAAC,CAAC,SAAS,UAAU,CAAE,SAAQ,kBAAkB,CAAC,CAAC,CAAE,YAAW,eAAe,CAAC,CAAC,CAAC;gBACvG,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,CAAC;IAIvD;;;;;;OAMG;IACG,eAAe,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAoB9E;;;;;;OAMG;IACG,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAcpE;;;;;OAKG;IACG,aAAa,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAyB5E;;;;;OAKG;IACG,cAAc,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAOlE;;;;OAIG;YACW,uBAAuB;IAiErC;;;;OAIG;YACW,qBAAqB;IAsDnC;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAW7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle_supabase_change.d.ts","sourceRoot":"","sources":["../src/handle_supabase_change.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,KAAK,eAAe,GAAG,8BAA8B,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"handle_supabase_change.d.ts","sourceRoot":"","sources":["../src/handle_supabase_change.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,KAAK,eAAe,GAAG,8BAA8B,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAmB/E;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI,CAmCjG"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EntityRemoteRemovedEvent as O, EntityRemoteUpdatedEvent as W, EntityRemoteCreatedEvent as U, isRuleGroup as A, getEntityMetadata as
|
|
1
|
+
import { EntityRemoteRemovedEvent as O, EntityRemoteUpdatedEvent as W, EntityRemoteCreatedEvent as U, isRuleGroup as A, getEntityMetadata as E, PropertyType as $, RepositoryBase as K, RxDBAdapterRemoteBase as z } from "@aiao/rxdb";
|
|
2
2
|
import { createClient as L } from "@supabase/supabase-js";
|
|
3
3
|
import { defer as D, from as N, map as k, of as Q } from "rxjs";
|
|
4
4
|
class S extends Error {
|
|
@@ -30,19 +30,19 @@ function J(i, t) {
|
|
|
30
30
|
if (t.table !== "RxDBChange" || t.eventType !== "INSERT") return;
|
|
31
31
|
const e = t.new;
|
|
32
32
|
if (!e) return;
|
|
33
|
-
const { namespace:
|
|
33
|
+
const { namespace: s, entity: n, entityId: a, type: r, patch: o, clientId: c } = e, d = i.rxdb.context.clientId;
|
|
34
34
|
if (c && d && c === d || !a || !r) return;
|
|
35
|
-
const f = V[
|
|
36
|
-
if (!
|
|
37
|
-
const
|
|
35
|
+
const f = r, u = V[f];
|
|
36
|
+
if (!u) return;
|
|
37
|
+
const p = { id: a, ...o };
|
|
38
38
|
i.rxdb.dispatchEvent(
|
|
39
|
-
new
|
|
39
|
+
new u([
|
|
40
40
|
{
|
|
41
|
-
type:
|
|
42
|
-
namespace:
|
|
43
|
-
entity:
|
|
41
|
+
type: f,
|
|
42
|
+
namespace: s || "public",
|
|
43
|
+
entity: n,
|
|
44
44
|
id: a,
|
|
45
|
-
data:
|
|
45
|
+
data: p,
|
|
46
46
|
recordAt: e.createdAt ? new Date(e.createdAt) : /* @__PURE__ */ new Date()
|
|
47
47
|
}
|
|
48
48
|
])
|
|
@@ -92,113 +92,113 @@ function H(i, t) {
|
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
function B(i, t, e) {
|
|
95
|
-
const [
|
|
96
|
-
return
|
|
97
|
-
field:
|
|
95
|
+
const [s, ...n] = i.split(".");
|
|
96
|
+
return n.length === 0 ? { field: i, operator: t, value: e } : {
|
|
97
|
+
field: s,
|
|
98
98
|
operator: "exists",
|
|
99
|
-
where: { combinator: "and", rules: [B(
|
|
99
|
+
where: { combinator: "and", rules: [B(n.join("."), t, e)] }
|
|
100
100
|
};
|
|
101
101
|
}
|
|
102
|
-
function x(i, t, e,
|
|
102
|
+
function x(i, t, e, s) {
|
|
103
103
|
if (!t?.rules?.length) return i;
|
|
104
104
|
if (t.rules.length === 1) {
|
|
105
105
|
const a = t.rules[0];
|
|
106
|
-
return A(a) ? x(i, a, e,
|
|
106
|
+
return A(a) ? x(i, a, e, s) : I(i, a, e, s);
|
|
107
107
|
}
|
|
108
108
|
if (t.combinator === "and")
|
|
109
109
|
return t.rules.reduce(
|
|
110
|
-
(a, r) => A(r) ? x(a, r, e,
|
|
110
|
+
(a, r) => A(r) ? x(a, r, e, s) : I(a, r, e, s),
|
|
111
111
|
i
|
|
112
112
|
);
|
|
113
|
-
const
|
|
113
|
+
const n = t.rules.map((a) => {
|
|
114
114
|
if (A(a)) throw new Error("Nested OR conditions not supported");
|
|
115
115
|
const { field: r, operator: o, value: c } = a;
|
|
116
116
|
return `${r}.${H(o, c)}`;
|
|
117
117
|
});
|
|
118
|
-
return i.or(
|
|
118
|
+
return i.or(n.join(","));
|
|
119
119
|
}
|
|
120
|
-
function I(i, t, e,
|
|
121
|
-
const { field:
|
|
122
|
-
return typeof
|
|
120
|
+
function I(i, t, e, s) {
|
|
121
|
+
const { field: n, operator: a, value: r } = t;
|
|
122
|
+
return typeof n == "string" && n.includes(".") ? I(i, B(n, a, r), e, s) : a === "exists" || a === "notExists" ? Y(i, t, e, s) : F(i, n, a, r);
|
|
123
123
|
}
|
|
124
|
-
function Y(i, t, e,
|
|
125
|
-
const { field:
|
|
124
|
+
function Y(i, t, e, s) {
|
|
125
|
+
const { field: n, operator: a, where: r } = t, o = String(n), c = e?.relationMap?.get(o);
|
|
126
126
|
if (!c)
|
|
127
127
|
throw new Error(`Relation '${o}' not found in '${e?.name || "unknown"}'`);
|
|
128
128
|
const d = c.mappedEntity;
|
|
129
129
|
if (!r?.rules?.length)
|
|
130
130
|
return a === "exists" ? i.not(d, "is", null) : i.is(d, null);
|
|
131
|
-
const f = e ? M(c,
|
|
131
|
+
const f = e ? M(c, s, e) : void 0;
|
|
132
132
|
if (!f) throw new Error(`Cannot resolve metadata for '${o}'`);
|
|
133
|
-
return R(i, d, r, f,
|
|
133
|
+
return R(i, d, r, f, s, d);
|
|
134
134
|
}
|
|
135
|
-
function R(i, t, e,
|
|
135
|
+
function R(i, t, e, s, n, a = "") {
|
|
136
136
|
if (!e?.rules?.length) return i;
|
|
137
137
|
let r = i;
|
|
138
138
|
for (const o of e.rules) {
|
|
139
139
|
if (A(o)) {
|
|
140
|
-
r = R(r, t, o,
|
|
140
|
+
r = R(r, t, o, s, n, a);
|
|
141
141
|
continue;
|
|
142
142
|
}
|
|
143
|
-
const { field: c, operator: d, value: f } = o;
|
|
143
|
+
const { field: c, operator: d, value: f, where: u } = o;
|
|
144
144
|
if (d === "exists" || d === "notExists") {
|
|
145
|
-
const
|
|
146
|
-
if (!
|
|
147
|
-
const
|
|
148
|
-
if (
|
|
149
|
-
const
|
|
150
|
-
r = R(r,
|
|
145
|
+
const h = s?.relationMap?.get(String(c));
|
|
146
|
+
if (!h) throw new Error(`Relation '${c}' not found in ${t}`);
|
|
147
|
+
const l = h.mappedEntity, m = u, w = M(h, n, s);
|
|
148
|
+
if (m?.rules?.length) {
|
|
149
|
+
const y = a ? `${a}.${l}` : l;
|
|
150
|
+
r = R(r, l, m, w, n, y);
|
|
151
151
|
} else
|
|
152
|
-
r = d === "exists" ? r.not(
|
|
152
|
+
r = d === "exists" ? r.not(l, "is", null) : r.is(l, null);
|
|
153
153
|
continue;
|
|
154
154
|
}
|
|
155
|
-
const
|
|
156
|
-
r = F(r,
|
|
155
|
+
const p = a ? `${a}.${c}` : `${t}.${c}`;
|
|
156
|
+
r = F(r, p, d, f);
|
|
157
157
|
}
|
|
158
158
|
return r;
|
|
159
159
|
}
|
|
160
|
-
function F(i, t, e,
|
|
161
|
-
const
|
|
160
|
+
function F(i, t, e, s) {
|
|
161
|
+
const n = C(s);
|
|
162
162
|
if (t.includes(".") && e === "between") {
|
|
163
|
-
const [r, o] =
|
|
163
|
+
const [r, o] = n;
|
|
164
164
|
return i.gte(t, r).lte(t, o);
|
|
165
165
|
}
|
|
166
166
|
switch (e) {
|
|
167
167
|
case "=":
|
|
168
|
-
return
|
|
168
|
+
return n === null ? i.is(t, null) : i.eq(t, n);
|
|
169
169
|
case "!=":
|
|
170
|
-
return
|
|
170
|
+
return n === null ? i.not(t, "is", null) : i.neq(t, n);
|
|
171
171
|
case "<":
|
|
172
|
-
return i.lt(t,
|
|
172
|
+
return i.lt(t, n);
|
|
173
173
|
case ">":
|
|
174
|
-
return i.gt(t,
|
|
174
|
+
return i.gt(t, n);
|
|
175
175
|
case "<=":
|
|
176
|
-
return i.lte(t,
|
|
176
|
+
return i.lte(t, n);
|
|
177
177
|
case ">=":
|
|
178
|
-
return i.gte(t,
|
|
178
|
+
return i.gte(t, n);
|
|
179
179
|
case "in":
|
|
180
|
-
return i.in(t,
|
|
180
|
+
return i.in(t, n);
|
|
181
181
|
case "notIn":
|
|
182
|
-
return i.not(t, "in", `(${
|
|
182
|
+
return i.not(t, "in", `(${n.join(",")})`);
|
|
183
183
|
case "contains":
|
|
184
184
|
case "includes":
|
|
185
|
-
return i.ilike(t, `%${
|
|
185
|
+
return i.ilike(t, `%${n}%`);
|
|
186
186
|
case "notContains":
|
|
187
|
-
return i.not(t, "ilike", `%${
|
|
187
|
+
return i.not(t, "ilike", `%${n}%`);
|
|
188
188
|
case "startsWith":
|
|
189
|
-
return i.ilike(t, `${
|
|
189
|
+
return i.ilike(t, `${n}%`);
|
|
190
190
|
case "notStartsWith":
|
|
191
|
-
return i.not(t, "ilike", `${
|
|
191
|
+
return i.not(t, "ilike", `${n}%`);
|
|
192
192
|
case "endsWith":
|
|
193
|
-
return i.ilike(t, `%${
|
|
193
|
+
return i.ilike(t, `%${n}`);
|
|
194
194
|
case "notEndsWith":
|
|
195
|
-
return i.not(t, "ilike", `%${
|
|
195
|
+
return i.not(t, "ilike", `%${n}`);
|
|
196
196
|
case "between": {
|
|
197
|
-
const [r, o] =
|
|
197
|
+
const [r, o] = n;
|
|
198
198
|
return i.gte(t, r).lte(t, o);
|
|
199
199
|
}
|
|
200
200
|
case "notBetween": {
|
|
201
|
-
const [r, o] =
|
|
201
|
+
const [r, o] = n;
|
|
202
202
|
return i.or(`${t}.lt.${r},${t}.gt.${o}`);
|
|
203
203
|
}
|
|
204
204
|
case "null":
|
|
@@ -214,15 +214,15 @@ function F(i, t, e, n) {
|
|
|
214
214
|
function T(i) {
|
|
215
215
|
const t = /* @__PURE__ */ new Map();
|
|
216
216
|
for (const e of i) {
|
|
217
|
-
const
|
|
218
|
-
t.has(
|
|
217
|
+
const s = e.constructor;
|
|
218
|
+
t.has(s) || t.set(s, /* @__PURE__ */ new Set()), t.get(s).add(e);
|
|
219
219
|
}
|
|
220
220
|
return t;
|
|
221
221
|
}
|
|
222
222
|
function v(i, t) {
|
|
223
223
|
const e = [];
|
|
224
|
-
for (const [
|
|
225
|
-
const a =
|
|
224
|
+
for (const [s, n] of i) {
|
|
225
|
+
const a = E(s), r = Array.from(n);
|
|
226
226
|
e.push({
|
|
227
227
|
table: a.name,
|
|
228
228
|
schema: a.namespace,
|
|
@@ -233,12 +233,12 @@ function v(i, t) {
|
|
|
233
233
|
}
|
|
234
234
|
function Z(i) {
|
|
235
235
|
const t = [];
|
|
236
|
-
for (const [e,
|
|
237
|
-
const
|
|
236
|
+
for (const [e, s] of i) {
|
|
237
|
+
const n = E(e);
|
|
238
238
|
t.push({
|
|
239
|
-
table:
|
|
240
|
-
schema:
|
|
241
|
-
ids: Array.from(
|
|
239
|
+
table: n.name,
|
|
240
|
+
schema: n.namespace,
|
|
241
|
+
ids: Array.from(s).map((a) => a.id)
|
|
242
242
|
});
|
|
243
243
|
}
|
|
244
244
|
return t;
|
|
@@ -250,10 +250,10 @@ function j(i, t) {
|
|
|
250
250
|
return i instanceof Date ? i : new Date(i);
|
|
251
251
|
case $.keyValue:
|
|
252
252
|
if (typeof i == "object" && t.properties) {
|
|
253
|
-
const e = {};
|
|
253
|
+
const e = i, s = {};
|
|
254
254
|
for (const n of t.properties)
|
|
255
|
-
|
|
256
|
-
return
|
|
255
|
+
e[n.name] !== void 0 && (s[n.name] = j(e[n.name], n));
|
|
256
|
+
return s;
|
|
257
257
|
}
|
|
258
258
|
return i;
|
|
259
259
|
case $.boolean:
|
|
@@ -266,16 +266,16 @@ function j(i, t) {
|
|
|
266
266
|
}
|
|
267
267
|
}
|
|
268
268
|
function G(i, t, e) {
|
|
269
|
-
const
|
|
270
|
-
for (const
|
|
271
|
-
const a = t.propertyMap.get(
|
|
272
|
-
n
|
|
269
|
+
const s = new i();
|
|
270
|
+
for (const n of Object.keys(e)) {
|
|
271
|
+
const a = t.propertyMap.get(n);
|
|
272
|
+
s[n] = a ? j(e[n], a) : e[n];
|
|
273
273
|
}
|
|
274
|
-
return
|
|
274
|
+
return s;
|
|
275
275
|
}
|
|
276
276
|
class P extends K {
|
|
277
277
|
constructor(t, e) {
|
|
278
|
-
super(t.rxdb, e), this.adapter = t, this.metadata =
|
|
278
|
+
super(t.rxdb, e), this.adapter = t, this.metadata = E(e);
|
|
279
279
|
}
|
|
280
280
|
metadata;
|
|
281
281
|
/**
|
|
@@ -283,24 +283,26 @@ class P extends K {
|
|
|
283
283
|
*/
|
|
284
284
|
async find(t) {
|
|
285
285
|
const e = this.extract_relation_fields(t.where);
|
|
286
|
-
let
|
|
286
|
+
let s = "*";
|
|
287
287
|
if (e.size > 0) {
|
|
288
288
|
const o = Array.from(e);
|
|
289
|
-
|
|
289
|
+
s = `*, ${o.filter(
|
|
290
290
|
(d) => !o.some((f) => f !== d && f.startsWith(d + "."))
|
|
291
291
|
).map((d) => this.build_relation_select(d)).join(", ")}`;
|
|
292
292
|
}
|
|
293
|
-
let
|
|
294
|
-
if (
|
|
293
|
+
let n = this.get_client().select(s);
|
|
294
|
+
if (n = x(n, t.where, this.metadata, this.adapter.rxdb.schemaManager), t.orderBy?.length)
|
|
295
295
|
for (const o of t.orderBy)
|
|
296
|
-
|
|
296
|
+
n = n.order(o.field, { ascending: o.sort === "asc" });
|
|
297
297
|
if (t.offset !== void 0) {
|
|
298
298
|
const o = t.offset, c = t.limit !== void 0 ? o + t.limit - 1 : Number.MAX_SAFE_INTEGER;
|
|
299
|
-
|
|
300
|
-
} else t.limit !== void 0 && (
|
|
301
|
-
const { data: a, error: r } = await
|
|
299
|
+
n = n.range(o, c);
|
|
300
|
+
} else t.limit !== void 0 && (n = n.limit(t.limit));
|
|
301
|
+
const { data: a, error: r } = await n;
|
|
302
302
|
if (r) throw new g(`Failed to find entities: ${r.message}`);
|
|
303
|
-
return (a || []).map(
|
|
303
|
+
return (a || []).map(
|
|
304
|
+
(o) => G(this.EntityType, this.metadata, o)
|
|
305
|
+
);
|
|
304
306
|
}
|
|
305
307
|
/**
|
|
306
308
|
* 查询实体数量
|
|
@@ -308,11 +310,11 @@ class P extends K {
|
|
|
308
310
|
async count(t) {
|
|
309
311
|
if (t.groupBy) throw new Error("groupBy not supported yet");
|
|
310
312
|
const e = this.extract_relation_fields(t.where);
|
|
311
|
-
let
|
|
312
|
-
e.size > 0 && (
|
|
313
|
-
let
|
|
314
|
-
|
|
315
|
-
const { count: a, error: r } = await
|
|
313
|
+
let s = "*";
|
|
314
|
+
e.size > 0 && (s = `*, ${Array.from(e).map((o) => this.build_relation_select(o)).join(", ")}`);
|
|
315
|
+
let n = this.get_client().select(s, { count: "exact", head: !0 });
|
|
316
|
+
n = x(n, t.where, this.metadata, this.adapter.rxdb.schemaManager);
|
|
317
|
+
const { count: a, error: r } = await n;
|
|
316
318
|
if (r) {
|
|
317
319
|
if (!r.message)
|
|
318
320
|
return console.warn("Supabase count returned empty error, returning 0. Options:", JSON.stringify(t)), 0;
|
|
@@ -324,19 +326,19 @@ class P extends K {
|
|
|
324
326
|
* 创建实体
|
|
325
327
|
*/
|
|
326
328
|
async create(t) {
|
|
327
|
-
const e = { ...t },
|
|
328
|
-
|
|
329
|
-
const { data:
|
|
329
|
+
const e = { ...t }, s = this.rxdb.context.userId;
|
|
330
|
+
s && (e.createdBy = s);
|
|
331
|
+
const { data: n, error: a } = await this.get_client().insert(e).select().single();
|
|
330
332
|
if (a) throw new g(`Failed to create entity: ${a.message}`);
|
|
331
|
-
return
|
|
333
|
+
return n;
|
|
332
334
|
}
|
|
333
335
|
/**
|
|
334
336
|
* 更新实体
|
|
335
337
|
*/
|
|
336
338
|
async update(t, e) {
|
|
337
|
-
const { data:
|
|
338
|
-
if (
|
|
339
|
-
return
|
|
339
|
+
const { data: s, error: n } = await this.get_client().update(e).eq("id", t.id).select().single();
|
|
340
|
+
if (n) throw new g(`Failed to update entity: ${n.message}`);
|
|
341
|
+
return s;
|
|
340
342
|
}
|
|
341
343
|
/**
|
|
342
344
|
* 删除实体
|
|
@@ -353,11 +355,11 @@ class P extends K {
|
|
|
353
355
|
// ============================================
|
|
354
356
|
/** 提取查询中的关系字段路径(用于 EXISTS 查询的 INNER JOIN) */
|
|
355
357
|
extract_relation_fields(t) {
|
|
356
|
-
const e = /* @__PURE__ */ new Set(),
|
|
357
|
-
if (
|
|
358
|
-
for (const r of
|
|
359
|
-
if (r
|
|
360
|
-
|
|
358
|
+
const e = /* @__PURE__ */ new Set(), s = (n, a = "") => {
|
|
359
|
+
if (n?.rules) {
|
|
360
|
+
for (const r of n.rules)
|
|
361
|
+
if (A(r))
|
|
362
|
+
s(r, a);
|
|
361
363
|
else if (typeof r.field == "string" && r.field.includes(".")) {
|
|
362
364
|
const o = r.field.split(".");
|
|
363
365
|
for (let c = 1; c < o.length; c++) {
|
|
@@ -366,11 +368,11 @@ class P extends K {
|
|
|
366
368
|
}
|
|
367
369
|
} else if (r.operator === "exists" || r.operator === "notExists") {
|
|
368
370
|
const o = String(r.field), c = a ? `${a}.${o}` : o;
|
|
369
|
-
this.metadata.relationMap?.has(o) && e.add(c), r.where &&
|
|
371
|
+
this.metadata.relationMap?.has(o) && e.add(c), "where" in r && r.where && s(r.where, c);
|
|
370
372
|
}
|
|
371
373
|
}
|
|
372
374
|
};
|
|
373
|
-
return
|
|
375
|
+
return s(t), e;
|
|
374
376
|
}
|
|
375
377
|
/**
|
|
376
378
|
* 构建关系字段的 SELECT 语法
|
|
@@ -379,18 +381,18 @@ class P extends K {
|
|
|
379
381
|
build_relation_select(t) {
|
|
380
382
|
const e = t.split(".");
|
|
381
383
|
if (e.length === 1) return this.build_single_relation_select(e[0]);
|
|
382
|
-
const
|
|
383
|
-
let
|
|
384
|
+
const s = [];
|
|
385
|
+
let n = this.metadata;
|
|
384
386
|
for (const r of e) {
|
|
385
|
-
const o =
|
|
387
|
+
const o = n.relationMap?.get(r);
|
|
386
388
|
if (!o) return `${r}(id)`;
|
|
387
|
-
|
|
389
|
+
s.push({ tableName: o.mappedEntity, kind: o.kind, sourceEntity: n.name });
|
|
388
390
|
const c = this.adapter.rxdb.schemaManager.getEntityMetadata(o.mappedEntity, o.mappedNamespace ?? "");
|
|
389
|
-
c && (
|
|
391
|
+
c && (n = c);
|
|
390
392
|
}
|
|
391
|
-
let a = this.build_relation_segment(
|
|
392
|
-
for (let r =
|
|
393
|
-
a = this.build_relation_segment(
|
|
393
|
+
let a = this.build_relation_segment(s[s.length - 1], !0);
|
|
394
|
+
for (let r = s.length - 2; r >= 0; r--)
|
|
395
|
+
a = this.build_relation_segment(s[r], !0).replace("(*)", `(*, ${a})`);
|
|
394
396
|
return a;
|
|
395
397
|
}
|
|
396
398
|
/**
|
|
@@ -400,25 +402,25 @@ class P extends K {
|
|
|
400
402
|
build_single_relation_select(t) {
|
|
401
403
|
const e = this.metadata.relationMap?.get(t);
|
|
402
404
|
if (!e) return `${t}(id)`;
|
|
403
|
-
const
|
|
405
|
+
const s = e.mappedEntity, n = this.metadata.name;
|
|
404
406
|
if (e.kind === "m:1" || e.kind === "1:1") {
|
|
405
|
-
const a = `${
|
|
406
|
-
return `${
|
|
407
|
+
const a = `${n}_${t}Id_fkey`;
|
|
408
|
+
return `${s}!${a}(*)`;
|
|
407
409
|
}
|
|
408
410
|
if (e.kind === "m:n") {
|
|
409
|
-
const a = this.get_join_table_name(
|
|
410
|
-
return `${
|
|
411
|
+
const a = this.get_join_table_name(n, s);
|
|
412
|
+
return `${s}!${a}(*)`;
|
|
411
413
|
}
|
|
412
|
-
return `${
|
|
414
|
+
return `${s}(*)`;
|
|
413
415
|
}
|
|
414
416
|
/** 构建关系 SELECT 片段 */
|
|
415
417
|
build_relation_segment(t, e) {
|
|
416
|
-
const
|
|
418
|
+
const s = e ? "!inner" : "";
|
|
417
419
|
if (t.kind === "m:n") {
|
|
418
|
-
const
|
|
419
|
-
return `${t.tableName}!${
|
|
420
|
+
const n = this.get_join_table_name(t.sourceEntity, t.tableName);
|
|
421
|
+
return `${t.tableName}!${n}${s}(*)`;
|
|
420
422
|
}
|
|
421
|
-
return `${t.tableName}${
|
|
423
|
+
return `${t.tableName}${s}(*)`;
|
|
422
424
|
}
|
|
423
425
|
/** 获取 m:n 中间表名(按字母顺序) */
|
|
424
426
|
get_join_table_name(t, e) {
|
|
@@ -441,16 +443,16 @@ class q extends P {
|
|
|
441
443
|
* - 不指定 entityId 时:返回所有根节点及其子孙
|
|
442
444
|
*/
|
|
443
445
|
async findDescendants(t) {
|
|
444
|
-
const { entityId: e, level:
|
|
446
|
+
const { entityId: e, level: s = 100 } = t, { data: n, error: a } = await this.adapter.client.rpc(
|
|
445
447
|
e ? "get_descendants" : "get_root_descendants",
|
|
446
|
-
e ? { root_id: e, max_level:
|
|
448
|
+
e ? { root_id: e, max_level: s } : { max_level: s }
|
|
447
449
|
);
|
|
448
450
|
if (a) {
|
|
449
451
|
if (a.message.includes("function") || a.message.includes("Could not find"))
|
|
450
452
|
return this.findDescendantsFallback(t);
|
|
451
453
|
throw new g(`Failed to find descendants: ${a.message}`);
|
|
452
454
|
}
|
|
453
|
-
return (
|
|
455
|
+
return (n || []).map((r) => this.transformRowToEntity(r));
|
|
454
456
|
}
|
|
455
457
|
/**
|
|
456
458
|
* 查询子孙节点数量
|
|
@@ -460,8 +462,8 @@ class q extends P {
|
|
|
460
462
|
* - 不指定 entityId 时:统计所有根节点及其后代的总数
|
|
461
463
|
*/
|
|
462
464
|
async countDescendants(t) {
|
|
463
|
-
const { entityId: e } = t,
|
|
464
|
-
return e ?
|
|
465
|
+
const { entityId: e } = t, s = await this.findDescendants(t);
|
|
466
|
+
return e ? s.length - 1 : s.length;
|
|
465
467
|
}
|
|
466
468
|
/**
|
|
467
469
|
* 查询祖先节点
|
|
@@ -470,19 +472,19 @@ class q extends P {
|
|
|
470
472
|
* 指定 entityId 时:包含当前节点 + 祖先节点
|
|
471
473
|
*/
|
|
472
474
|
async findAncestors(t) {
|
|
473
|
-
const { entityId: e, level:
|
|
475
|
+
const { entityId: e, level: s = 100 } = t;
|
|
474
476
|
if (!e)
|
|
475
477
|
return [];
|
|
476
|
-
const { data:
|
|
478
|
+
const { data: n, error: a } = await this.adapter.client.rpc("get_ancestors", {
|
|
477
479
|
node_id: e,
|
|
478
|
-
max_level:
|
|
480
|
+
max_level: s
|
|
479
481
|
});
|
|
480
482
|
if (a) {
|
|
481
483
|
if (a.message.includes("function") || a.message.includes("Could not find"))
|
|
482
484
|
return this.findAncestorsFallback(t);
|
|
483
485
|
throw new g(`Failed to find ancestors: ${a.message}`);
|
|
484
486
|
}
|
|
485
|
-
return (
|
|
487
|
+
return (n || []).map((r) => this.transformRowToEntity(r));
|
|
486
488
|
}
|
|
487
489
|
/**
|
|
488
490
|
* 查询祖先节点数量
|
|
@@ -500,7 +502,7 @@ class q extends P {
|
|
|
500
502
|
* 一次查询获取所有节点,在内存中构建树结构,避免 N+1 问题。
|
|
501
503
|
*/
|
|
502
504
|
async findDescendantsFallback(t) {
|
|
503
|
-
const { entityId: e, level:
|
|
505
|
+
const { entityId: e, level: s = 100 } = t, n = this.metadata.name, a = this.metadata.features?.tree?.hasChildren, { data: r, error: o } = await this.adapter.client.schema("public").from(n).select("*");
|
|
504
506
|
if (o)
|
|
505
507
|
throw new g(`Failed to find descendants: ${o.message}`);
|
|
506
508
|
if (!r || r.length === 0) return [];
|
|
@@ -519,18 +521,18 @@ class q extends P {
|
|
|
519
521
|
p = c.get(null) ?? [];
|
|
520
522
|
const h = p.map((l) => ({ node: l, depth: 0 }));
|
|
521
523
|
for (; h.length > 0; ) {
|
|
522
|
-
const { node: l, depth: m } = h.shift();
|
|
523
|
-
if (u.has(
|
|
524
|
-
u.add(
|
|
525
|
-
const
|
|
524
|
+
const { node: l, depth: m } = h.shift(), w = l.id;
|
|
525
|
+
if (u.has(w) || m > s) continue;
|
|
526
|
+
u.add(w);
|
|
527
|
+
const y = this.transformRowToEntity(l);
|
|
526
528
|
if (a) {
|
|
527
|
-
const
|
|
528
|
-
|
|
529
|
+
const b = c.get(w);
|
|
530
|
+
y.hasChildren = !!b && b.length > 0;
|
|
529
531
|
}
|
|
530
|
-
if (f.push(
|
|
531
|
-
const
|
|
532
|
-
for (const
|
|
533
|
-
h.push({ node:
|
|
532
|
+
if (f.push(y), m < s) {
|
|
533
|
+
const b = c.get(w) ?? [];
|
|
534
|
+
for (const _ of b)
|
|
535
|
+
h.push({ node: _, depth: m + 1 });
|
|
534
536
|
}
|
|
535
537
|
}
|
|
536
538
|
return f;
|
|
@@ -541,10 +543,10 @@ class q extends P {
|
|
|
541
543
|
* 一次查询获取所有节点,在内存中向上遍历,避免 N+1 问题。
|
|
542
544
|
*/
|
|
543
545
|
async findAncestorsFallback(t) {
|
|
544
|
-
const { entityId: e, level:
|
|
546
|
+
const { entityId: e, level: s = 100 } = t;
|
|
545
547
|
if (!e)
|
|
546
548
|
return [];
|
|
547
|
-
const
|
|
549
|
+
const n = this.metadata.name, a = this.metadata.features?.tree?.hasChildren, { data: r, error: o } = await this.adapter.client.schema("public").from(n).select("*");
|
|
548
550
|
if (o)
|
|
549
551
|
throw new g(`Failed to find ancestors: ${o.message}`);
|
|
550
552
|
if (!r || r.length === 0) return [];
|
|
@@ -556,7 +558,7 @@ class q extends P {
|
|
|
556
558
|
}
|
|
557
559
|
const f = [];
|
|
558
560
|
let u = e, p = 0;
|
|
559
|
-
for (; u && p <=
|
|
561
|
+
for (; u && p <= s; ) {
|
|
560
562
|
const h = c.get(u);
|
|
561
563
|
if (!h) break;
|
|
562
564
|
const l = this.transformRowToEntity(h);
|
|
@@ -573,8 +575,8 @@ class q extends P {
|
|
|
573
575
|
*/
|
|
574
576
|
transformRowToEntity(t) {
|
|
575
577
|
const e = new this.EntityType();
|
|
576
|
-
return Object.keys(t).forEach((
|
|
577
|
-
|
|
578
|
+
return Object.keys(t).forEach((s) => {
|
|
579
|
+
s !== "level" && (e[s] = t[s]);
|
|
578
580
|
}), e;
|
|
579
581
|
}
|
|
580
582
|
}
|
|
@@ -629,9 +631,9 @@ class it extends z {
|
|
|
629
631
|
* 在单个数据库事务中执行所有操作,确保原子性。
|
|
630
632
|
*/
|
|
631
633
|
async mutations(t) {
|
|
632
|
-
const e = this.rxdb.context.userId,
|
|
633
|
-
p_upserts:
|
|
634
|
-
p_deletes:
|
|
634
|
+
const e = this.rxdb.context.userId, s = [...v(t.create, e), ...v(t.update, e)], n = Z(t.remove), { data: a, error: r } = await this.#t.rpc("rxdb_mutations", {
|
|
635
|
+
p_upserts: s,
|
|
636
|
+
p_deletes: n
|
|
635
637
|
});
|
|
636
638
|
if (r)
|
|
637
639
|
throw new g(`Transaction failed: ${r.message}`);
|
|
@@ -646,18 +648,18 @@ class it extends z {
|
|
|
646
648
|
getRepository(t) {
|
|
647
649
|
if (this.repository_cache.has(t))
|
|
648
650
|
return this.repository_cache.get(t);
|
|
649
|
-
const
|
|
650
|
-
return this.repository_cache.set(t,
|
|
651
|
+
const s = E(t).features?.tree ? new q(this, t) : new P(this, t);
|
|
652
|
+
return this.repository_cache.set(t, s), s;
|
|
651
653
|
}
|
|
652
654
|
// ============================================
|
|
653
655
|
// 工具方法
|
|
654
656
|
// ============================================
|
|
655
657
|
async isTableExisted(t) {
|
|
656
|
-
const e =
|
|
657
|
-
if (
|
|
658
|
-
if (
|
|
658
|
+
const e = E(t), n = await this.getSchemaClient(e.namespace).from(e.name).select("*", { count: "exact", head: !0 });
|
|
659
|
+
if (n.status === 200) return !0;
|
|
660
|
+
if (n.status === 204) return !1;
|
|
659
661
|
throw new g(
|
|
660
|
-
`Failed to check table existence: ${
|
|
662
|
+
`Failed to check table existence: ${n.error?.message || `status ${n.status}`}`
|
|
661
663
|
);
|
|
662
664
|
}
|
|
663
665
|
// ============================================
|
|
@@ -678,16 +680,16 @@ class it extends z {
|
|
|
678
680
|
* 当提供 filter 参数时,会通过 JOIN 实体表并应用过滤条件,
|
|
679
681
|
* 只返回满足条件的实体对应的变更记录。
|
|
680
682
|
*/
|
|
681
|
-
async pullChanges(t, e = 1e3,
|
|
683
|
+
async pullChanges(t, e = 1e3, s, n) {
|
|
682
684
|
const a = [];
|
|
683
685
|
let r;
|
|
684
|
-
if (
|
|
685
|
-
const u =
|
|
686
|
-
if (r = await this.#n(u,
|
|
686
|
+
if (n && s?.length === 1) {
|
|
687
|
+
const u = s[0];
|
|
688
|
+
if (r = await this.#n(u, n), r.length === 0)
|
|
687
689
|
return [];
|
|
688
690
|
}
|
|
689
691
|
let o = this.#t.from("RxDBChange").select("*").gt("id", t).order("id", { ascending: !0 }).limit(e);
|
|
690
|
-
|
|
692
|
+
s && s.length > 0 && (o = o.in("entity", s)), r && (o = o.in("entityId", r));
|
|
691
693
|
const { data: c, error: d } = await o;
|
|
692
694
|
if (d)
|
|
693
695
|
throw new g(`Failed to pull changes: ${d.message}`);
|
|
@@ -716,13 +718,13 @@ class it extends z {
|
|
|
716
718
|
* ```
|
|
717
719
|
*/
|
|
718
720
|
async getChangeCount(t, e) {
|
|
719
|
-
let
|
|
720
|
-
e && e.length > 0 && (
|
|
721
|
-
const { count:
|
|
721
|
+
let s = this.#t.from("RxDBChange").select("*", { count: "exact", head: !0 }).gt("id", t);
|
|
722
|
+
e && e.length > 0 && (s = s.in("entity", e));
|
|
723
|
+
const { count: n, error: a } = await s;
|
|
722
724
|
if (a)
|
|
723
725
|
throw new g(`Failed to get change count: ${a.message}`);
|
|
724
726
|
let r = t;
|
|
725
|
-
if (
|
|
727
|
+
if (n && n > 0) {
|
|
726
728
|
let o = this.#t.from("RxDBChange").select("id").gt("id", t).order("id", { ascending: !1 }).limit(1);
|
|
727
729
|
e && e.length > 0 && (o = o.in("entity", e));
|
|
728
730
|
const { data: c, error: d } = await o;
|
|
@@ -731,7 +733,7 @@ class it extends z {
|
|
|
731
733
|
c && c.length > 0 && (r = c[0].id);
|
|
732
734
|
}
|
|
733
735
|
return {
|
|
734
|
-
count:
|
|
736
|
+
count: n ?? 0,
|
|
735
737
|
latestChangeId: r
|
|
736
738
|
};
|
|
737
739
|
}
|
|
@@ -749,18 +751,18 @@ class it extends z {
|
|
|
749
751
|
updates: /* @__PURE__ */ new Map(),
|
|
750
752
|
deletes: /* @__PURE__ */ new Map()
|
|
751
753
|
};
|
|
752
|
-
for (const
|
|
753
|
-
const { entityKey:
|
|
754
|
+
for (const s of t) {
|
|
755
|
+
const { entityKey: n, finalType: a, finalPatch: r, inversePatch: o } = s;
|
|
754
756
|
if (a)
|
|
755
757
|
switch (a) {
|
|
756
758
|
case "INSERT":
|
|
757
|
-
e.inserts.set(
|
|
759
|
+
e.inserts.set(n, { patch: r, inversePatch: o });
|
|
758
760
|
break;
|
|
759
761
|
case "UPDATE":
|
|
760
|
-
e.updates.set(
|
|
762
|
+
e.updates.set(n, { patch: r, inversePatch: o });
|
|
761
763
|
break;
|
|
762
764
|
case "DELETE":
|
|
763
|
-
e.deletes.set(
|
|
765
|
+
e.deletes.set(n, { patch: null, inversePatch: o });
|
|
764
766
|
break;
|
|
765
767
|
}
|
|
766
768
|
}
|
|
@@ -777,10 +779,10 @@ class it extends z {
|
|
|
777
779
|
* @param actions - 压缩后的变更操作集合
|
|
778
780
|
*/
|
|
779
781
|
async mergeChanges(t) {
|
|
780
|
-
const e = (/* @__PURE__ */ new Date()).toISOString(),
|
|
782
|
+
const e = (/* @__PURE__ */ new Date()).toISOString(), s = this.rxdb.context.userId, n = [], a = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
|
|
781
783
|
for (const [u, { inversePatch: p }] of t.deletes) {
|
|
782
784
|
const [h, l, m] = u.split(":"), w = h ? `${h}.${l}` : l;
|
|
783
|
-
|
|
785
|
+
n.push({
|
|
784
786
|
namespace: h || "public",
|
|
785
787
|
entity: l,
|
|
786
788
|
entityId: m,
|
|
@@ -796,7 +798,7 @@ class it extends z {
|
|
|
796
798
|
}
|
|
797
799
|
for (const [u, { patch: p, inversePatch: h }] of t.updates) {
|
|
798
800
|
const [l, m, w] = u.split(":"), y = l ? `${l}.${m}` : m;
|
|
799
|
-
|
|
801
|
+
n.push({
|
|
800
802
|
namespace: l || "public",
|
|
801
803
|
entity: m,
|
|
802
804
|
entityId: w,
|
|
@@ -807,12 +809,12 @@ class it extends z {
|
|
|
807
809
|
createdAt: e,
|
|
808
810
|
updatedAt: e
|
|
809
811
|
});
|
|
810
|
-
const b = a.get(y) ?? [],
|
|
811
|
-
|
|
812
|
+
const b = a.get(y) ?? [], _ = { id: w, ...p };
|
|
813
|
+
s && (_.updatedBy = s), b.push(_), a.set(y, b);
|
|
812
814
|
}
|
|
813
815
|
for (const [u, { patch: p, inversePatch: h }] of t.inserts) {
|
|
814
816
|
const [l, m, w] = u.split(":"), y = l ? `${l}.${m}` : m;
|
|
815
|
-
|
|
817
|
+
n.push({
|
|
816
818
|
namespace: l || "public",
|
|
817
819
|
entity: m,
|
|
818
820
|
entityId: w,
|
|
@@ -823,8 +825,8 @@ class it extends z {
|
|
|
823
825
|
createdAt: e,
|
|
824
826
|
updatedAt: e
|
|
825
827
|
});
|
|
826
|
-
const b = a.get(y) ?? [],
|
|
827
|
-
|
|
828
|
+
const b = a.get(y) ?? [], _ = { id: w, ...p };
|
|
829
|
+
s && (_.createdBy = s, _.updatedBy = s), b.push(_), a.set(y, b);
|
|
828
830
|
}
|
|
829
831
|
const o = Array.from(a.entries()).map(([u, p]) => {
|
|
830
832
|
const [h, l] = u.includes(".") ? u.split(".") : ["public", u];
|
|
@@ -835,7 +837,7 @@ class it extends z {
|
|
|
835
837
|
}), { data: d, error: f } = await this.#t.rpc("rxdb_mutations", {
|
|
836
838
|
p_upserts: o,
|
|
837
839
|
p_deletes: c,
|
|
838
|
-
p_changes:
|
|
840
|
+
p_changes: n,
|
|
839
841
|
p_skip_sync: !0
|
|
840
842
|
});
|
|
841
843
|
if (f)
|
|
@@ -862,12 +864,12 @@ class it extends z {
|
|
|
862
864
|
*/
|
|
863
865
|
fetchMetadata(t, e) {
|
|
864
866
|
return D(() => {
|
|
865
|
-
let
|
|
866
|
-
return
|
|
867
|
-
k(({ data:
|
|
867
|
+
let s = this.#t.from(t).select("id, updatedAt");
|
|
868
|
+
return s = x(s, e), N(s).pipe(
|
|
869
|
+
k(({ data: n, error: a }) => {
|
|
868
870
|
if (a)
|
|
869
871
|
throw new g(`Failed to fetch metadata: ${a.message}`);
|
|
870
|
-
return (
|
|
872
|
+
return (n ?? []).map((r) => ({
|
|
871
873
|
id: r.id,
|
|
872
874
|
updatedAt: r.updatedAt
|
|
873
875
|
}));
|
|
@@ -884,10 +886,10 @@ class it extends z {
|
|
|
884
886
|
*/
|
|
885
887
|
findByIds(t, e) {
|
|
886
888
|
return D(() => e.length === 0 ? Q([]) : N(this.#t.from(t).select("*").in("id", e)).pipe(
|
|
887
|
-
k(({ data:
|
|
888
|
-
if (
|
|
889
|
-
throw new g(`Failed to find by ids: ${
|
|
890
|
-
return
|
|
889
|
+
k(({ data: s, error: n }) => {
|
|
890
|
+
if (n)
|
|
891
|
+
throw new g(`Failed to find by ids: ${n.message}`);
|
|
892
|
+
return s ?? [];
|
|
891
893
|
})
|
|
892
894
|
));
|
|
893
895
|
}
|
|
@@ -900,9 +902,9 @@ class it extends z {
|
|
|
900
902
|
}
|
|
901
903
|
/** 执行 upsert(非事务) */
|
|
902
904
|
async executeUpsert(t) {
|
|
903
|
-
const e = [],
|
|
904
|
-
for (const [
|
|
905
|
-
const r =
|
|
905
|
+
const e = [], s = this.rxdb.context.userId;
|
|
906
|
+
for (const [n, a] of t) {
|
|
907
|
+
const r = E(n), o = this.getSchemaClient(r.namespace), c = Array.from(a), d = s ? c.map((p) => ({ ...p, createdBy: s, updatedBy: s })) : c, { data: f, error: u } = await o.from(r.name).upsert(d).select();
|
|
906
908
|
if (u)
|
|
907
909
|
throw new g(`Failed to upsert: ${u.message}`);
|
|
908
910
|
e.push(...f);
|
|
@@ -912,8 +914,8 @@ class it extends z {
|
|
|
912
914
|
/** 执行 delete(非事务) */
|
|
913
915
|
async executeDelete(t) {
|
|
914
916
|
const e = [];
|
|
915
|
-
for (const [
|
|
916
|
-
const a =
|
|
917
|
+
for (const [s, n] of t) {
|
|
918
|
+
const a = E(s), r = this.getSchemaClient(a.namespace), o = Array.from(n), c = o.map((f) => f.id), { error: d } = await r.from(a.name).delete().in("id", c);
|
|
917
919
|
if (d)
|
|
918
920
|
throw new g(`Failed to delete: ${d.message}`);
|
|
919
921
|
e.push(...o);
|
|
@@ -928,12 +930,12 @@ class it extends z {
|
|
|
928
930
|
* @returns 满足条件的 entityId 列表
|
|
929
931
|
*/
|
|
930
932
|
async #n(t, e) {
|
|
931
|
-
let
|
|
932
|
-
|
|
933
|
-
const { data:
|
|
933
|
+
let s = this.#t.from(t).select("id");
|
|
934
|
+
s = x(s, e);
|
|
935
|
+
const { data: n, error: a } = await s;
|
|
934
936
|
if (a)
|
|
935
937
|
throw new g(`Failed to query filtered entities: ${a.message}`);
|
|
936
|
-
return (
|
|
938
|
+
return (n ?? []).map((r) => r.id);
|
|
937
939
|
}
|
|
938
940
|
}
|
|
939
941
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule_group_builder.d.ts","sourceRoot":"","sources":["../src/rule_group_builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAEL,aAAa,EACb,KAAK,cAAc,EAGnB,KAAK,SAAS,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAMrE;;GAEG;AACH,KAAK,oBAAoB,GAAG,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"rule_group_builder.d.ts","sourceRoot":"","sources":["../src/rule_group_builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAEL,aAAa,EACb,KAAK,cAAc,EAGnB,KAAK,SAAS,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAMrE;;GAEG;AACH,KAAK,oBAAoB,GAAG,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAoGtF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,KAAK,EAAE,oBAAoB,EAC3B,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EACvB,QAAQ,CAAC,EAAE,cAAc,EACzB,aAAa,CAAC,EAAE,aAAa,GAC5B,oBAAoB,CA6BtB"}
|
package/dist/transform.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ import { EntityMetadata, EntityType } from '../packages/rxdb/src/index.ts';
|
|
|
2
2
|
/**
|
|
3
3
|
* 将 Supabase 行数据转换为实体实例
|
|
4
4
|
*/
|
|
5
|
-
export declare function transform_row_to_entity<T extends EntityType>(EntityType: T, metadata: EntityMetadata, row: Record<string,
|
|
5
|
+
export declare function transform_row_to_entity<T extends EntityType>(EntityType: T, metadata: EntityMetadata, row: Record<string, unknown>): InstanceType<T>;
|
|
6
6
|
//# sourceMappingURL=transform.d.ts.map
|
package/dist/transform.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAA0B,UAAU,
|
|
1
|
+
{"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAA0B,UAAU,EAA4B,MAAM,YAAY,CAAC;AAsC/G;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,UAAU,EAC1D,UAAU,EAAE,CAAC,EACb,QAAQ,EAAE,cAAc,EACxB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,YAAY,CAAC,CAAC,CAAC,CASjB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aiao/rxdb-adapter-supabase",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.14",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -31,11 +31,11 @@
|
|
|
31
31
|
"@supabase/postgrest-js": "^2.89.0",
|
|
32
32
|
"@supabase/supabase-js": "^2.88.0",
|
|
33
33
|
"rxjs": "^7.8.2",
|
|
34
|
-
"@aiao/rxdb": "0.0.
|
|
34
|
+
"@aiao/rxdb": "0.0.14"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"dotenv": "^17.3.1",
|
|
38
|
-
"@aiao/rxdb-
|
|
39
|
-
"@aiao/rxdb-
|
|
38
|
+
"@aiao/rxdb-adapter-sqlite": "0.0.14",
|
|
39
|
+
"@aiao/rxdb-test": "0.0.14"
|
|
40
40
|
}
|
|
41
41
|
}
|