@livestore/livestore 0.0.55-dev.3 → 0.0.55
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/__tests__/react/fixture.d.ts +0 -5
- package/dist/__tests__/react/fixture.d.ts.map +1 -1
- package/dist/__tests__/react/fixture.js +1 -2
- package/dist/__tests__/react/fixture.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/react/LiveStoreProvider.test.js +3 -2
- package/dist/react/LiveStoreProvider.test.js.map +1 -1
- package/dist/react/useQuery.test.js +11 -4
- package/dist/react/useQuery.test.js.map +1 -1
- package/dist/react/useRow.test.js +13 -5
- package/dist/react/useRow.test.js.map +1 -1
- package/dist/react/useTemporaryQuery.test.js +5 -2
- package/dist/react/useTemporaryQuery.test.js.map +1 -1
- package/dist/reactiveQueries/graphql.d.ts.map +1 -1
- package/dist/reactiveQueries/graphql.js.map +1 -1
- package/dist/reactiveQueries/sql.d.ts +9 -12
- package/dist/reactiveQueries/sql.d.ts.map +1 -1
- package/dist/reactiveQueries/sql.js +39 -69
- package/dist/reactiveQueries/sql.js.map +1 -1
- package/dist/reactiveQueries/sql.test.js +9 -5
- package/dist/reactiveQueries/sql.test.js.map +1 -1
- package/dist/row-query.d.ts +6 -4
- package/dist/row-query.d.ts.map +1 -1
- package/dist/row-query.js +5 -12
- package/dist/row-query.js.map +1 -1
- package/package.json +5 -5
- package/src/__tests__/react/fixture.tsx +1 -3
- package/src/index.ts +1 -1
- package/src/react/LiveStoreProvider.test.tsx +3 -2
- package/src/react/useQuery.test.tsx +11 -4
- package/src/react/useRow.test.tsx +13 -9
- package/src/react/useTemporaryQuery.test.tsx +5 -2
- package/src/reactiveQueries/graphql.ts +5 -1
- package/src/reactiveQueries/sql.test.ts +9 -5
- package/src/reactiveQueries/sql.ts +61 -86
- package/src/row-query.ts +17 -21
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql.js","sourceRoot":"","sources":["../../src/reactiveQueries/sql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,iBAAiB,EAAsC,MAAM,mBAAmB,CAAA;AACxG,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"sql.js","sourceRoot":"","sources":["../../src/reactiveQueries/sql.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { Schema } from '@livestore/utils/effect';
|
|
1
2
|
import * as otel from '@opentelemetry/api';
|
|
2
3
|
import { BasicTracerProvider, InMemorySpanExporter, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base';
|
|
3
4
|
import { describe, expect, it } from 'vitest';
|
|
4
|
-
import { makeTodoMvc,
|
|
5
|
+
import { makeTodoMvc, tables } from '../__tests__/react/fixture.js';
|
|
5
6
|
import { getSimplifiedRootSpan } from '../__tests__/react/utils/otel.js';
|
|
6
|
-
import { computed,
|
|
7
|
+
import { computed, querySQL, rawSqlMutation, sql } from '../index.js';
|
|
7
8
|
/*
|
|
8
9
|
TODO write tests for:
|
|
9
10
|
|
|
@@ -34,13 +35,16 @@ describe('otel', () => {
|
|
|
34
35
|
it('otel', async () => {
|
|
35
36
|
using inputs = await makeQuery();
|
|
36
37
|
const { store, exporter, span } = inputs;
|
|
37
|
-
const query = querySQL(`select * from todos`, {
|
|
38
|
+
const query = querySQL(`select * from todos`, {
|
|
39
|
+
schema: Schema.Array(tables.todos.schema),
|
|
40
|
+
queriedTables: new Set(['todos']),
|
|
41
|
+
});
|
|
38
42
|
expect(query.run()).toMatchInlineSnapshot('[]');
|
|
39
43
|
store.mutate(rawSqlMutation({ sql: sql `INSERT INTO todos (id, text, completed) VALUES ('t1', 'buy milk', 0)` }));
|
|
40
44
|
expect(query.run()).toMatchInlineSnapshot(`
|
|
41
45
|
[
|
|
42
46
|
{
|
|
43
|
-
"completed":
|
|
47
|
+
"completed": false,
|
|
44
48
|
"id": "t1",
|
|
45
49
|
"text": "buy milk",
|
|
46
50
|
},
|
|
@@ -154,7 +158,7 @@ describe('otel', () => {
|
|
|
154
158
|
const filter = computed(() => `where completed = 0`, { label: 'where-filter' });
|
|
155
159
|
const query = querySQL((get) => `select * from todos ${get(filter)}`, {
|
|
156
160
|
label: 'all todos',
|
|
157
|
-
|
|
161
|
+
schema: Schema.Array(tables.todos.schema).pipe(Schema.headOrElse(() => defaultTodo)),
|
|
158
162
|
});
|
|
159
163
|
expect(query.run()).toMatchInlineSnapshot(`
|
|
160
164
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql.test.js","sourceRoot":"","sources":["../../src/reactiveQueries/sql.test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAC9G,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"sql.test.js","sourceRoot":"","sources":["../../src/reactiveQueries/sql.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAC9G,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AACxE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAErE;;;;;EAKE;AAEF,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IACpB,IAAI,cAA+C,CAAA;IAEnD,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;QAC3B,MAAM,QAAQ,GAAG,IAAI,oBAAoB,EAAE,CAAA;QAE3C,MAAM,QAAQ,GAAG,cAAc,IAAI,IAAI,mBAAmB,EAAE,CAAA;QAC5D,cAAc,GAAG,QAAQ,CAAA;QACzB,QAAQ,CAAC,gBAAgB,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC5D,QAAQ,CAAC,QAAQ,EAAE,CAAA;QAEnB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAE/C,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAA;QAEnE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,WAAW,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAA;QAEhE,OAAO;YACL,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE;YACvC,KAAK;YACL,UAAU;YACV,QAAQ;YACR,IAAI;YACJ,QAAQ;SACT,CAAA;IACH,CAAC,CAAA;IAED,EAAE,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;QACpB,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAA;QAChC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,CAAA;QAExC,MAAM,KAAK,GAAG,QAAQ,CAAC,qBAAqB,EAAE;YAC5C,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YACzC,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;SAClC,CAAC,CAAA;QACF,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAA;QAE/C,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,GAAG,CAAA,sEAAsE,EAAE,CAAC,CAAC,CAAA;QAEhH,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;KAQzC,CAAC,CAAA;QAEF,MAAM,KAAK,CAAC,OAAO,EAAE,CAAA;QACrB,KAAK,CAAC,OAAO,EAAE,CAAA;QACf,IAAI,CAAC,GAAG,EAAE,CAAA;QAEV,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgG7D,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC3B,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAA;QAChC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,CAAA;QAExC,MAAM,WAAW,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;QAE1D,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAA;QAC/E,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,uBAAuB,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE;YACpE,KAAK,EAAE,WAAW;YAClB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;SACrF,CAAC,CAAA;QAEF,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,qBAAqB,CAAC;;;;;;KAMzC,CAAC,CAAA;QAEF,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,GAAG,CAAA,sEAAsE,EAAE,CAAC,CAAC,CAAA;QAEhH,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,qBAAqB,CAAC;;;;;;KAMzC,CAAC,CAAA;QAEF,MAAM,KAAK,CAAC,OAAO,EAAE,CAAA;QACrB,KAAK,CAAC,OAAO,EAAE,CAAA;QACf,IAAI,CAAC,GAAG,EAAE,CAAA;QAEV,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAmG7D,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
package/dist/row-query.d.ts
CHANGED
|
@@ -4,21 +4,23 @@ import type { GetValForKey } from '@livestore/utils';
|
|
|
4
4
|
import type * as otel from '@opentelemetry/api';
|
|
5
5
|
import type { SqliteDsl } from 'effect-db-schema';
|
|
6
6
|
import type { LiveQuery, ReactivityGraph } from './reactiveQueries/base-class.js';
|
|
7
|
-
export type RowQueryOptions = {
|
|
7
|
+
export type RowQueryOptions<TTableDef extends DbSchema.TableDef, TResult = RowResult<TTableDef>> = {
|
|
8
8
|
otelContext?: otel.Context;
|
|
9
9
|
skipInsertDefaultRow?: boolean;
|
|
10
10
|
reactivityGraph?: ReactivityGraph;
|
|
11
|
+
map?: (result: RowResult<TTableDef>) => TResult;
|
|
12
|
+
label?: string;
|
|
11
13
|
};
|
|
12
14
|
export type RowQueryOptionsDefaulValues<TTableDef extends DbSchema.TableDef> = {
|
|
13
|
-
defaultValues
|
|
15
|
+
defaultValues?: Partial<RowResult<TTableDef>>;
|
|
14
16
|
};
|
|
15
17
|
export type MakeRowQuery = {
|
|
16
18
|
<TTableDef extends DbSchema.TableDef<DbSchema.DefaultSqliteTableDef, boolean, DbSchema.TableOptions & {
|
|
17
19
|
isSingleton: true;
|
|
18
|
-
}>>(table: TTableDef, options?: RowQueryOptions): LiveQuery<RowResult<TTableDef>, QueryInfoRow<TTableDef>>;
|
|
20
|
+
}>, TResult = RowResult<TTableDef>>(table: TTableDef, options?: RowQueryOptions<TTableDef, TResult>): LiveQuery<RowResult<TTableDef>, QueryInfoRow<TTableDef>>;
|
|
19
21
|
<TTableDef extends DbSchema.TableDef<DbSchema.DefaultSqliteTableDef, boolean, DbSchema.TableOptions & {
|
|
20
22
|
isSingleton: false;
|
|
21
|
-
}>>(table: TTableDef, id: string, options?: RowQueryOptions & RowQueryOptionsDefaulValues<TTableDef>): LiveQuery<
|
|
23
|
+
}>, TResult = RowResult<TTableDef>>(table: TTableDef, id: string, options?: RowQueryOptions<TTableDef, TResult> & RowQueryOptionsDefaulValues<TTableDef>): LiveQuery<TResult, QueryInfoRow<TTableDef>>;
|
|
22
24
|
};
|
|
23
25
|
export declare const rowQuery: MakeRowQuery;
|
|
24
26
|
export type RowResult<TTableDef extends DbSchema.TableDef> = TTableDef['isSingleColumn'] extends true ? GetValForKey<SqliteDsl.FromColumns.RowDecoded<TTableDef['sqliteDef']['columns']>, 'value'> : SqliteDsl.FromColumns.RowDecoded<TTableDef['sqliteDef']['columns']>;
|
package/dist/row-query.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"row-query.d.ts","sourceRoot":"","sources":["../src/row-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAElF,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAGpD,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,KAAK,EAAE,SAAS,EAA8B,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAK7G,MAAM,MAAM,eAAe,GAAG;
|
|
1
|
+
{"version":3,"file":"row-query.d.ts","sourceRoot":"","sources":["../src/row-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAElF,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAGpD,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,KAAK,EAAE,SAAS,EAA8B,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAK7G,MAAM,MAAM,eAAe,CAAC,SAAS,SAAS,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI;IACjG,WAAW,CAAC,EAAE,IAAI,CAAC,OAAO,CAAA;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,KAAK,OAAO,CAAA;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,2BAA2B,CAAC,SAAS,SAAS,QAAQ,CAAC,QAAQ,IAAI;IAC7E,aAAa,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAA;CAC9C,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,CACE,SAAS,SAAS,QAAQ,CAAC,QAAQ,CACjC,QAAQ,CAAC,qBAAqB,EAC9B,OAAO,EACP,QAAQ,CAAC,YAAY,GAAG;QAAE,WAAW,EAAE,IAAI,CAAA;KAAE,CAC9C,EACD,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,EAE9B,KAAK,EAAE,SAAS,EAChB,OAAO,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,GAC5C,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,CAAA;IAC3D,CACE,SAAS,SAAS,QAAQ,CAAC,QAAQ,CACjC,QAAQ,CAAC,qBAAqB,EAC9B,OAAO,EACP,QAAQ,CAAC,YAAY,GAAG;QAAE,WAAW,EAAE,KAAK,CAAA;KAAE,CAC/C,EACD,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,EAE9B,KAAK,EAAE,SAAS,EAEhB,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,2BAA2B,CAAC,SAAS,CAAC,GACrF,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,CAAA;CAC/C,CAAA;AAGD,eAAO,MAAM,QAAQ,EAAE,YAyCtB,CAAA;AAED,MAAM,MAAM,SAAS,CAAC,SAAS,SAAS,QAAQ,CAAC,QAAQ,IAAI,SAAS,CAAC,gBAAgB,CAAC,SAAS,IAAI,GACjG,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,GAC1F,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;AAEvE,MAAM,MAAM,gBAAgB,CAAC,SAAS,SAAS,QAAQ,CAAC,QAAQ,IAAI,SAAS,CAAC,gBAAgB,CAAC,SAAS,IAAI,GACxG,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,GAC1F,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;AAEvE,eAAO,MAAM,cAAc,EAAE;IAC3B,CAAC,MAAM,SAAS,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,IAAI,SAAS,MAAM,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,EAC5F,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,IAAI,GACZ,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,CAAA;IACtD,CAAC,MAAM,SAAS,SAAS,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,SAAS,MAAM,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,EAChG,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,IAAI,GACZ,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;CAS1F,CAAA"}
|
package/dist/row-query.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { sql } from '@livestore/common';
|
|
2
2
|
import { DbSchema } from '@livestore/common/schema';
|
|
3
3
|
import { shouldNeverHappen } from '@livestore/utils';
|
|
4
|
-
import { Schema
|
|
4
|
+
import { Schema } from '@livestore/utils/effect';
|
|
5
5
|
import { computed } from './reactiveQueries/js.js';
|
|
6
6
|
import { LiveStoreSQLQuery } from './reactiveQueries/sql.js';
|
|
7
7
|
// TODO also allow other where clauses and multiple rows
|
|
@@ -20,8 +20,9 @@ export const rowQuery = (table, idOrOptions, options_) => {
|
|
|
20
20
|
const tableName = tableSchema.name;
|
|
21
21
|
const whereClause = id === undefined ? '' : `where id = '${id}'`;
|
|
22
22
|
const queryStr = sql `select * from ${tableName} ${whereClause} limit 1`;
|
|
23
|
+
const rowSchema = table.isSingleColumn === true ? table.schema.pipe(Schema.pluck('value')) : table.schema;
|
|
23
24
|
return new LiveStoreSQLQuery({
|
|
24
|
-
label: `rowQuery:query:${tableSchema.name}${id === undefined ? '' : `:${id}`}`,
|
|
25
|
+
label: options?.label ?? `rowQuery:query:${tableSchema.name}${id === undefined ? '' : `:${id}`}`,
|
|
25
26
|
genQueryString: queryStr,
|
|
26
27
|
queriedTables: new Set([tableName]),
|
|
27
28
|
reactivityGraph: options?.reactivityGraph,
|
|
@@ -33,16 +34,8 @@ export const rowQuery = (table, idOrOptions, options_) => {
|
|
|
33
34
|
id,
|
|
34
35
|
skipInsertDefaultRow: options?.skipInsertDefaultRow,
|
|
35
36
|
}),
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return shouldNeverHappen(`No results for query ${queryStr}`);
|
|
39
|
-
const parseResult = Schema.decodeEither(table.schema)(results[0]);
|
|
40
|
-
if (parseResult._tag === 'Left') {
|
|
41
|
-
console.error('decode error', TreeFormatter.formatErrorSync(parseResult.left), 'results', results);
|
|
42
|
-
return shouldNeverHappen(`Error decoding query result for ${queryStr}`);
|
|
43
|
-
}
|
|
44
|
-
return table.isSingleColumn === true ? parseResult.right.value : parseResult.right;
|
|
45
|
-
},
|
|
37
|
+
schema: rowSchema.pipe(Schema.Array, Schema.headOrElse()),
|
|
38
|
+
map: options?.map,
|
|
46
39
|
queryInfo: { _tag: 'Row', table, id: id ?? 'singleton' },
|
|
47
40
|
});
|
|
48
41
|
};
|
package/dist/row-query.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"row-query.js","sourceRoot":"","sources":["../src/row-query.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"row-query.js","sourceRoot":"","sources":["../src/row-query.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@livestore/livestore",
|
|
3
|
-
"version": "0.0.55
|
|
3
|
+
"version": "0.0.55",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -30,9 +30,9 @@
|
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@graphql-typed-document-node/core": "^3.2.0",
|
|
32
32
|
"@opentelemetry/api": "^1.9.0",
|
|
33
|
-
"@livestore/common": "0.0.55
|
|
34
|
-
"
|
|
35
|
-
"
|
|
33
|
+
"@livestore/common": "0.0.55",
|
|
34
|
+
"effect-db-schema": "0.0.55",
|
|
35
|
+
"@livestore/utils": "0.0.55"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@opentelemetry/sdk-trace-base": "1.25.1",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"typescript": "5.5.4",
|
|
47
47
|
"vite": "5.3.5",
|
|
48
48
|
"vitest": "^2.0.4",
|
|
49
|
-
"@livestore/web": "0.0.55
|
|
49
|
+
"@livestore/web": "0.0.55"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
52
52
|
"@tauri-apps/api": "^1.4.0",
|
|
@@ -5,7 +5,7 @@ import React from 'react'
|
|
|
5
5
|
|
|
6
6
|
import { globalReactivityGraph } from '../../global-state.js'
|
|
7
7
|
import type { LiveStoreContext } from '../../index.js'
|
|
8
|
-
import { createStorePromise, DbSchema, makeReactivityGraph, makeSchema,
|
|
8
|
+
import { createStorePromise, DbSchema, makeReactivityGraph, makeSchema, sql } from '../../index.js'
|
|
9
9
|
import * as LiveStoreReact from '../../react/index.js'
|
|
10
10
|
|
|
11
11
|
export type Todo = {
|
|
@@ -57,8 +57,6 @@ const AppRouterSchema = DbSchema.table(
|
|
|
57
57
|
export const tables = { todos, app, userInfo, AppRouterSchema }
|
|
58
58
|
export const schema = makeSchema({ tables })
|
|
59
59
|
|
|
60
|
-
export const parseTodos = ParseUtils.many(todos)
|
|
61
|
-
|
|
62
60
|
export const makeTodoMvc = async ({
|
|
63
61
|
otelTracer,
|
|
64
62
|
otelContext,
|
package/src/index.ts
CHANGED
|
@@ -22,7 +22,7 @@ export type {
|
|
|
22
22
|
Effect,
|
|
23
23
|
} from './reactive.js'
|
|
24
24
|
export { LiveStoreJSQuery, computed } from './reactiveQueries/js.js'
|
|
25
|
-
export { LiveStoreSQLQuery, querySQL
|
|
25
|
+
export { LiveStoreSQLQuery, querySQL } from './reactiveQueries/sql.js'
|
|
26
26
|
export { LiveStoreGraphQLQuery, queryGraphQL } from './reactiveQueries/graphql.js'
|
|
27
27
|
export {
|
|
28
28
|
type GetAtomResult,
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import type { BootDb } from '@livestore/common'
|
|
2
2
|
import { sql } from '@livestore/common'
|
|
3
|
+
import { Schema } from '@livestore/utils/effect'
|
|
3
4
|
import { makeInMemoryAdapter } from '@livestore/web'
|
|
4
5
|
import { render, screen, waitFor, waitForElementToBeRemoved } from '@testing-library/react'
|
|
5
6
|
import React from 'react'
|
|
6
7
|
import { describe, expect, it } from 'vitest'
|
|
7
8
|
|
|
8
|
-
import {
|
|
9
|
+
import { schema, tables } from '../__tests__/react/fixture.js'
|
|
9
10
|
import { querySQL } from '../reactiveQueries/sql.js'
|
|
10
11
|
import * as LiveStoreReact from './index.js'
|
|
11
12
|
import { LiveStoreProvider } from './LiveStoreProvider.js'
|
|
@@ -14,7 +15,7 @@ describe('LiveStoreProvider', () => {
|
|
|
14
15
|
it('simple', async () => {
|
|
15
16
|
let appRenderCount = 0
|
|
16
17
|
|
|
17
|
-
const allTodos$ = querySQL(`select * from todos`, {
|
|
18
|
+
const allTodos$ = querySQL(`select * from todos`, { schema: Schema.Array(tables.todos.schema) })
|
|
18
19
|
|
|
19
20
|
const App = () => {
|
|
20
21
|
appRenderCount++
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { Schema } from '@livestore/utils/effect'
|
|
1
2
|
import { renderHook } from '@testing-library/react'
|
|
2
3
|
import React from 'react'
|
|
3
4
|
import { describe, expect, it } from 'vitest'
|
|
4
5
|
|
|
5
|
-
import { makeTodoMvc,
|
|
6
|
+
import { makeTodoMvc, tables, todos } from '../__tests__/react/fixture.js'
|
|
6
7
|
import { querySQL } from '../reactiveQueries/sql.js'
|
|
7
8
|
import * as LiveStoreReact from './index.js'
|
|
8
9
|
|
|
@@ -12,7 +13,7 @@ describe('useQuery', () => {
|
|
|
12
13
|
|
|
13
14
|
const renderCount = makeRenderCount()
|
|
14
15
|
|
|
15
|
-
const allTodos$ = querySQL(`select * from todos`, {
|
|
16
|
+
const allTodos$ = querySQL(`select * from todos`, { schema: Schema.Array(tables.todos.schema) })
|
|
16
17
|
|
|
17
18
|
const { result } = renderHook(
|
|
18
19
|
() => {
|
|
@@ -38,8 +39,14 @@ describe('useQuery', () => {
|
|
|
38
39
|
|
|
39
40
|
const renderCount = makeRenderCount()
|
|
40
41
|
|
|
41
|
-
const todo1$ = querySQL(`select * from todos where id = 't1'`, {
|
|
42
|
-
|
|
42
|
+
const todo1$ = querySQL(`select * from todos where id = 't1'`, {
|
|
43
|
+
label: 'libraryTracksView1',
|
|
44
|
+
schema: Schema.Array(tables.todos.schema),
|
|
45
|
+
})
|
|
46
|
+
const todo2$ = querySQL(`select * from todos where id = 't2'`, {
|
|
47
|
+
label: 'libraryTracksView2',
|
|
48
|
+
schema: Schema.Array(tables.todos.schema),
|
|
49
|
+
})
|
|
43
50
|
|
|
44
51
|
store.mutate(
|
|
45
52
|
todos.insert({ id: 't1', text: 'buy milk', completed: false }),
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import { ReadonlyRecord } from '@livestore/utils/effect'
|
|
1
|
+
import { ReadonlyRecord, Schema } from '@livestore/utils/effect'
|
|
2
2
|
import * as otel from '@opentelemetry/api'
|
|
3
3
|
import { BasicTracerProvider, InMemorySpanExporter, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base'
|
|
4
4
|
import { render, renderHook } from '@testing-library/react'
|
|
5
5
|
import React from 'react'
|
|
6
6
|
import { describe, expect, it } from 'vitest'
|
|
7
7
|
|
|
8
|
-
import
|
|
9
|
-
import { makeTodoMvc, todos } from '../__tests__/react/fixture.js'
|
|
8
|
+
import { makeTodoMvc, tables, todos } from '../__tests__/react/fixture.js'
|
|
10
9
|
import { getSimplifiedRootSpan } from '../__tests__/react/utils/otel.js'
|
|
11
10
|
import * as LiveStore from '../index.js'
|
|
12
11
|
import * as LiveStoreReact from './index.js'
|
|
@@ -118,7 +117,11 @@ describe.concurrent('useRow', () => {
|
|
|
118
117
|
using inputs = await makeTodoMvc({ useGlobalReactivityGraph: false })
|
|
119
118
|
const { wrapper, store, reactivityGraph, makeRenderCount, AppRouterSchema } = inputs
|
|
120
119
|
|
|
121
|
-
const allTodos$ = LiveStore.querySQL
|
|
120
|
+
const allTodos$ = LiveStore.querySQL(`select * from todos`, {
|
|
121
|
+
label: 'allTodos',
|
|
122
|
+
schema: Schema.Array(tables.todos.schema),
|
|
123
|
+
reactivityGraph,
|
|
124
|
+
})
|
|
122
125
|
|
|
123
126
|
const appRouterRenderCount = makeRenderCount()
|
|
124
127
|
let globalSetState: LiveStoreReact.StateSetters<typeof AppRouterSchema> | undefined
|
|
@@ -176,7 +179,7 @@ describe.concurrent('useRow', () => {
|
|
|
176
179
|
|
|
177
180
|
expect(appRouterRenderCount.val).toBe(2)
|
|
178
181
|
expect(renderResult.getByRole('content').innerHTML).toMatchInlineSnapshot(
|
|
179
|
-
`"{"id":"t1","text":"buy milk"
|
|
182
|
+
`"{"completed":false,"id":"t1","text":"buy milk"}"`,
|
|
180
183
|
)
|
|
181
184
|
|
|
182
185
|
expect(renderResult.getByRole('current-id').innerHTML).toMatchInlineSnapshot('"Current Task Id: t1"')
|
|
@@ -214,10 +217,11 @@ describe.concurrent('useRow', () => {
|
|
|
214
217
|
const [_row, _setRow, rowState$] = LiveStoreReact.useRow(AppComponentSchema, userId, { reactivityGraph })
|
|
215
218
|
const todos = LiveStoreReact.useTemporaryQuery(
|
|
216
219
|
() =>
|
|
217
|
-
LiveStore.querySQL
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
220
|
+
LiveStore.querySQL((get) => LiveStore.sql`select * from todos where text like '%${get(rowState$).text}%'`, {
|
|
221
|
+
schema: Schema.Array(tables.todos.schema),
|
|
222
|
+
reactivityGraph,
|
|
223
|
+
label: 'todosFiltered',
|
|
224
|
+
}),
|
|
221
225
|
userId,
|
|
222
226
|
)
|
|
223
227
|
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { Schema } from '@livestore/utils/effect'
|
|
1
2
|
import { renderHook } from '@testing-library/react'
|
|
2
3
|
import { describe, expect, it } from 'vitest'
|
|
3
4
|
|
|
4
|
-
import { makeTodoMvc,
|
|
5
|
+
import { makeTodoMvc, tables, todos } from '../__tests__/react/fixture.js'
|
|
5
6
|
import type * as LiveStore from '../index.js'
|
|
6
7
|
import { querySQL } from '../reactiveQueries/sql.js'
|
|
7
8
|
import * as LiveStoreReact from './index.js'
|
|
@@ -24,7 +25,9 @@ describe('useTemporaryQuery', () => {
|
|
|
24
25
|
renderCount.inc()
|
|
25
26
|
|
|
26
27
|
return LiveStoreReact.useTemporaryQuery(() => {
|
|
27
|
-
const query$ = querySQL(`select * from todos where id = '${id}'`, {
|
|
28
|
+
const query$ = querySQL(`select * from todos where id = '${id}'`, {
|
|
29
|
+
schema: Schema.Array(tables.todos.schema),
|
|
30
|
+
})
|
|
28
31
|
queryMap.set(id, query$)
|
|
29
32
|
return query$
|
|
30
33
|
}, id)
|
|
@@ -25,7 +25,11 @@ export const queryGraphQL = <
|
|
|
25
25
|
label,
|
|
26
26
|
reactivityGraph,
|
|
27
27
|
map,
|
|
28
|
-
}: {
|
|
28
|
+
}: {
|
|
29
|
+
label?: string
|
|
30
|
+
reactivityGraph?: ReactivityGraph
|
|
31
|
+
map?: MapResult<TResultMapped, TResult>
|
|
32
|
+
} = {},
|
|
29
33
|
): LiveQuery<TResultMapped, QueryInfoNone> =>
|
|
30
34
|
new LiveStoreGraphQLQuery({ document, genVariableValues, label, reactivityGraph, map })
|
|
31
35
|
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { Schema } from '@livestore/utils/effect'
|
|
1
2
|
import * as otel from '@opentelemetry/api'
|
|
2
3
|
import { BasicTracerProvider, InMemorySpanExporter, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base'
|
|
3
4
|
import { describe, expect, it } from 'vitest'
|
|
4
5
|
|
|
5
|
-
import { makeTodoMvc,
|
|
6
|
+
import { makeTodoMvc, tables } from '../__tests__/react/fixture.js'
|
|
6
7
|
import { getSimplifiedRootSpan } from '../__tests__/react/utils/otel.js'
|
|
7
|
-
import { computed,
|
|
8
|
+
import { computed, querySQL, rawSqlMutation, sql } from '../index.js'
|
|
8
9
|
|
|
9
10
|
/*
|
|
10
11
|
TODO write tests for:
|
|
@@ -45,7 +46,10 @@ describe('otel', () => {
|
|
|
45
46
|
using inputs = await makeQuery()
|
|
46
47
|
const { store, exporter, span } = inputs
|
|
47
48
|
|
|
48
|
-
const query = querySQL(`select * from todos`, {
|
|
49
|
+
const query = querySQL(`select * from todos`, {
|
|
50
|
+
schema: Schema.Array(tables.todos.schema),
|
|
51
|
+
queriedTables: new Set(['todos']),
|
|
52
|
+
})
|
|
49
53
|
expect(query.run()).toMatchInlineSnapshot('[]')
|
|
50
54
|
|
|
51
55
|
store.mutate(rawSqlMutation({ sql: sql`INSERT INTO todos (id, text, completed) VALUES ('t1', 'buy milk', 0)` }))
|
|
@@ -53,7 +57,7 @@ describe('otel', () => {
|
|
|
53
57
|
expect(query.run()).toMatchInlineSnapshot(`
|
|
54
58
|
[
|
|
55
59
|
{
|
|
56
|
-
"completed":
|
|
60
|
+
"completed": false,
|
|
57
61
|
"id": "t1",
|
|
58
62
|
"text": "buy milk",
|
|
59
63
|
},
|
|
@@ -172,7 +176,7 @@ describe('otel', () => {
|
|
|
172
176
|
const filter = computed(() => `where completed = 0`, { label: 'where-filter' })
|
|
173
177
|
const query = querySQL((get) => `select * from todos ${get(filter)}`, {
|
|
174
178
|
label: 'all todos',
|
|
175
|
-
|
|
179
|
+
schema: Schema.Array(tables.todos.schema).pipe(Schema.headOrElse(() => defaultTodo)),
|
|
176
180
|
})
|
|
177
181
|
|
|
178
182
|
expect(query.run()).toMatchInlineSnapshot(`
|