@livestore/livestore 0.3.0-dev.28 → 0.3.0-dev.30
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/.tsbuildinfo +1 -1
- package/dist/SqliteDbWrapper.d.ts.map +1 -1
- package/dist/SqliteDbWrapper.js +4 -1
- package/dist/SqliteDbWrapper.js.map +1 -1
- package/dist/live-queries/base-class.d.ts +8 -12
- package/dist/live-queries/base-class.d.ts.map +1 -1
- package/dist/live-queries/base-class.js.map +1 -1
- package/dist/live-queries/client-document-get-query.d.ts +12 -0
- package/dist/live-queries/client-document-get-query.d.ts.map +1 -0
- package/dist/live-queries/client-document-get-query.js +18 -0
- package/dist/live-queries/client-document-get-query.js.map +1 -0
- package/dist/live-queries/computed.d.ts +4 -8
- package/dist/live-queries/computed.d.ts.map +1 -1
- package/dist/live-queries/computed.js +1 -6
- package/dist/live-queries/computed.js.map +1 -1
- package/dist/live-queries/db-query.d.ts +13 -18
- package/dist/live-queries/db-query.d.ts.map +1 -1
- package/dist/live-queries/db-query.js +34 -34
- package/dist/live-queries/db-query.js.map +1 -1
- package/dist/live-queries/db-query.test.js +32 -23
- package/dist/live-queries/db-query.test.js.map +1 -1
- package/dist/live-queries/make-ref.d.ts.map +1 -1
- package/dist/live-queries/make-ref.js +1 -0
- package/dist/live-queries/make-ref.js.map +1 -1
- package/dist/mod.d.ts +0 -1
- package/dist/mod.d.ts.map +1 -1
- package/dist/mod.js +0 -1
- package/dist/mod.js.map +1 -1
- package/dist/reactive.d.ts.map +1 -1
- package/dist/reactive.js +1 -1
- package/dist/reactive.js.map +1 -1
- package/dist/store/create-store.js +2 -2
- package/dist/store/create-store.js.map +1 -1
- package/dist/store/store-types.d.ts +5 -5
- package/dist/store/store-types.d.ts.map +1 -1
- package/dist/store/store.d.ts +27 -26
- package/dist/store/store.d.ts.map +1 -1
- package/dist/store/store.js +74 -69
- package/dist/store/store.js.map +1 -1
- package/dist/utils/stack-info.test.js +6 -6
- package/dist/utils/tests/fixture.d.ts +54 -207
- package/dist/utils/tests/fixture.d.ts.map +1 -1
- package/dist/utils/tests/fixture.js +20 -13
- package/dist/utils/tests/fixture.js.map +1 -1
- package/dist/utils/tests/otel.d.ts.map +1 -1
- package/dist/utils/tests/otel.js +8 -3
- package/dist/utils/tests/otel.js.map +1 -1
- package/package.json +7 -7
- package/src/SqliteDbWrapper.ts +4 -1
- package/src/live-queries/__snapshots__/db-query.test.ts.snap +9 -9
- package/src/live-queries/base-class.ts +8 -25
- package/src/live-queries/client-document-get-query.ts +52 -0
- package/src/live-queries/computed.ts +4 -18
- package/src/live-queries/db-query.test.ts +38 -24
- package/src/live-queries/db-query.ts +60 -66
- package/src/live-queries/make-ref.ts +2 -0
- package/src/mod.ts +0 -2
- package/src/reactive.ts +1 -1
- package/src/store/create-store.ts +2 -2
- package/src/store/store-types.ts +5 -5
- package/src/store/store.ts +97 -91
- package/src/utils/stack-info.test.ts +6 -6
- package/src/utils/tests/fixture.ts +21 -25
- package/src/utils/tests/otel.ts +10 -3
- package/tmp/pack.tgz +0 -0
- package/dist/row-query-utils.d.ts +0 -17
- package/dist/row-query-utils.d.ts.map +0 -1
- package/dist/row-query-utils.js +0 -34
- package/dist/row-query-utils.js.map +0 -1
- package/src/row-query-utils.ts +0 -76
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteDbWrapper.d.ts","sourceRoot":"","sources":["../src/SqliteDbWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,QAAQ,EACR,iBAAiB,EACjB,eAAe,EAChB,MAAM,mBAAmB,CAAA;AAU1B,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAI/C,eAAO,MAAM,cAAc,QAAO,SAKhC,CAAA;AAEF;;;GAGG;AACH,qBAAa,eAAgB,YAAW,QAAQ;IAC9C,IAAI,EAAG,UAAU,CAAS;IAE1B,OAAO,CAAC,WAAW,CAA+C;IAClE,OAAO,CAAC,eAAe,CAAyC;IAChE,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,EAAE,CAAU;IACpB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,mBAAmB,CAAc;IACzC,OAAO,CAAC,cAAc,CAAA;IACf,SAAS,EAAE,gBAAgB,CAAmB;gBAEzC,EACV,EAAE,EACF,IAAI,GACL,EAAE;QACD,EAAE,EAAE,QAAQ,CAAA;QACZ,IAAI,EAAE;YACJ,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;YACnB,eAAe,EAAE,IAAI,CAAC,OAAO,CAAA;SAC9B,CAAA;KACF;IAaD,QAAQ,EAAE,GAAG,CAAA;IACb,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB;IAG5C,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAG7D,KAAK,IAAI,IAAI;IAGb,OAAO,IAAI,IAAI;IAGf,OAAO,IAAI,eAAe;IAG1B,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,iBAAiB;IAIlD,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAqBrC,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG;QACzC,MAAM,EAAE,IAAI,CAAA;QACZ,SAAS,EAAE;YAAE,IAAI,EAAE,kBAAkB,CAAC;YAAC,IAAI,EAAE,UAAU,CAAC;YAAC,KAAK,EAAE,GAAG,CAAA;SAAE,GAAG;YAAE,IAAI,EAAE,OAAO,CAAA;SAAE,CAAA;KAC1F;IAaD,QAAQ,CAAC,SAAS,EAAE,UAAU;IAK9B,aAAa,CAAC,KAAK,EAAE,MAAM;IA4B3B,OAAO,CACL,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,kBAAkB,GAAG,SAAS,EAC3C,OAAO,CAAC,EAAE;QACR,YAAY,CAAC,EAAE,OAAO,CAAA;QACtB,WAAW,CAAC,EAAE,IAAI,CAAC,OAAO,CAAA;QAC1B,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;QACjC,aAAa,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAA;KAC9C,GACA;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE;
|
|
1
|
+
{"version":3,"file":"SqliteDbWrapper.d.ts","sourceRoot":"","sources":["../src/SqliteDbWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,QAAQ,EACR,iBAAiB,EACjB,eAAe,EAChB,MAAM,mBAAmB,CAAA;AAU1B,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAI/C,eAAO,MAAM,cAAc,QAAO,SAKhC,CAAA;AAEF;;;GAGG;AACH,qBAAa,eAAgB,YAAW,QAAQ;IAC9C,IAAI,EAAG,UAAU,CAAS;IAE1B,OAAO,CAAC,WAAW,CAA+C;IAClE,OAAO,CAAC,eAAe,CAAyC;IAChE,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,EAAE,CAAU;IACpB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,mBAAmB,CAAc;IACzC,OAAO,CAAC,cAAc,CAAA;IACf,SAAS,EAAE,gBAAgB,CAAmB;gBAEzC,EACV,EAAE,EACF,IAAI,GACL,EAAE;QACD,EAAE,EAAE,QAAQ,CAAA;QACZ,IAAI,EAAE;YACJ,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;YACnB,eAAe,EAAE,IAAI,CAAC,OAAO,CAAA;SAC9B,CAAA;KACF;IAaD,QAAQ,EAAE,GAAG,CAAA;IACb,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB;IAG5C,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAG7D,KAAK,IAAI,IAAI;IAGb,OAAO,IAAI,IAAI;IAGf,OAAO,IAAI,eAAe;IAG1B,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,iBAAiB;IAIlD,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAqBrC,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG;QACzC,MAAM,EAAE,IAAI,CAAA;QACZ,SAAS,EAAE;YAAE,IAAI,EAAE,kBAAkB,CAAC;YAAC,IAAI,EAAE,UAAU,CAAC;YAAC,KAAK,EAAE,GAAG,CAAA;SAAE,GAAG;YAAE,IAAI,EAAE,OAAO,CAAA;SAAE,CAAA;KAC1F;IAaD,QAAQ,CAAC,SAAS,EAAE,UAAU;IAK9B,aAAa,CAAC,KAAK,EAAE,MAAM;IA4B3B,OAAO,CACL,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,kBAAkB,GAAG,SAAS,EAC3C,OAAO,CAAC,EAAE;QACR,YAAY,CAAC,EAAE,OAAO,CAAA;QACtB,WAAW,CAAC,EAAE,IAAI,CAAC,OAAO,CAAA;QAC1B,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;QACjC,aAAa,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAA;KAC9C,GACA;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE;IAuDzB,MAAM,CAAC,CAAC,GAAG,GAAG,EACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,kBAAkB,GAAG,SAAS,EAC3C,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;QACnC,SAAS,CAAC,EAAE,OAAO,CAAA;QACnB,WAAW,CAAC,EAAE,IAAI,CAAC,OAAO,CAAA;KAC3B,GACA,aAAa,CAAC,CAAC,CAAC;IA+DnB,MAAM;CAQP"}
|
package/dist/SqliteDbWrapper.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable prefer-arrow/prefer-arrow-functions */
|
|
2
2
|
import { BoundArray, BoundMap, getDurationMsFromSpan, getStartTimeHighResFromSpan, sql, SqliteError, } from '@livestore/common';
|
|
3
|
-
import { isDevEnv } from '@livestore/utils';
|
|
3
|
+
import { isDevEnv, LS_DEV } from '@livestore/utils';
|
|
4
4
|
import QueryCache from './QueryCache.js';
|
|
5
5
|
export const emptyDebugInfo = () => ({
|
|
6
6
|
slowQueries: new BoundArray(200),
|
|
@@ -143,6 +143,9 @@ export class SqliteDbWrapper {
|
|
|
143
143
|
catch (cause) {
|
|
144
144
|
span.recordException(cause);
|
|
145
145
|
span.end();
|
|
146
|
+
if (LS_DEV) {
|
|
147
|
+
debugger;
|
|
148
|
+
}
|
|
146
149
|
throw new SqliteError({ cause, query: { bindValues: bindValues ?? {}, sql: queryStr } });
|
|
147
150
|
}
|
|
148
151
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteDbWrapper.js","sourceRoot":"","sources":["../src/SqliteDbWrapper.ts"],"names":[],"mappings":"AAAA,wDAAwD;AAWxD,OAAO,EACL,UAAU,EACV,QAAQ,EACR,qBAAqB,EACrB,2BAA2B,EAC3B,GAAG,EACH,WAAW,GACZ,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"SqliteDbWrapper.js","sourceRoot":"","sources":["../src/SqliteDbWrapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { QueryInfo } from '@livestore/common';
|
|
2
1
|
import type * as otel from '@opentelemetry/api';
|
|
3
2
|
import * as RG from '../reactive.js';
|
|
4
3
|
import type { Store } from '../store/store.js';
|
|
@@ -16,7 +15,7 @@ export type ReactivityGraphContext = {
|
|
|
16
15
|
rootOtelContext: otel.Context;
|
|
17
16
|
effectsWrapper: (run: () => void) => void;
|
|
18
17
|
};
|
|
19
|
-
export type GetResult<TQuery extends LiveQueryDef.Any | LiveQuery.Any> = TQuery extends LiveQuery<infer TResult
|
|
18
|
+
export type GetResult<TQuery extends LiveQueryDef.Any | LiveQuery.Any> = TQuery extends LiveQuery<infer TResult> ? TResult : TQuery extends LiveQueryDef<infer TResult> ? TResult : unknown;
|
|
20
19
|
export interface ILiveQueryRefDef<T> {
|
|
21
20
|
_tag: 'live-ref-def';
|
|
22
21
|
defaultValue: T;
|
|
@@ -39,21 +38,20 @@ export interface RcRef<T> {
|
|
|
39
38
|
}
|
|
40
39
|
export type DepKey = string | number | ReadonlyArray<string | number | undefined | null>;
|
|
41
40
|
export declare const depsToString: (deps: DepKey) => string;
|
|
42
|
-
export interface LiveQueryDef<TResult
|
|
41
|
+
export interface LiveQueryDef<TResult> {
|
|
43
42
|
_tag: 'def';
|
|
44
43
|
/** Creates a new LiveQuery instance bound to a specific store/reactivityGraph */
|
|
45
|
-
make: (ctx: ReactivityGraphContext, otelContext?: otel.Context) => RcRef<LiveQuery<TResult
|
|
44
|
+
make: (ctx: ReactivityGraphContext, otelContext?: otel.Context) => RcRef<LiveQuery<TResult>>;
|
|
46
45
|
label: string;
|
|
47
46
|
hash: string;
|
|
48
|
-
queryInfo: TQueryInfo;
|
|
49
47
|
}
|
|
50
48
|
export declare namespace LiveQueryDef {
|
|
51
|
-
type Any = LiveQueryDef<any
|
|
49
|
+
type Any = LiveQueryDef<any>;
|
|
52
50
|
}
|
|
53
51
|
/**
|
|
54
52
|
* A LiveQuery is stateful
|
|
55
53
|
*/
|
|
56
|
-
export interface LiveQuery<TResult
|
|
54
|
+
export interface LiveQuery<TResult> {
|
|
57
55
|
id: number;
|
|
58
56
|
_tag: 'computed' | 'db' | 'graphql';
|
|
59
57
|
[TypeId]: TypeId;
|
|
@@ -69,14 +67,13 @@ export interface LiveQuery<TResult, TQueryInfo extends QueryInfo = QueryInfo.Non
|
|
|
69
67
|
destroy: () => void;
|
|
70
68
|
isDestroyed: boolean;
|
|
71
69
|
activeSubscriptions: Set<StackInfo>;
|
|
72
|
-
queryInfo: TQueryInfo;
|
|
73
70
|
runs: number;
|
|
74
71
|
executionTimes: number[];
|
|
75
72
|
}
|
|
76
73
|
export declare namespace LiveQuery {
|
|
77
|
-
type Any = LiveQuery<any
|
|
74
|
+
type Any = LiveQuery<any>;
|
|
78
75
|
}
|
|
79
|
-
export declare abstract class LiveStoreQueryBase<TResult
|
|
76
|
+
export declare abstract class LiveStoreQueryBase<TResult> implements LiveQuery<TResult> {
|
|
80
77
|
'__result!': TResult;
|
|
81
78
|
id: number;
|
|
82
79
|
[TypeId]: TypeId;
|
|
@@ -86,7 +83,6 @@ export declare abstract class LiveStoreQueryBase<TResult, TQueryInfo extends Que
|
|
|
86
83
|
abstract results$: RG.Thunk<TResult, ReactivityGraphContext, RefreshReason>;
|
|
87
84
|
activeSubscriptions: Set<StackInfo>;
|
|
88
85
|
abstract readonly reactivityGraph: ReactivityGraph;
|
|
89
|
-
abstract queryInfo: TQueryInfo;
|
|
90
86
|
get runs(): number;
|
|
91
87
|
executionTimes: number[];
|
|
92
88
|
isDestroyed: boolean;
|
|
@@ -97,7 +93,7 @@ export declare abstract class LiveStoreQueryBase<TResult, TQueryInfo extends Que
|
|
|
97
93
|
}) => TResult;
|
|
98
94
|
protected dependencyQueriesRef: DependencyQueriesRef;
|
|
99
95
|
}
|
|
100
|
-
export type GetAtomResult = <T>(atom: RG.Atom<T, any, RefreshReason> | LiveQueryDef<T
|
|
96
|
+
export type GetAtomResult = <T>(atom: RG.Atom<T, any, RefreshReason> | LiveQueryDef<T> | LiveQuery<T> | ILiveQueryRef<T> | ILiveQueryRefDef<T>, otelContext?: otel.Context | undefined, debugRefreshReason?: RefreshReason | undefined) => T;
|
|
101
97
|
export type DependencyQueriesRef = Set<RcRef<LiveQuery.Any | ILiveQueryRef<any>>>;
|
|
102
98
|
export declare const makeGetAtomResult: (get: RG.GetAtom, ctx: ReactivityGraphContext, otelContext: otel.Context, dependencyQueriesRef: DependencyQueriesRef) => GetAtomResult;
|
|
103
99
|
export declare const withRCMap: <T extends LiveQuery.Any | ILiveQueryRef<any>>(id: string, make: (ctx: ReactivityGraphContext, otelContext?: otel.Context) => T) => ((ctx: ReactivityGraphContext, otelContext?: otel.Context) => RcRef<T>);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-class.d.ts","sourceRoot":"","sources":["../../src/live-queries/base-class.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base-class.d.ts","sourceRoot":"","sources":["../../src/live-queries/base-class.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-class.js","sourceRoot":"","sources":["../../src/live-queries/base-class.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base-class.js","sourceRoot":"","sources":["../../src/live-queries/base-class.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SessionIdSymbol } from '@livestore/common';
|
|
2
|
+
import { State } from '@livestore/common/schema';
|
|
3
|
+
import type * as otel from '@opentelemetry/api';
|
|
4
|
+
import type { ReactivityGraphContext } from './base-class.js';
|
|
5
|
+
export declare const rowQueryLabel: (table: State.SQLite.ClientDocumentTableDef.Any, id: string | SessionIdSymbol | undefined) => string;
|
|
6
|
+
export declare const makeExecBeforeFirstRun: ({ id, explicitDefaultValues, table, otelContext: otelContext_, }: {
|
|
7
|
+
id?: string | SessionIdSymbol;
|
|
8
|
+
explicitDefaultValues?: any;
|
|
9
|
+
table: State.SQLite.TableDefBase;
|
|
10
|
+
otelContext: otel.Context | undefined;
|
|
11
|
+
}) => ({ store }: ReactivityGraphContext) => undefined;
|
|
12
|
+
//# sourceMappingURL=client-document-get-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-document-get-query.d.ts","sourceRoot":"","sources":["../../src/live-queries/client-document-get-query.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAEhD,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAE/C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAE7D,eAAO,MAAM,aAAa,GACxB,OAAO,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,GAAG,EAC9C,IAAI,MAAM,GAAG,eAAe,GAAG,SAAS,WAC2E,CAAA;AAErH,eAAO,MAAM,sBAAsB,GAChC,kEAKE;IACD,EAAE,CAAC,EAAE,MAAM,GAAG,eAAe,CAAA;IAC7B,qBAAqB,CAAC,EAAE,GAAG,CAAA;IAC3B,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY,CAAA;IAChC,WAAW,EAAE,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;CACtC,MACA,WAAW,sBAAsB,cA0BjC,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { SessionIdSymbol } from '@livestore/common';
|
|
2
|
+
import { State } from '@livestore/common/schema';
|
|
3
|
+
import { shouldNeverHappen } from '@livestore/utils';
|
|
4
|
+
export const rowQueryLabel = (table, id) => `${table.sqliteDef.name}.get:${id === undefined ? table.default.id : id === SessionIdSymbol ? 'sessionId' : id}`;
|
|
5
|
+
export const makeExecBeforeFirstRun = ({ id, explicitDefaultValues, table, otelContext: otelContext_, }) => ({ store }) => {
|
|
6
|
+
if (State.SQLite.tableIsClientDocumentTable(table) === false) {
|
|
7
|
+
return shouldNeverHappen(`Cannot insert row for table "${table.sqliteDef.name}" which does not have 'deriveEvents: true' set`);
|
|
8
|
+
}
|
|
9
|
+
const otelContext = otelContext_ ?? store.otel.queriesSpanContext;
|
|
10
|
+
const idVal = id === SessionIdSymbol ? store.sessionId : id;
|
|
11
|
+
const rowExists = store.sqliteDbWrapper.select(`SELECT 1 FROM '${table.sqliteDef.name}' WHERE id = ?`, [idVal], { otelContext }).length === 1;
|
|
12
|
+
if (rowExists)
|
|
13
|
+
return;
|
|
14
|
+
// It's important that we only commit and don't refresh here, as this function might be called during a render
|
|
15
|
+
// and otherwise we might end up in a "reactive loop"
|
|
16
|
+
store.commit({ otelContext, skipRefresh: true, label: `${table.sqliteDef.name}.set:${idVal}` }, table.set(explicitDefaultValues, idVal));
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=client-document-get-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-document-get-query.js","sourceRoot":"","sources":["../../src/live-queries/client-document-get-query.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAKpD,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,KAA8C,EAC9C,EAAwC,EACxC,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,QAAQ,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;AAErH,MAAM,CAAC,MAAM,sBAAsB,GACjC,CAAC,EACC,EAAE,EACF,qBAAqB,EACrB,KAAK,EACL,WAAW,EAAE,YAAY,GAM1B,EAAE,EAAE,CACL,CAAC,EAAE,KAAK,EAA0B,EAAE,EAAE;IACpC,IAAI,KAAK,CAAC,MAAM,CAAC,0BAA0B,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;QAC7D,OAAO,iBAAiB,CACtB,gCAAgC,KAAK,CAAC,SAAS,CAAC,IAAI,gDAAgD,CACrG,CAAA;IACH,CAAC;IAED,MAAM,WAAW,GAAG,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAA;IAEjE,MAAM,KAAK,GAAG,EAAE,KAAK,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAG,CAAA;IAC5D,MAAM,SAAS,GACb,KAAK,CAAC,eAAe,CAAC,MAAM,CAC1B,kBAAkB,KAAK,CAAC,SAAS,CAAC,IAAI,gBAAgB,EACtD,CAAC,KAAK,CAA8B,EACpC,EAAE,WAAW,EAAE,CAChB,CAAC,MAAM,KAAK,CAAC,CAAA;IAEhB,IAAI,SAAS;QAAE,OAAM;IAErB,8GAA8G;IAC9G,qDAAqD;IAErD,KAAK,CAAC,MAAM,CACV,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,QAAQ,KAAK,EAAE,EAAE,EACjF,KAAK,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAa,CAAC,CAChD,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1,25 +1,21 @@
|
|
|
1
|
-
import type { QueryInfo } from '@livestore/common';
|
|
2
1
|
import type { Thunk } from '../reactive.js';
|
|
3
2
|
import type { RefreshReason } from '../store/store-types.js';
|
|
4
3
|
import type { DepKey, GetAtomResult, LiveQueryDef, ReactivityGraph, ReactivityGraphContext } from './base-class.js';
|
|
5
4
|
import { LiveStoreQueryBase } from './base-class.js';
|
|
6
|
-
export declare const computed: <TResult
|
|
5
|
+
export declare const computed: <TResult>(fn: (get: GetAtomResult) => TResult, options?: {
|
|
7
6
|
label?: string;
|
|
8
|
-
queryInfo?: TQueryInfo;
|
|
9
7
|
deps?: DepKey;
|
|
10
|
-
}) => LiveQueryDef<TResult
|
|
11
|
-
export declare class LiveStoreComputedQuery<TResult
|
|
8
|
+
}) => LiveQueryDef<TResult>;
|
|
9
|
+
export declare class LiveStoreComputedQuery<TResult> extends LiveStoreQueryBase<TResult> {
|
|
12
10
|
_tag: 'computed';
|
|
13
11
|
/** A reactive thunk representing the query results */
|
|
14
12
|
results$: Thunk<TResult, ReactivityGraphContext, RefreshReason>;
|
|
15
13
|
label: string;
|
|
16
14
|
reactivityGraph: ReactivityGraph;
|
|
17
|
-
|
|
18
|
-
constructor({ fn, label, reactivityGraph, queryInfo, }: {
|
|
15
|
+
constructor({ fn, label, reactivityGraph, }: {
|
|
19
16
|
label: string;
|
|
20
17
|
fn: (get: GetAtomResult) => TResult;
|
|
21
18
|
reactivityGraph: ReactivityGraph;
|
|
22
|
-
queryInfo?: TQueryInfo;
|
|
23
19
|
});
|
|
24
20
|
destroy: () => void;
|
|
25
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computed.d.ts","sourceRoot":"","sources":["../../src/live-queries/computed.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"computed.d.ts","sourceRoot":"","sources":["../../src/live-queries/computed.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAE5D,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AACnH,OAAO,EAAgB,kBAAkB,EAAgC,MAAM,iBAAiB,CAAA;AAEhG,eAAO,MAAM,QAAQ,GAAI,OAAO,EAC9B,IAAI,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,EACnC,UAAU;IACR,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,KACA,YAAY,CAAC,OAAO,CAsBtB,CAAA;AAED,qBAAa,sBAAsB,CAAC,OAAO,CAAE,SAAQ,kBAAkB,CAAC,OAAO,CAAC;IAC9E,IAAI,EAAE,UAAU,CAAa;IAE7B,sDAAsD;IACtD,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,sBAAsB,EAAE,aAAa,CAAC,CAAA;IAE/D,KAAK,EAAE,MAAM,CAAA;IAEb,eAAe,EAAE,eAAe,CAAA;gBAEpB,EACV,EAAE,EACF,KAAK,EACL,eAAe,GAChB,EAAE;QACD,KAAK,EAAE,MAAM,CAAA;QACb,EAAE,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAA;QACnC,eAAe,EAAE,eAAe,CAAA;KACjC;IA4BD,OAAO,aAQN;CACF"}
|
|
@@ -7,7 +7,6 @@ export const computed = (fn, options) => {
|
|
|
7
7
|
if (isValidFunctionString(hash)._tag === 'invalid') {
|
|
8
8
|
throw new Error(`On Expo/React Native, computed queries must provide a \`deps\` option`);
|
|
9
9
|
}
|
|
10
|
-
const queryInfo = options?.queryInfo ?? { _tag: 'None' };
|
|
11
10
|
return {
|
|
12
11
|
_tag: 'def',
|
|
13
12
|
make: withRCMap(hash, (ctx, _otelContext) => {
|
|
@@ -15,7 +14,6 @@ export const computed = (fn, options) => {
|
|
|
15
14
|
return new LiveStoreComputedQuery({
|
|
16
15
|
fn,
|
|
17
16
|
label: options?.label ?? fn.toString(),
|
|
18
|
-
queryInfo: options?.queryInfo,
|
|
19
17
|
reactivityGraph: ctx.reactivityGraph.deref(),
|
|
20
18
|
});
|
|
21
19
|
}),
|
|
@@ -24,7 +22,6 @@ export const computed = (fn, options) => {
|
|
|
24
22
|
// TODO we should figure out whether this could cause some problems and/or if there's a better way to do this
|
|
25
23
|
// NOTE `fn.toString()` doesn't work in Expo as it always produces `[native code]`
|
|
26
24
|
hash,
|
|
27
|
-
queryInfo,
|
|
28
25
|
};
|
|
29
26
|
};
|
|
30
27
|
export class LiveStoreComputedQuery extends LiveStoreQueryBase {
|
|
@@ -33,12 +30,10 @@ export class LiveStoreComputedQuery extends LiveStoreQueryBase {
|
|
|
33
30
|
results$;
|
|
34
31
|
label;
|
|
35
32
|
reactivityGraph;
|
|
36
|
-
|
|
37
|
-
constructor({ fn, label, reactivityGraph, queryInfo, }) {
|
|
33
|
+
constructor({ fn, label, reactivityGraph, }) {
|
|
38
34
|
super();
|
|
39
35
|
this.label = label;
|
|
40
36
|
this.reactivityGraph = reactivityGraph;
|
|
41
|
-
this.queryInfo = queryInfo ?? { _tag: 'None' };
|
|
42
37
|
const queryLabel = `${label}:results`;
|
|
43
38
|
this.results$ = this.reactivityGraph.makeThunk((get, setDebugInfo, ctx, otelContext) => ctx.otelTracer.startActiveSpan(`js:${label}`, {}, otelContext ?? ctx.rootOtelContext, (span) => {
|
|
44
39
|
const otelContext = otel.trace.setSpan(otel.context.active(), span);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computed.js","sourceRoot":"","sources":["../../src/live-queries/computed.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"computed.js","sourceRoot":"","sources":["../../src/live-queries/computed.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { Bindable, QueryBuilder
|
|
1
|
+
import type { Bindable, QueryBuilder } from '@livestore/common';
|
|
2
2
|
import { Schema } from '@livestore/utils/effect';
|
|
3
3
|
import * as otel from '@opentelemetry/api';
|
|
4
4
|
import type { Thunk } from '../reactive.js';
|
|
5
5
|
import type { RefreshReason } from '../store/store-types.js';
|
|
6
6
|
import type { DepKey, GetAtomResult, LiveQueryDef, ReactivityGraph, ReactivityGraphContext } from './base-class.js';
|
|
7
7
|
import { LiveStoreQueryBase } from './base-class.js';
|
|
8
|
-
export type QueryInputRaw<TDecoded, TEncoded
|
|
8
|
+
export type QueryInputRaw<TDecoded, TEncoded> = {
|
|
9
9
|
query: string;
|
|
10
10
|
schema: Schema.Schema<TDecoded, TEncoded>;
|
|
11
11
|
bindValues?: Bindable;
|
|
@@ -15,50 +15,45 @@ export type QueryInputRaw<TDecoded, TEncoded, TQueryInfo extends QueryInfo> = {
|
|
|
15
15
|
* NOTE In the future we want to do this automatically at build time
|
|
16
16
|
*/
|
|
17
17
|
queriedTables?: Set<string>;
|
|
18
|
-
queryInfo?: TQueryInfo;
|
|
19
18
|
execBeforeFirstRun?: (ctx: ReactivityGraphContext) => void;
|
|
20
19
|
};
|
|
21
|
-
export declare const isQueryInputRaw: (value: unknown) => value is QueryInputRaw<any, any
|
|
22
|
-
export type QueryInput<TDecoded, TEncoded
|
|
20
|
+
export declare const isQueryInputRaw: (value: unknown) => value is QueryInputRaw<any, any>;
|
|
21
|
+
export type QueryInput<TDecoded, TEncoded> = QueryInputRaw<TDecoded, TEncoded> | QueryBuilder<TDecoded, any, any>;
|
|
23
22
|
/**
|
|
24
|
-
* NOTE `
|
|
23
|
+
* NOTE `queryDb` is only supposed to read data. Don't use it to insert/update/delete data but use events instead.
|
|
25
24
|
*/
|
|
26
25
|
export declare const queryDb: {
|
|
27
|
-
<TResultSchema, TResult = TResultSchema
|
|
26
|
+
<TResultSchema, TResult = TResultSchema>(queryInput: QueryInputRaw<TResultSchema, ReadonlyArray<any>> | QueryBuilder<TResultSchema, any, any>, options?: {
|
|
28
27
|
map?: (rows: TResultSchema) => TResult;
|
|
29
28
|
/**
|
|
30
29
|
* Used for debugging / devtools
|
|
31
30
|
*/
|
|
32
31
|
label?: string;
|
|
33
32
|
deps?: DepKey;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
<TResultSchema, TResult = TResultSchema, TQueryInfo extends QueryInfo = QueryInfo.None>(queryInput: ((get: GetAtomResult) => QueryInputRaw<TResultSchema, ReadonlyArray<any>, TQueryInfo>) | ((get: GetAtomResult) => QueryBuilder<TResultSchema, any, any, TQueryInfo>), options?: {
|
|
33
|
+
}): LiveQueryDef<TResult>;
|
|
34
|
+
<TResultSchema, TResult = TResultSchema>(queryInput: ((get: GetAtomResult) => QueryInputRaw<TResultSchema, ReadonlyArray<any>>) | ((get: GetAtomResult) => QueryBuilder<TResultSchema, any, any>), options?: {
|
|
37
35
|
map?: (rows: TResultSchema) => TResult;
|
|
38
36
|
/**
|
|
39
37
|
* Used for debugging / devtools
|
|
40
38
|
*/
|
|
41
39
|
label?: string;
|
|
42
40
|
deps?: DepKey;
|
|
43
|
-
|
|
44
|
-
}): LiveQueryDef<TResult, TQueryInfo>;
|
|
41
|
+
}): LiveQueryDef<TResult>;
|
|
45
42
|
};
|
|
46
|
-
export declare class LiveStoreDbQuery<TResultSchema, TResult = TResultSchema
|
|
43
|
+
export declare class LiveStoreDbQuery<TResultSchema, TResult = TResultSchema> extends LiveStoreQueryBase<TResult> {
|
|
47
44
|
_tag: 'db';
|
|
48
45
|
/** A reactive thunk representing the query text */
|
|
49
|
-
queryInput$: Thunk<QueryInputRaw<any, any
|
|
46
|
+
queryInput$: Thunk<QueryInputRaw<any, any>, ReactivityGraphContext, RefreshReason> | undefined;
|
|
50
47
|
/** A reactive thunk representing the query results */
|
|
51
48
|
results$: Thunk<TResult, ReactivityGraphContext, RefreshReason>;
|
|
52
49
|
label: string;
|
|
53
|
-
queryInfo: TQueryInfo;
|
|
54
50
|
readonly reactivityGraph: ReactivityGraph;
|
|
55
51
|
private mapResult;
|
|
56
|
-
constructor({ queryInput, label: inputLabel, reactivityGraph, map,
|
|
52
|
+
constructor({ queryInput, label: inputLabel, reactivityGraph, map, otelContext, }: {
|
|
57
53
|
label?: string;
|
|
58
|
-
queryInput: QueryInput<TResultSchema, ReadonlyArray<any
|
|
54
|
+
queryInput: QueryInput<TResultSchema, ReadonlyArray<any>> | ((get: GetAtomResult, ctx: ReactivityGraphContext) => QueryInput<TResultSchema, ReadonlyArray<any>>);
|
|
59
55
|
reactivityGraph: ReactivityGraph;
|
|
60
56
|
map?: (rows: TResultSchema) => TResult;
|
|
61
|
-
queryInfo?: TQueryInfo;
|
|
62
57
|
/** Only used for the initial query execution */
|
|
63
58
|
otelContext?: otel.Context;
|
|
64
59
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-query.d.ts","sourceRoot":"","sources":["../../src/live-queries/db-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"db-query.d.ts","sourceRoot":"","sources":["../../src/live-queries/db-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +1,24 @@
|
|
|
1
|
-
import { getDurationMsFromSpan, getResultSchema, isQueryBuilder, prepareBindValues, QueryBuilderAstSymbol, replaceSessionIdSymbol, UnexpectedError, } from '@livestore/common';
|
|
1
|
+
import { getDurationMsFromSpan, getResultSchema, isQueryBuilder, prepareBindValues, QueryBuilderAstSymbol, replaceSessionIdSymbol, SessionIdSymbol, UnexpectedError, } from '@livestore/common';
|
|
2
2
|
import { deepEqual, shouldNeverHappen } from '@livestore/utils';
|
|
3
3
|
import { Predicate, Schema, TreeFormatter } from '@livestore/utils/effect';
|
|
4
4
|
import * as otel from '@opentelemetry/api';
|
|
5
5
|
import { isThunk, NOT_REFRESHED_YET } from '../reactive.js';
|
|
6
|
-
import { makeExecBeforeFirstRun, rowQueryLabel } from '../row-query-utils.js';
|
|
7
6
|
import { isValidFunctionString } from '../utils/function-string.js';
|
|
8
7
|
import { depsToString, LiveStoreQueryBase, makeGetAtomResult, withRCMap } from './base-class.js';
|
|
8
|
+
import { makeExecBeforeFirstRun, rowQueryLabel } from './client-document-get-query.js';
|
|
9
9
|
export const isQueryInputRaw = (value) => Predicate.hasProperty(value, 'query') && Predicate.hasProperty(value, 'schema');
|
|
10
10
|
/**
|
|
11
|
-
* NOTE `
|
|
11
|
+
* NOTE `queryDb` is only supposed to read data. Don't use it to insert/update/delete data but use events instead.
|
|
12
12
|
*/
|
|
13
13
|
export const queryDb = (queryInput, options) => {
|
|
14
|
-
const queryString =
|
|
15
|
-
|
|
16
|
-
: isQueryInputRaw(queryInput)
|
|
17
|
-
? queryInput.query
|
|
18
|
-
: typeof queryInput === 'function'
|
|
19
|
-
? queryInput.toString()
|
|
20
|
-
: shouldNeverHappen(`Invalid query input: ${queryInput}`);
|
|
21
|
-
const hash = options?.deps ? queryString + '-' + depsToString(options.deps) : queryString;
|
|
14
|
+
const { queryString, extraDeps } = getQueryStringAndExtraDeps(queryInput);
|
|
15
|
+
const hash = (options?.deps ? queryString + '-' + depsToString(options.deps) : queryString) + '-' + depsToString(extraDeps);
|
|
22
16
|
if (isValidFunctionString(hash)._tag === 'invalid') {
|
|
23
17
|
throw new Error(`On Expo/React Native, db queries must provide a \`deps\` option`);
|
|
24
18
|
}
|
|
19
|
+
if (hash.trim() === '') {
|
|
20
|
+
return shouldNeverHappen(`Invalid query hash for query: ${queryInput}`);
|
|
21
|
+
}
|
|
25
22
|
const label = options?.label ?? queryString;
|
|
26
23
|
return {
|
|
27
24
|
_tag: 'def',
|
|
@@ -32,16 +29,34 @@ export const queryDb = (queryInput, options) => {
|
|
|
32
29
|
queryInput,
|
|
33
30
|
label,
|
|
34
31
|
map: options?.map,
|
|
35
|
-
// We're not falling back to `None` here as the queryInfo will be set dynamically
|
|
36
|
-
queryInfo: options?.queryInfo,
|
|
37
32
|
otelContext,
|
|
38
33
|
});
|
|
39
34
|
}),
|
|
40
35
|
label,
|
|
41
36
|
hash,
|
|
42
|
-
queryInfo: options?.queryInfo ?? (isQueryBuilder(queryInput) ? queryInfoFromQueryBuilder(queryInput) : { _tag: 'None' }),
|
|
43
37
|
};
|
|
44
38
|
};
|
|
39
|
+
const bindValuesToDepKey = (bindValues) => {
|
|
40
|
+
if (bindValues === undefined) {
|
|
41
|
+
return [];
|
|
42
|
+
}
|
|
43
|
+
return Object.entries(bindValues)
|
|
44
|
+
.map(([key, value]) => `${key}:${value === SessionIdSymbol ? 'SessionIdSymbol' : value}`)
|
|
45
|
+
.join(',');
|
|
46
|
+
};
|
|
47
|
+
const getQueryStringAndExtraDeps = (queryInput) => {
|
|
48
|
+
if (isQueryBuilder(queryInput)) {
|
|
49
|
+
const { query, bindValues } = queryInput.asSql();
|
|
50
|
+
return { queryString: query, extraDeps: bindValuesToDepKey(bindValues) };
|
|
51
|
+
}
|
|
52
|
+
if (isQueryInputRaw(queryInput)) {
|
|
53
|
+
return { queryString: queryInput.query, extraDeps: bindValuesToDepKey(queryInput.bindValues) };
|
|
54
|
+
}
|
|
55
|
+
if (typeof queryInput === 'function') {
|
|
56
|
+
return { queryString: queryInput.toString(), extraDeps: [] };
|
|
57
|
+
}
|
|
58
|
+
return shouldNeverHappen(`Invalid query input: ${queryInput}`);
|
|
59
|
+
};
|
|
45
60
|
/* An object encapsulating a reactive SQL query */
|
|
46
61
|
export class LiveStoreDbQuery extends LiveStoreQueryBase {
|
|
47
62
|
_tag = 'db';
|
|
@@ -50,13 +65,11 @@ export class LiveStoreDbQuery extends LiveStoreQueryBase {
|
|
|
50
65
|
/** A reactive thunk representing the query results */
|
|
51
66
|
results$;
|
|
52
67
|
label;
|
|
53
|
-
queryInfo;
|
|
54
68
|
reactivityGraph;
|
|
55
69
|
mapResult;
|
|
56
|
-
constructor({ queryInput, label: inputLabel, reactivityGraph, map,
|
|
70
|
+
constructor({ queryInput, label: inputLabel, reactivityGraph, map, otelContext, }) {
|
|
57
71
|
super();
|
|
58
72
|
let label = inputLabel ?? 'db(unknown)';
|
|
59
|
-
let queryInfo = inputQueryInfo ?? { _tag: 'None' };
|
|
60
73
|
this.reactivityGraph = reactivityGraph;
|
|
61
74
|
this.mapResult = map === undefined ? (rows) => rows : map;
|
|
62
75
|
const schemaRef = {
|
|
@@ -77,13 +90,12 @@ export class LiveStoreDbQuery extends LiveStoreQueryBase {
|
|
|
77
90
|
schema,
|
|
78
91
|
bindValues: qbRes.bindValues,
|
|
79
92
|
queriedTables: new Set([ast.tableDef.sqliteDef.name]),
|
|
80
|
-
queryInfo: queryInfoFromQueryBuilder(qb),
|
|
81
93
|
},
|
|
82
94
|
label: ast._tag === 'RowQuery' ? rowQueryLabel(ast.tableDef, ast.id) : qb.toString(),
|
|
83
95
|
execBeforeFirstRun: ast._tag === 'RowQuery'
|
|
84
96
|
? makeExecBeforeFirstRun({
|
|
85
97
|
table: ast.tableDef,
|
|
86
|
-
|
|
98
|
+
explicitDefaultValues: ast.explicitDefaultValues,
|
|
87
99
|
id: ast.id,
|
|
88
100
|
otelContext,
|
|
89
101
|
})
|
|
@@ -112,9 +124,6 @@ export class LiveStoreDbQuery extends LiveStoreQueryBase {
|
|
|
112
124
|
}
|
|
113
125
|
setDebugInfo({ _tag: 'computed', label: `${this.label}:queryInput`, query: queryInputRaw.query, durationMs });
|
|
114
126
|
schemaRef.current = queryInputRaw.schema;
|
|
115
|
-
if (inputQueryInfo === undefined && queryInputRaw.queryInfo !== undefined) {
|
|
116
|
-
queryInfo = queryInputRaw.queryInfo;
|
|
117
|
-
}
|
|
118
127
|
return queryInputRaw;
|
|
119
128
|
}, {
|
|
120
129
|
label: `${label}:query`,
|
|
@@ -144,9 +153,6 @@ export class LiveStoreDbQuery extends LiveStoreQueryBase {
|
|
|
144
153
|
label = `db(${rowQueryLabel(ast.tableDef, ast.id)})`;
|
|
145
154
|
}
|
|
146
155
|
}
|
|
147
|
-
if (inputQueryInfo === undefined && queryInputRaw.queryInfo !== undefined) {
|
|
148
|
-
queryInfo = queryInputRaw.queryInfo;
|
|
149
|
-
}
|
|
150
156
|
}
|
|
151
157
|
const queriedTablesRef = { current: undefined };
|
|
152
158
|
const makeResultsEqual = (resultSchema) => (a, b) => a === NOT_REFRESHED_YET || b === NOT_REFRESHED_YET ? false : Schema.equivalence(resultSchema)(a, b);
|
|
@@ -200,8 +206,8 @@ export class LiveStoreDbQuery extends LiveStoreQueryBase {
|
|
|
200
206
|
const parseErrorStr = TreeFormatter.formatErrorSync(parsedResult.left);
|
|
201
207
|
const expectedSchemaStr = String(schemaRef.current.ast);
|
|
202
208
|
const bindValuesStr = bindValues === undefined ? '' : `\nBind values: ${JSON.stringify(bindValues)}`;
|
|
203
|
-
|
|
204
|
-
Error parsing SQL query result.
|
|
209
|
+
return shouldNeverHappen(`\
|
|
210
|
+
Error parsing SQL query result (${label}).
|
|
205
211
|
|
|
206
212
|
Query: ${sqlString}\
|
|
207
213
|
${bindValuesStr}
|
|
@@ -210,8 +216,7 @@ Expected schema: ${expectedSchemaStr}
|
|
|
210
216
|
|
|
211
217
|
Error: ${parseErrorStr}
|
|
212
218
|
|
|
213
|
-
Result:`, rawDbResults);
|
|
214
|
-
return shouldNeverHappen(`Error parsing SQL query result: ${parsedResult.left}`);
|
|
219
|
+
Result:`, rawDbResults, '\n');
|
|
215
220
|
}
|
|
216
221
|
const result = this.mapResult(parsedResult.right);
|
|
217
222
|
span.end();
|
|
@@ -222,7 +227,6 @@ Result:`, rawDbResults);
|
|
|
222
227
|
}), { label: `${label}:results`, meta: { liveStoreThunkType: 'db.result' }, equal: resultsEqual });
|
|
223
228
|
this.results$ = results$;
|
|
224
229
|
this.label = label;
|
|
225
|
-
this.queryInfo = queryInfo;
|
|
226
230
|
}
|
|
227
231
|
destroy = () => {
|
|
228
232
|
this.isDestroyed = true;
|
|
@@ -235,8 +239,4 @@ Result:`, rawDbResults);
|
|
|
235
239
|
}
|
|
236
240
|
};
|
|
237
241
|
}
|
|
238
|
-
const queryInfoFromQueryBuilder = (qb) => {
|
|
239
|
-
const ast = qb[QueryBuilderAstSymbol];
|
|
240
|
-
return ast._tag === 'RowQuery' ? { _tag: 'Row', table: ast.tableDef, id: ast.id } : { _tag: 'None' };
|
|
241
|
-
};
|
|
242
242
|
//# sourceMappingURL=db-query.js.map
|