@powerhousedao/reactor-browser 4.0.0-staging.1 → 4.0.0-staging.3
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/package.json +1 -1
- package/dist/src/relational/hooks/useRelationalQuery.d.ts.map +1 -1
- package/dist/src/relational/hooks/useRelationalQuery.js +49 -11
- package/dist/src/relational/hooks/useRelationalQuery.js.map +1 -1
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/package.json +3 -3
package/dist/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRelationalQuery.d.ts","sourceRoot":"","sources":["../../../../src/relational/hooks/useRelationalQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAI/E,MAAM,MAAM,uBAAuB,GAAG;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IAEtC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;
|
|
1
|
+
{"version":3,"file":"useRelationalQuery.d.ts","sourceRoot":"","sources":["../../../../src/relational/hooks/useRelationalQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAI/E,MAAM,MAAM,uBAAuB,GAAG;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IAEtC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAuBF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,EAAE,OAAO,GAAG,SAAS,EACzE,cAAc,EAAE,0BAA0B,CAAC,MAAM,CAAC,EAClD,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,CACb,EAAE,EAAE,uBAAuB,CAAC,MAAM,CAAC,EACnC,UAAU,CAAC,EAAE,OAAO,KACjB,uBAAuB,EAC5B,UAAU,CAAC,EAAE,OAAO,EACpB,OAAO,CAAC,EAAE,yBAAyB;;;;EAiFpC"}
|
|
@@ -1,13 +1,52 @@
|
|
|
1
|
-
import { useEffect, useState } from "react";
|
|
1
|
+
import { useEffect, useRef, useState } from "react";
|
|
2
2
|
import { useRelationalDb } from "./useRelationalDb.js";
|
|
3
|
+
const MAX_RETRIES = 5;
|
|
4
|
+
const RETRY_DELAY = 200;
|
|
5
|
+
const isRelationNotExistError = (error) => {
|
|
6
|
+
const errorMessage = error instanceof Error
|
|
7
|
+
? error.message
|
|
8
|
+
: typeof error === "string"
|
|
9
|
+
? error
|
|
10
|
+
: String(error);
|
|
11
|
+
return (errorMessage.toLowerCase().includes("relation") &&
|
|
12
|
+
errorMessage.toLowerCase().includes("does not exist"));
|
|
13
|
+
};
|
|
3
14
|
export function useRelationalQuery(ProcessorClass, driveId, queryCallback, parameters, options) {
|
|
4
15
|
const [result, setResult] = useState(null);
|
|
5
16
|
const [queryLoading, setQueryLoading] = useState(true);
|
|
6
17
|
const [error, setError] = useState(undefined);
|
|
18
|
+
const retryCount = useRef(0);
|
|
19
|
+
const retryTimeoutRef = useRef();
|
|
7
20
|
const relationalDb = useRelationalDb();
|
|
21
|
+
const executeLiveQuery = async (sql, queryParameters, retryAttempt = 0) => {
|
|
22
|
+
if (!relationalDb.db) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
const live = await relationalDb.db.live.query(sql, queryParameters ? [...queryParameters] : [], (result) => {
|
|
27
|
+
setResult(result);
|
|
28
|
+
setQueryLoading(false);
|
|
29
|
+
retryCount.current = 0; // Reset retry count on success
|
|
30
|
+
});
|
|
31
|
+
return live;
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
if (isRelationNotExistError(err) && retryAttempt < MAX_RETRIES) {
|
|
35
|
+
return new Promise((resolve) => {
|
|
36
|
+
retryTimeoutRef.current = setTimeout(() => {
|
|
37
|
+
resolve(executeLiveQuery(sql, queryParameters, retryAttempt + 1));
|
|
38
|
+
}, RETRY_DELAY);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
setQueryLoading(false);
|
|
42
|
+
setError(err instanceof Error ? err : new Error(String(err)));
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
8
46
|
useEffect(() => {
|
|
9
47
|
setError(undefined);
|
|
10
48
|
setQueryLoading(true);
|
|
49
|
+
retryCount.current = 0;
|
|
11
50
|
if (!relationalDb.db) {
|
|
12
51
|
return;
|
|
13
52
|
}
|
|
@@ -16,17 +55,16 @@ export function useRelationalQuery(ProcessorClass, driveId, queryCallback, param
|
|
|
16
55
|
const db = relationalDb.db.queryNamespace(namespace);
|
|
17
56
|
const compiledQuery = queryCallback(db, parameters);
|
|
18
57
|
const { sql, parameters: queryParameters } = compiledQuery;
|
|
19
|
-
const
|
|
20
|
-
.query(sql, queryParameters ? [...queryParameters] : [], (result) => {
|
|
21
|
-
setResult(result);
|
|
22
|
-
setQueryLoading(false);
|
|
23
|
-
})
|
|
24
|
-
.catch((error) => {
|
|
25
|
-
setQueryLoading(false);
|
|
26
|
-
setError(error instanceof Error ? error : new Error(error));
|
|
27
|
-
});
|
|
58
|
+
const liveQueryPromise = executeLiveQuery(sql, queryParameters);
|
|
28
59
|
return () => {
|
|
29
|
-
|
|
60
|
+
if (retryTimeoutRef.current) {
|
|
61
|
+
clearTimeout(retryTimeoutRef.current);
|
|
62
|
+
}
|
|
63
|
+
void liveQueryPromise.then((live) => {
|
|
64
|
+
if (live?.unsubscribe) {
|
|
65
|
+
live.unsubscribe();
|
|
66
|
+
}
|
|
67
|
+
});
|
|
30
68
|
};
|
|
31
69
|
}, [relationalDb.db, ProcessorClass, driveId, queryCallback, parameters]);
|
|
32
70
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRelationalQuery.js","sourceRoot":"","sources":["../../../../src/relational/hooks/useRelationalQuery.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useRelationalQuery.js","sourceRoot":"","sources":["../../../../src/relational/hooks/useRelationalQuery.ts"],"names":[],"mappings":"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"}
|