@livestore/common 0.3.2-dev.0 → 0.3.2-dev.10
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/ClientSessionLeaderThreadProxy.d.ts +7 -7
- package/dist/__tests__/fixture.d.ts +4 -4
- package/dist/__tests__/fixture.js +2 -2
- package/dist/adapter-types.d.ts +9 -9
- package/dist/adapter-types.d.ts.map +1 -1
- package/dist/adapter-types.js +4 -4
- package/dist/adapter-types.js.map +1 -1
- package/dist/debug-info.d.ts +2 -2
- package/dist/debug-info.js +2 -2
- package/dist/devtools/devtools-messages-client-session.d.ts +27 -27
- package/dist/devtools/devtools-messages-client-session.js +4 -4
- package/dist/devtools/devtools-messages-common.d.ts +6 -6
- package/dist/devtools/devtools-messages-common.d.ts.map +1 -1
- package/dist/devtools/devtools-messages-common.js +1 -1
- package/dist/devtools/devtools-messages-leader.d.ts +35 -35
- package/dist/devtools/devtools-messages-leader.js +4 -4
- package/dist/devtools/devtools-messages.d.ts +3 -3
- package/dist/devtools/devtools-messages.d.ts.map +1 -1
- package/dist/devtools/devtools-messages.js +3 -3
- package/dist/devtools/devtools-messages.js.map +1 -1
- package/dist/devtools/mod.d.ts +3 -3
- package/dist/devtools/mod.js +3 -3
- package/dist/index.d.ts +16 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -16
- package/dist/index.js.map +1 -1
- package/dist/leader-thread/LeaderSyncProcessor.d.ts +5 -5
- package/dist/leader-thread/LeaderSyncProcessor.js +11 -11
- package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
- package/dist/leader-thread/connection.d.ts +4 -4
- package/dist/leader-thread/connection.js +2 -2
- package/dist/leader-thread/eventlog.d.ts +7 -7
- package/dist/leader-thread/eventlog.js +8 -8
- package/dist/leader-thread/eventlog.js.map +1 -1
- package/dist/leader-thread/leader-worker-devtools.d.ts +3 -3
- package/dist/leader-thread/leader-worker-devtools.js +3 -3
- package/dist/leader-thread/make-leader-thread-layer.d.ts +7 -7
- package/dist/leader-thread/make-leader-thread-layer.js +10 -10
- package/dist/leader-thread/materialize-event.d.ts +4 -4
- package/dist/leader-thread/materialize-event.js +7 -7
- package/dist/leader-thread/mod.d.ts +8 -8
- package/dist/leader-thread/mod.d.ts.map +1 -1
- package/dist/leader-thread/mod.js +8 -8
- package/dist/leader-thread/mod.js.map +1 -1
- package/dist/leader-thread/recreate-db.d.ts +5 -5
- package/dist/leader-thread/recreate-db.js +2 -2
- package/dist/leader-thread/shutdown-channel.d.ts +1 -1
- package/dist/leader-thread/shutdown-channel.js +1 -1
- package/dist/leader-thread/types.d.ts +6 -6
- package/dist/make-client-session.d.ts +2 -2
- package/dist/make-client-session.d.ts.map +1 -1
- package/dist/make-client-session.js +2 -2
- package/dist/make-client-session.js.map +1 -1
- package/dist/materializer-helper.d.ts +5 -5
- package/dist/materializer-helper.js +5 -5
- package/dist/rematerialize-from-eventlog.d.ts +4 -4
- package/dist/rematerialize-from-eventlog.js +3 -3
- package/dist/schema/EventDef.d.ts +178 -132
- package/dist/schema/EventDef.d.ts.map +1 -1
- package/dist/schema/EventDef.js +0 -15
- package/dist/schema/EventDef.js.map +1 -1
- package/dist/schema/EventSequenceNumber.test.js +1 -1
- package/dist/schema/LiveStoreEvent.d.ts +5 -5
- package/dist/schema/LiveStoreEvent.js +1 -1
- package/dist/schema/events.d.ts +1 -1
- package/dist/schema/events.d.ts.map +1 -1
- package/dist/schema/events.js +1 -1
- package/dist/schema/events.js.map +1 -1
- package/dist/schema/mod.d.ts +9 -9
- package/dist/schema/mod.d.ts.map +1 -1
- package/dist/schema/mod.js +9 -9
- package/dist/schema/mod.js.map +1 -1
- package/dist/schema/schema.d.ts +4 -8
- package/dist/schema/schema.d.ts.map +1 -1
- package/dist/schema/schema.js +2 -4
- package/dist/schema/schema.js.map +1 -1
- package/dist/schema/state/mod.d.ts +2 -2
- package/dist/schema/state/mod.js +2 -2
- package/dist/schema/state/sqlite/client-document-def.d.ts +17 -5
- package/dist/schema/state/sqlite/client-document-def.d.ts.map +1 -1
- package/dist/schema/state/sqlite/client-document-def.js +18 -6
- package/dist/schema/state/sqlite/client-document-def.js.map +1 -1
- package/dist/schema/state/sqlite/client-document-def.test.js +4 -6
- package/dist/schema/state/sqlite/client-document-def.test.js.map +1 -1
- package/dist/schema/state/sqlite/db-schema/ast/sqlite.js +1 -1
- package/dist/schema/state/sqlite/db-schema/ast/validate.d.ts +1 -1
- package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js +1 -1
- package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts +165 -65
- package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts.map +1 -1
- package/dist/schema/state/sqlite/db-schema/dsl/mod.js +1 -1
- package/dist/schema/state/sqlite/db-schema/dsl/mod.js.map +1 -1
- package/dist/schema/state/sqlite/db-schema/hash.d.ts.map +1 -1
- package/dist/schema/state/sqlite/db-schema/hash.js +0 -1
- package/dist/schema/state/sqlite/db-schema/hash.js.map +1 -1
- package/dist/schema/state/sqlite/db-schema/mod.d.ts +2 -2
- package/dist/schema/state/sqlite/db-schema/mod.d.ts.map +1 -1
- package/dist/schema/state/sqlite/db-schema/mod.js +2 -2
- package/dist/schema/state/sqlite/db-schema/mod.js.map +1 -1
- package/dist/schema/state/sqlite/mod.d.ts +7 -7
- package/dist/schema/state/sqlite/mod.d.ts.map +1 -1
- package/dist/schema/state/sqlite/mod.js +6 -8
- package/dist/schema/state/sqlite/mod.js.map +1 -1
- package/dist/schema/state/sqlite/query-builder/api.d.ts +560 -307
- package/dist/schema/state/sqlite/query-builder/astToSql.d.ts +2 -2
- package/dist/schema/state/sqlite/query-builder/astToSql.js +1 -1
- package/dist/schema/state/sqlite/query-builder/impl.d.ts +2 -2
- package/dist/schema/state/sqlite/query-builder/impl.d.ts.map +1 -1
- package/dist/schema/state/sqlite/query-builder/impl.js +4 -14
- package/dist/schema/state/sqlite/query-builder/impl.js.map +1 -1
- package/dist/schema/state/sqlite/query-builder/impl.test.js +3 -3
- package/dist/schema/state/sqlite/query-builder/mod.d.ts +2 -2
- package/dist/schema/state/sqlite/query-builder/mod.js +2 -2
- package/dist/schema/state/sqlite/schema-helpers.d.ts +1 -1
- package/dist/schema/state/sqlite/schema-helpers.js +1 -1
- package/dist/schema/state/sqlite/system-tables.d.ts +10 -10
- package/dist/schema/state/sqlite/system-tables.js +3 -3
- package/dist/schema/state/sqlite/table-def.d.ts +152 -70
- package/dist/schema/state/sqlite/table-def.js +2 -2
- package/dist/schema-management/common.d.ts +2 -2
- package/dist/schema-management/common.js +1 -1
- package/dist/schema-management/migrations.d.ts +6 -6
- package/dist/schema-management/migrations.js +5 -5
- package/dist/schema-management/validate-schema.d.ts +5 -5
- package/dist/schema-management/validate-schema.d.ts.map +1 -1
- package/dist/schema-management/validate-schema.js +2 -2
- package/dist/schema-management/validate-schema.js.map +1 -1
- package/dist/sql-queries/index.d.ts +3 -3
- package/dist/sql-queries/index.js +3 -3
- package/dist/sql-queries/sql-queries.d.ts +2 -2
- package/dist/sql-queries/sql-queries.js +3 -3
- package/dist/sql-queries/sql-query-builder.d.ts +3 -3
- package/dist/sql-queries/sql-query-builder.js +1 -1
- package/dist/sql-queries/types.d.ts +133 -37
- package/dist/sqlite-db-helper.d.ts +2 -2
- package/dist/sqlite-db-helper.js +1 -1
- package/dist/sqlite-types.d.ts +4 -4
- package/dist/sync/ClientSessionSyncProcessor.d.ts +17 -6
- package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
- package/dist/sync/ClientSessionSyncProcessor.js +30 -11
- package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
- package/dist/sync/index.d.ts +3 -3
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +3 -3
- package/dist/sync/index.js.map +1 -1
- package/dist/sync/next/compact-events.d.ts +1 -1
- package/dist/sync/next/compact-events.js +4 -4
- package/dist/sync/next/facts.d.ts +3 -3
- package/dist/sync/next/facts.js +2 -2
- package/dist/sync/next/graphology.d.ts.map +1 -1
- package/dist/sync/next/graphology.js.map +1 -1
- package/dist/sync/next/graphology_.d.ts +1 -1
- package/dist/sync/next/graphology_.d.ts.map +1 -1
- package/dist/sync/next/graphology_.js +1 -1
- package/dist/sync/next/graphology_.js.map +1 -1
- package/dist/sync/next/history-dag-common.d.ts +3 -3
- package/dist/sync/next/history-dag-common.js +2 -2
- package/dist/sync/next/history-dag.d.ts +2 -2
- package/dist/sync/next/history-dag.js +3 -3
- package/dist/sync/next/mod.d.ts +5 -5
- package/dist/sync/next/mod.d.ts.map +1 -1
- package/dist/sync/next/mod.js +5 -5
- package/dist/sync/next/mod.js.map +1 -1
- package/dist/sync/next/rebase-events.d.ts +4 -4
- package/dist/sync/next/rebase-events.d.ts.map +1 -1
- package/dist/sync/next/rebase-events.js +2 -2
- package/dist/sync/next/rebase-events.js.map +1 -1
- package/dist/sync/next/test/compact-events.calculator.test.js +4 -4
- package/dist/sync/next/test/compact-events.test.js +4 -4
- package/dist/sync/next/test/event-fixtures.d.ts +3 -3
- package/dist/sync/next/test/event-fixtures.js +5 -5
- package/dist/sync/next/test/mod.d.ts +1 -1
- package/dist/sync/next/test/mod.js +1 -1
- package/dist/sync/sync.d.ts +4 -4
- package/dist/sync/sync.js +1 -1
- package/dist/sync/syncstate.d.ts +1 -1
- package/dist/sync/syncstate.js +2 -2
- package/dist/sync/syncstate.test.js +3 -4
- package/dist/sync/syncstate.test.js.map +1 -1
- package/dist/sync/validate-push-payload.d.ts +2 -2
- package/dist/sync/validate-push-payload.js +1 -1
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +0 -1
- package/dist/util.js.map +1 -1
- package/dist/version.d.ts +2 -2
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +2 -2
- package/dist/version.js.map +1 -1
- package/package.json +10 -49
- package/src/ClientSessionLeaderThreadProxy.ts +7 -7
- package/src/__tests__/fixture.ts +2 -2
- package/src/adapter-types.ts +10 -9
- package/src/debug-info.ts +2 -2
- package/src/devtools/devtools-messages-client-session.ts +4 -4
- package/src/devtools/devtools-messages-common.ts +1 -1
- package/src/devtools/devtools-messages-leader.ts +4 -4
- package/src/devtools/devtools-messages.ts +3 -3
- package/src/devtools/mod.ts +3 -3
- package/src/index.ts +16 -16
- package/src/leader-thread/LeaderSyncProcessor.ts +14 -14
- package/src/leader-thread/connection.ts +5 -5
- package/src/leader-thread/eventlog.ts +12 -12
- package/src/leader-thread/leader-worker-devtools.ts +4 -4
- package/src/leader-thread/make-leader-thread-layer.ts +16 -16
- package/src/leader-thread/materialize-event.ts +9 -9
- package/src/leader-thread/mod.ts +8 -8
- package/src/leader-thread/recreate-db.ts +6 -6
- package/src/leader-thread/shutdown-channel.ts +1 -1
- package/src/leader-thread/types.ts +6 -6
- package/src/make-client-session.ts +3 -4
- package/src/materializer-helper.ts +11 -11
- package/src/rematerialize-from-eventlog.ts +6 -6
- package/src/schema/EventDef.ts +4 -24
- package/src/schema/EventSequenceNumber.test.ts +1 -1
- package/src/schema/LiveStoreEvent.ts +3 -3
- package/src/schema/events.ts +1 -1
- package/src/schema/mod.ts +9 -9
- package/src/schema/schema.ts +8 -11
- package/src/schema/state/mod.ts +2 -2
- package/src/schema/state/sqlite/client-document-def.test.ts +9 -7
- package/src/schema/state/sqlite/client-document-def.ts +57 -33
- package/src/schema/state/sqlite/db-schema/ast/sqlite.ts +1 -1
- package/src/schema/state/sqlite/db-schema/ast/validate.ts +1 -1
- package/src/schema/state/sqlite/db-schema/dsl/field-defs.test.ts +1 -1
- package/src/schema/state/sqlite/db-schema/dsl/mod.ts +19 -13
- package/src/schema/state/sqlite/db-schema/hash.ts +0 -1
- package/src/schema/state/sqlite/db-schema/mod.ts +2 -2
- package/src/schema/state/sqlite/mod.ts +13 -15
- package/src/schema/state/sqlite/query-builder/api.ts +5 -5
- package/src/schema/state/sqlite/query-builder/astToSql.ts +4 -4
- package/src/schema/state/sqlite/query-builder/impl.test.ts +4 -4
- package/src/schema/state/sqlite/query-builder/impl.ts +8 -16
- package/src/schema/state/sqlite/query-builder/mod.ts +2 -2
- package/src/schema/state/sqlite/schema-helpers.ts +2 -2
- package/src/schema/state/sqlite/system-tables.ts +3 -3
- package/src/schema/state/sqlite/table-def.ts +3 -3
- package/src/schema-management/common.ts +3 -3
- package/src/schema-management/migrations.ts +11 -11
- package/src/schema-management/validate-schema.ts +5 -5
- package/src/sql-queries/index.ts +3 -3
- package/src/sql-queries/sql-queries.ts +4 -4
- package/src/sql-queries/sql-query-builder.ts +4 -4
- package/src/sql-queries/types.ts +1 -1
- package/src/sqlite-db-helper.ts +3 -3
- package/src/sqlite-types.ts +4 -4
- package/src/sync/ClientSessionSyncProcessor.ts +50 -12
- package/src/sync/index.ts +3 -3
- package/src/sync/next/compact-events.ts +5 -5
- package/src/sync/next/facts.ts +4 -4
- package/src/sync/next/graphology.ts +2 -4
- package/src/sync/next/graphology_.ts +1 -1
- package/src/sync/next/history-dag-common.ts +3 -3
- package/src/sync/next/history-dag.ts +3 -3
- package/src/sync/next/mod.ts +5 -5
- package/src/sync/next/rebase-events.ts +6 -6
- package/src/sync/next/test/compact-events.calculator.test.ts +4 -4
- package/src/sync/next/test/compact-events.test.ts +5 -5
- package/src/sync/next/test/event-fixtures.ts +7 -7
- package/src/sync/next/test/mod.ts +1 -1
- package/src/sync/sync.ts +4 -4
- package/src/sync/syncstate.test.ts +9 -6
- package/src/sync/syncstate.ts +2 -2
- package/src/sync/validate-push-payload.ts +2 -2
- package/src/util.ts +0 -1
- package/src/version.ts +2 -2
@@ -1,9 +1,9 @@
|
|
1
1
|
import { Schema } from '@livestore/utils/effect'
|
2
2
|
import { describe, expect, test } from 'vitest'
|
3
3
|
|
4
|
-
import { tables } from '../../../__tests__/fixture.
|
5
|
-
import type * as LiveStoreEvent from '../../LiveStoreEvent.
|
6
|
-
import {
|
4
|
+
import { tables } from '../../../__tests__/fixture.ts'
|
5
|
+
import type * as LiveStoreEvent from '../../LiveStoreEvent.ts'
|
6
|
+
import { ClientDocumentTableDefSymbol, clientDocument } from './client-document-def.ts'
|
7
7
|
|
8
8
|
describe('client document table', () => {
|
9
9
|
test('set event', () => {
|
@@ -70,8 +70,9 @@ describe('client document table', () => {
|
|
70
70
|
})
|
71
71
|
|
72
72
|
test('struct value (partial set=true)', () => {
|
73
|
-
expect(
|
74
|
-
.
|
73
|
+
expect(
|
74
|
+
forSchema(Schema.Struct({ a: Schema.String }), { a: 'hello' }, 'id1', { partialSet: true }),
|
75
|
+
).toMatchInlineSnapshot(`
|
75
76
|
{
|
76
77
|
"bindValues": [
|
77
78
|
"id1",
|
@@ -92,8 +93,9 @@ describe('client document table', () => {
|
|
92
93
|
})
|
93
94
|
|
94
95
|
test('struct value (partial set=false)', () => {
|
95
|
-
expect(
|
96
|
-
.
|
96
|
+
expect(
|
97
|
+
forSchema(Schema.Struct({ a: Schema.String }), { a: 'hello' }, 'id1', { partialSet: false }),
|
98
|
+
).toMatchInlineSnapshot(`
|
97
99
|
{
|
98
100
|
"bindValues": [
|
99
101
|
"id1",
|
@@ -2,15 +2,15 @@ import { shouldNeverHappen } from '@livestore/utils'
|
|
2
2
|
import type { Option, Types } from '@livestore/utils/effect'
|
3
3
|
import { Schema, SchemaAST } from '@livestore/utils/effect'
|
4
4
|
|
5
|
-
import { SessionIdSymbol } from '../../../adapter-types.
|
6
|
-
import { sql } from '../../../util.
|
7
|
-
import type { EventDef, Materializer } from '../../EventDef.
|
8
|
-
import { defineEvent, defineMaterializer } from '../../EventDef.
|
9
|
-
import { SqliteDsl } from './db-schema/mod.
|
10
|
-
import type { QueryBuilder, QueryBuilderAst } from './query-builder/mod.
|
11
|
-
import { QueryBuilderAstSymbol, QueryBuilderTypeId } from './query-builder/mod.
|
12
|
-
import type { TableDef, TableDefBase } from './table-def.
|
13
|
-
import { table } from './table-def.
|
5
|
+
import { SessionIdSymbol } from '../../../adapter-types.ts'
|
6
|
+
import { sql } from '../../../util.ts'
|
7
|
+
import type { EventDef, Materializer } from '../../EventDef.ts'
|
8
|
+
import { defineEvent, defineMaterializer } from '../../EventDef.ts'
|
9
|
+
import { SqliteDsl } from './db-schema/mod.ts'
|
10
|
+
import type { QueryBuilder, QueryBuilderAst } from './query-builder/mod.ts'
|
11
|
+
import { QueryBuilderAstSymbol, QueryBuilderTypeId } from './query-builder/mod.ts'
|
12
|
+
import type { TableDef, TableDefBase } from './table-def.ts'
|
13
|
+
import { table } from './table-def.ts'
|
14
14
|
|
15
15
|
/**
|
16
16
|
* Special:
|
@@ -23,6 +23,18 @@ import { table } from './table-def.js'
|
|
23
23
|
* Careful:
|
24
24
|
* - When changing the table definitions in a non-backwards compatible way, the state might be lost without
|
25
25
|
* explicit reducers to handle the old auto-generated events
|
26
|
+
*
|
27
|
+
* Usage:
|
28
|
+
*
|
29
|
+
* ```ts
|
30
|
+
* // Querying data
|
31
|
+
* // `'some-id'` can be ommited for SessionIdSymbol
|
32
|
+
* store.queryDb(clientDocumentTable.get('some-id'))
|
33
|
+
*
|
34
|
+
* // Setting data
|
35
|
+
* // Again, `'some-id'` can be ommited for SessionIdSymbol
|
36
|
+
* store.commit(clientDocumentTable.set({ someField: 'some-value' }, 'some-id'))
|
37
|
+
* ```
|
26
38
|
*/
|
27
39
|
export const clientDocument = <
|
28
40
|
TName extends string,
|
@@ -386,37 +398,49 @@ export namespace ClientDocumentTableDef {
|
|
386
398
|
}
|
387
399
|
}
|
388
400
|
|
389
|
-
export type GetOptions<TTableDef extends TraitAny> =
|
390
|
-
|
401
|
+
export type GetOptions<TTableDef extends TraitAny> = TTableDef extends ClientDocumentTableDef.Trait<
|
402
|
+
any,
|
403
|
+
any,
|
404
|
+
any,
|
405
|
+
infer TOptions
|
406
|
+
>
|
407
|
+
? TOptions
|
408
|
+
: never
|
391
409
|
|
392
410
|
export type TraitAny = Trait<any, any, any, any>
|
393
411
|
|
394
|
-
export type DefaultIdType<TTableDef extends TraitAny> =
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
412
|
+
export type DefaultIdType<TTableDef extends TraitAny> = TTableDef extends ClientDocumentTableDef.Trait<
|
413
|
+
any,
|
414
|
+
any,
|
415
|
+
any,
|
416
|
+
infer TOptions
|
417
|
+
>
|
418
|
+
? TOptions['default']['id'] extends SessionIdSymbol | string
|
419
|
+
? TOptions['default']['id']
|
399
420
|
: never
|
421
|
+
: never
|
400
422
|
|
401
|
-
export type SetEventDefLike<
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
423
|
+
export type SetEventDefLike<
|
424
|
+
TName extends string,
|
425
|
+
TType,
|
426
|
+
TOptions extends ClientDocumentTableOptions<TType>,
|
427
|
+
> = (TOptions['default']['id'] extends undefined // Helper to create partial event
|
428
|
+
? (
|
429
|
+
args: TOptions['partialSet'] extends false ? TType : Partial<TType>,
|
430
|
+
id: string | SessionIdSymbol,
|
431
|
+
) => { name: `${TName}Set`; args: { id: string; value: TType } }
|
432
|
+
: (
|
433
|
+
args: TOptions['partialSet'] extends false ? TType : Partial<TType>,
|
434
|
+
id?: string | SessionIdSymbol,
|
435
|
+
) => { name: `${TName}Set`; args: { id: string; value: TType } }) & {
|
436
|
+
readonly name: `${TName}Set`
|
437
|
+
readonly schema: Schema.Schema<any>
|
438
|
+
readonly Event: {
|
412
439
|
readonly name: `${TName}Set`
|
413
|
-
readonly
|
414
|
-
readonly Event: {
|
415
|
-
readonly name: `${TName}Set`
|
416
|
-
readonly args: { id: string; value: TType }
|
417
|
-
}
|
418
|
-
readonly options: { derived: true; clientOnly: true; facts: undefined }
|
440
|
+
readonly args: { id: string; value: TType }
|
419
441
|
}
|
442
|
+
readonly options: { derived: true; clientOnly: true; facts: undefined }
|
443
|
+
}
|
420
444
|
|
421
445
|
export type SetEventDef<TName extends string, TType, TOptions extends ClientDocumentTableOptions<TType>> = EventDef<
|
422
446
|
TName,
|
@@ -2,10 +2,10 @@ import type { Nullable } from '@livestore/utils'
|
|
2
2
|
import type { Option, Types } from '@livestore/utils/effect'
|
3
3
|
import { Schema } from '@livestore/utils/effect'
|
4
4
|
|
5
|
-
import type * as SqliteAst from '../ast/sqlite.
|
6
|
-
import type { ColumnDefinition } from './field-defs.
|
5
|
+
import type * as SqliteAst from '../ast/sqlite.ts'
|
6
|
+
import type { ColumnDefinition } from './field-defs.ts'
|
7
7
|
|
8
|
-
export * from './field-defs.
|
8
|
+
export * from './field-defs.ts'
|
9
9
|
|
10
10
|
export type DbSchema = {
|
11
11
|
[key: string]: TableDefinition<string, Columns>
|
@@ -19,12 +19,13 @@ export type DbSchemaInput = Record<string, TableDefinition<any, any>> | Readonly
|
|
19
19
|
* - array: we use the table name of each array item (= table definition) as the object key
|
20
20
|
* - object: we discard the keys of the input object and use the table name of each object value (= table definition) as the new object key
|
21
21
|
*/
|
22
|
-
export type DbSchemaFromInputSchema<TSchemaInput extends DbSchemaInput> =
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
22
|
+
export type DbSchemaFromInputSchema<TSchemaInput extends DbSchemaInput> = TSchemaInput extends ReadonlyArray<
|
23
|
+
TableDefinition<any, any>
|
24
|
+
>
|
25
|
+
? { [K in TSchemaInput[number] as K['name']]: K }
|
26
|
+
: TSchemaInput extends Record<string, TableDefinition<any, any>>
|
27
|
+
? { [K in keyof TSchemaInput as TSchemaInput[K]['name']]: TSchemaInput[K] }
|
28
|
+
: never
|
28
29
|
|
29
30
|
// TODO ensure via runtime check (possibly even via type-level check) that all index names are unique
|
30
31
|
export const makeDbSchema = <TDbSchemaInput extends DbSchemaInput>(
|
@@ -113,8 +114,12 @@ export type TableDefinition<TName extends string, TColumns extends Columns> = {
|
|
113
114
|
|
114
115
|
export type Columns = Record<string, ColumnDefinition<any, any>>
|
115
116
|
|
116
|
-
export type IsSingleColumn<TColumns extends Columns | ColumnDefinition<any, any>> =
|
117
|
-
|
117
|
+
export type IsSingleColumn<TColumns extends Columns | ColumnDefinition<any, any>> = TColumns extends ColumnDefinition<
|
118
|
+
any,
|
119
|
+
any
|
120
|
+
>
|
121
|
+
? true
|
122
|
+
: false
|
118
123
|
|
119
124
|
/**
|
120
125
|
* NOTE this is only needed to avoid a TS limitation where `StructSchemaForColumns` in the default case
|
@@ -207,8 +212,9 @@ export namespace FromColumns {
|
|
207
212
|
|
208
213
|
export type RequiredInsertColumnNames<TColumns extends Columns> = keyof RequiredInsertColumns<TColumns>
|
209
214
|
|
210
|
-
export type RequiresInsertValues<TColumns extends Columns> =
|
211
|
-
|
215
|
+
export type RequiresInsertValues<TColumns extends Columns> = RequiredInsertColumnNames<TColumns> extends never
|
216
|
+
? false
|
217
|
+
: true
|
212
218
|
|
213
219
|
export type InsertRowDecoded<TColumns extends Columns> = Types.Simplify<
|
214
220
|
Pick<RowDecodedAll<TColumns>, RequiredInsertColumnNames<TColumns>> &
|
@@ -5,7 +5,6 @@ export const hashCode = (str: string) => {
|
|
5
5
|
let chr: number
|
6
6
|
if (str.length === 0) return hash
|
7
7
|
for (i = 0; i < str.length; i++) {
|
8
|
-
// eslint-disable-next-line unicorn/prefer-code-point
|
9
8
|
chr = str.charCodeAt(i)
|
10
9
|
hash = (hash << 5) - hash + chr
|
11
10
|
hash = Math.trunc(hash) // Convert to 32bit integer
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export * as
|
2
|
-
export * as
|
1
|
+
export * as SqliteAst from './ast/sqlite.ts'
|
2
|
+
export * as SqliteDsl from './dsl/mod.ts'
|
@@ -1,22 +1,22 @@
|
|
1
1
|
import { shouldNeverHappen } from '@livestore/utils'
|
2
2
|
|
3
|
-
import type { MigrationOptions } from '../../../adapter-types.
|
4
|
-
import {
|
5
|
-
import type { InternalState } from '../../schema.
|
6
|
-
import { ClientDocumentTableDefSymbol, tableIsClientDocumentTable } from './client-document-def.
|
7
|
-
import { SqliteAst } from './db-schema/mod.
|
8
|
-
import { stateSystemTables } from './system-tables.
|
9
|
-
import type { TableDef, TableDefBase } from './table-def.
|
3
|
+
import type { MigrationOptions } from '../../../adapter-types.ts'
|
4
|
+
import type { Materializer } from '../../EventDef.ts'
|
5
|
+
import type { InternalState } from '../../schema.ts'
|
6
|
+
import { ClientDocumentTableDefSymbol, tableIsClientDocumentTable } from './client-document-def.ts'
|
7
|
+
import { SqliteAst } from './db-schema/mod.ts'
|
8
|
+
import { stateSystemTables } from './system-tables.ts'
|
9
|
+
import type { TableDef, TableDefBase } from './table-def.ts'
|
10
10
|
|
11
|
-
export * from '
|
11
|
+
export * from '../../EventDef.ts'
|
12
12
|
export {
|
13
|
-
ClientDocumentTableDefSymbol,
|
14
|
-
tableIsClientDocumentTable,
|
15
|
-
clientDocument,
|
16
13
|
type ClientDocumentTableDef,
|
14
|
+
ClientDocumentTableDefSymbol,
|
17
15
|
type ClientDocumentTableOptions,
|
18
|
-
|
19
|
-
|
16
|
+
clientDocument,
|
17
|
+
tableIsClientDocumentTable,
|
18
|
+
} from './client-document-def.ts'
|
19
|
+
export * from './table-def.ts'
|
20
20
|
|
21
21
|
export const makeState = <TStateInput extends InputState>(inputSchema: TStateInput): InternalState => {
|
22
22
|
const inputTables: ReadonlyArray<TableDef> = Array.isArray(inputSchema.tables)
|
@@ -44,8 +44,6 @@ export const makeState = <TStateInput extends InputState>(inputSchema: TStateInp
|
|
44
44
|
materializers.set(name, materializer)
|
45
45
|
}
|
46
46
|
|
47
|
-
materializers.set(rawSqlEvent.name, rawSqlMaterializer)
|
48
|
-
|
49
47
|
for (const tableDef of inputTables) {
|
50
48
|
if (tableIsClientDocumentTable(tableDef)) {
|
51
49
|
materializers.set(
|
@@ -1,11 +1,11 @@
|
|
1
1
|
import type { GetValForKey, SingleOrReadonlyArray } from '@livestore/utils'
|
2
2
|
import { type Option, Predicate, type Schema } from '@livestore/utils/effect'
|
3
3
|
|
4
|
-
import type { SessionIdSymbol } from '../../../../adapter-types.
|
5
|
-
import type { SqlValue } from '../../../../util.
|
6
|
-
import type { ClientDocumentTableDef } from '../client-document-def.
|
7
|
-
import type { SqliteDsl } from '../db-schema/mod.
|
8
|
-
import type { TableDefBase } from '../table-def.
|
4
|
+
import type { SessionIdSymbol } from '../../../../adapter-types.ts'
|
5
|
+
import type { SqlValue } from '../../../../util.ts'
|
6
|
+
import type { ClientDocumentTableDef } from '../client-document-def.ts'
|
7
|
+
import type { SqliteDsl } from '../db-schema/mod.ts'
|
8
|
+
import type { TableDefBase } from '../table-def.ts'
|
9
9
|
|
10
10
|
export type QueryBuilderAst =
|
11
11
|
| QueryBuilderAst.SelectQuery
|
@@ -1,10 +1,10 @@
|
|
1
1
|
import { shouldNeverHappen } from '@livestore/utils'
|
2
2
|
import { Schema } from '@livestore/utils/effect'
|
3
3
|
|
4
|
-
import { SessionIdSymbol } from '../../../../adapter-types.
|
5
|
-
import type { SqlValue } from '../../../../util.
|
6
|
-
import type { State } from '../../../mod.
|
7
|
-
import type { QueryBuilderAst } from './api.
|
4
|
+
import { SessionIdSymbol } from '../../../../adapter-types.ts'
|
5
|
+
import type { SqlValue } from '../../../../util.ts'
|
6
|
+
import type { State } from '../../../mod.ts'
|
7
|
+
import type { QueryBuilderAst } from './api.ts'
|
8
8
|
|
9
9
|
// Helper functions for SQL generation
|
10
10
|
const formatWhereClause = (
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import { Schema } from '@livestore/utils/effect'
|
2
2
|
import { describe, expect, it } from 'vitest'
|
3
3
|
|
4
|
-
import { State } from '../../../mod.
|
5
|
-
import type { QueryBuilder } from './api.
|
6
|
-
import { getResultSchema } from './impl.
|
4
|
+
import { State } from '../../../mod.ts'
|
5
|
+
import type { QueryBuilder } from './api.ts'
|
6
|
+
import { getResultSchema } from './impl.ts'
|
7
7
|
|
8
8
|
const todos = State.SQLite.table({
|
9
9
|
name: 'todos',
|
@@ -116,7 +116,7 @@ describe('query builder', () => {
|
|
116
116
|
1,
|
117
117
|
],
|
118
118
|
"query": "SELECT id, text FROM 'todos' LIMIT ?",
|
119
|
-
"schema": "(ReadonlyArray<{ readonly id: string; readonly text: string }> <-> { readonly id: string; readonly text: string })",
|
119
|
+
"schema": "(ReadonlyArray<{ readonly id: string; readonly text: string } | undefined> <-> { readonly id: string; readonly text: string } | undefined)",
|
120
120
|
}
|
121
121
|
`)
|
122
122
|
|
@@ -2,20 +2,18 @@
|
|
2
2
|
import { casesHandled, shouldNeverHappen } from '@livestore/utils'
|
3
3
|
import { Match, Option, Predicate, Schema } from '@livestore/utils/effect'
|
4
4
|
|
5
|
-
import type { TableDefBase } from '../table-def.
|
6
|
-
import type { QueryBuilder, QueryBuilderAst } from './api.
|
7
|
-
import { QueryBuilderAstSymbol, QueryBuilderTypeId } from './api.
|
8
|
-
import { astToSql } from './astToSql.
|
5
|
+
import type { TableDefBase } from '../table-def.ts'
|
6
|
+
import type { QueryBuilder, QueryBuilderAst } from './api.ts'
|
7
|
+
import { QueryBuilderAstSymbol, QueryBuilderTypeId } from './api.ts'
|
8
|
+
import { astToSql } from './astToSql.ts'
|
9
9
|
export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
|
10
10
|
tableDef: TTableDef,
|
11
11
|
ast: QueryBuilderAst = emptyAst(tableDef),
|
12
12
|
): QueryBuilder<TResult, TTableDef, never> => {
|
13
13
|
const api = {
|
14
|
-
// eslint-disable-next-line prefer-arrow/prefer-arrow-functions
|
15
14
|
select() {
|
16
15
|
assertSelectQueryBuilderAst(ast)
|
17
16
|
|
18
|
-
// eslint-disable-next-line prefer-rest-params
|
19
17
|
const params = [...arguments]
|
20
18
|
|
21
19
|
// Pluck if there's only one column selected
|
@@ -43,7 +41,6 @@ export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
|
|
43
41
|
if (ast._tag === 'RowQuery') return invalidQueryBuilder('Cannot use where with row')
|
44
42
|
|
45
43
|
if (arguments.length === 1) {
|
46
|
-
// eslint-disable-next-line prefer-rest-params
|
47
44
|
const params = arguments[0]
|
48
45
|
const newOps = Object.entries(params)
|
49
46
|
.filter(([, value]) => value !== undefined)
|
@@ -69,7 +66,6 @@ export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
|
|
69
66
|
}
|
70
67
|
}
|
71
68
|
|
72
|
-
// eslint-disable-next-line prefer-rest-params
|
73
69
|
const [col, opOrValue, valueOrUndefined] = arguments
|
74
70
|
const op = valueOrUndefined === undefined ? '=' : opOrValue
|
75
71
|
const value = valueOrUndefined === undefined ? opOrValue : valueOrUndefined
|
@@ -89,14 +85,13 @@ export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
|
|
89
85
|
}
|
90
86
|
}
|
91
87
|
},
|
92
|
-
|
88
|
+
|
93
89
|
orderBy() {
|
94
90
|
assertSelectQueryBuilderAst(ast)
|
95
91
|
|
96
92
|
if (arguments.length === 0 || arguments.length > 2) return invalidQueryBuilder()
|
97
93
|
|
98
94
|
if (arguments.length === 1) {
|
99
|
-
// eslint-disable-next-line prefer-rest-params
|
100
95
|
const params = arguments[0] as QueryBuilder.OrderByParams<TTableDef>
|
101
96
|
return makeQueryBuilder(tableDef, {
|
102
97
|
...ast,
|
@@ -104,7 +99,6 @@ export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
|
|
104
99
|
})
|
105
100
|
}
|
106
101
|
|
107
|
-
// eslint-disable-next-line prefer-rest-params
|
108
102
|
const [col, direction] = arguments as any as [keyof TTableDef['sqliteDef']['columns'] & string, 'asc' | 'desc']
|
109
103
|
|
110
104
|
return makeQueryBuilder(tableDef, {
|
@@ -148,13 +142,13 @@ export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
|
|
148
142
|
pickFirst: { _tag: 'enabled', ...(behaviour ?? { behaviour: 'undefined' }) },
|
149
143
|
})
|
150
144
|
},
|
151
|
-
//
|
145
|
+
//
|
152
146
|
// getOrCreate() {
|
153
147
|
// if (tableDef.options.isClientDocumentTable === false) {
|
154
148
|
// return invalidQueryBuilder(`getOrCreate() is not allowed when table is not a client document table`)
|
155
149
|
// }
|
156
150
|
|
157
|
-
//
|
151
|
+
//
|
158
152
|
// const params = [...arguments]
|
159
153
|
|
160
154
|
// let id: string | number
|
@@ -277,21 +271,19 @@ const emptyAst = (tableDef: TableDefBase): QueryBuilderAst.SelectQuery => ({
|
|
277
271
|
})
|
278
272
|
|
279
273
|
// Helper functions
|
280
|
-
|
274
|
+
|
281
275
|
function assertSelectQueryBuilderAst(ast: QueryBuilderAst): asserts ast is QueryBuilderAst.SelectQuery {
|
282
276
|
if (ast._tag !== 'SelectQuery') {
|
283
277
|
return shouldNeverHappen(`Expected SelectQuery but got ${ast._tag}`)
|
284
278
|
}
|
285
279
|
}
|
286
280
|
|
287
|
-
// eslint-disable-next-line prefer-arrow/prefer-arrow-functions
|
288
281
|
function assertInsertQueryBuilderAst(ast: QueryBuilderAst): asserts ast is QueryBuilderAst.InsertQuery {
|
289
282
|
if (ast._tag !== 'InsertQuery') {
|
290
283
|
return shouldNeverHappen(`Expected InsertQuery but got ${ast._tag}`)
|
291
284
|
}
|
292
285
|
}
|
293
286
|
|
294
|
-
// eslint-disable-next-line prefer-arrow/prefer-arrow-functions
|
295
287
|
function assertWriteQueryBuilderAst(ast: QueryBuilderAst): asserts ast is QueryBuilderAst.WriteQuery {
|
296
288
|
if (ast._tag !== 'InsertQuery' && ast._tag !== 'UpdateQuery' && ast._tag !== 'DeleteQuery') {
|
297
289
|
return shouldNeverHappen(`Expected WriteQuery but got ${ast._tag}`)
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { shouldNeverHappen } from '@livestore/utils'
|
2
2
|
import { pipe, ReadonlyRecord, Schema } from '@livestore/utils/effect'
|
3
3
|
|
4
|
-
import { SqliteDsl } from './db-schema/mod.
|
5
|
-
import type { TableDef, TableDefBase } from './table-def.
|
4
|
+
import { SqliteDsl } from './db-schema/mod.ts'
|
5
|
+
import type { TableDef, TableDefBase } from './table-def.ts'
|
6
6
|
|
7
7
|
export const getDefaultValuesEncoded = <TTableDef extends TableDef>(
|
8
8
|
tableDef: TTableDef,
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { Schema } from '@livestore/utils/effect'
|
2
2
|
|
3
|
-
import * as EventSequenceNumber from '../../EventSequenceNumber.
|
4
|
-
import { SqliteDsl } from './db-schema/mod.
|
5
|
-
import { table } from './table-def.
|
3
|
+
import * as EventSequenceNumber from '../../EventSequenceNumber.ts'
|
4
|
+
import { SqliteDsl } from './db-schema/mod.ts'
|
5
|
+
import { table } from './table-def.ts'
|
6
6
|
|
7
7
|
/// State DB
|
8
8
|
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import type { Nullable } from '@livestore/utils'
|
2
2
|
import type { Schema, Types } from '@livestore/utils/effect'
|
3
3
|
|
4
|
-
import { SqliteDsl } from './db-schema/mod.
|
5
|
-
import type { QueryBuilder } from './query-builder/mod.
|
6
|
-
import { makeQueryBuilder, QueryBuilderAstSymbol, QueryBuilderTypeId } from './query-builder/mod.
|
4
|
+
import { SqliteDsl } from './db-schema/mod.ts'
|
5
|
+
import type { QueryBuilder } from './query-builder/mod.ts'
|
6
|
+
import { makeQueryBuilder, QueryBuilderAstSymbol, QueryBuilderTypeId } from './query-builder/mod.ts'
|
7
7
|
|
8
8
|
export const { blob, boolean, column, datetime, integer, isColumnDefinition, json, real, text } = SqliteDsl
|
9
9
|
|
@@ -1,6 +1,6 @@
|
|
1
|
-
import type { SqliteDb } from '../adapter-types.
|
2
|
-
import type { ParamsObject } from '../util.
|
3
|
-
import { prepareBindValues } from '../util.
|
1
|
+
import type { SqliteDb } from '../adapter-types.ts'
|
2
|
+
import type { ParamsObject } from '../util.ts'
|
3
|
+
import { prepareBindValues } from '../util.ts'
|
4
4
|
|
5
5
|
// TODO bring back statement caching
|
6
6
|
// will require proper scope-aware cleanup etc (for testing and apps with multiple LiveStore instances)
|
@@ -1,23 +1,23 @@
|
|
1
1
|
import { memoizeByStringifyArgs } from '@livestore/utils'
|
2
2
|
import { Effect, Schema as EffectSchema } from '@livestore/utils/effect'
|
3
3
|
|
4
|
-
import type { SqliteDb } from '../adapter-types.
|
5
|
-
import type { MigrationsReport, MigrationsReportEntry } from '../defs.
|
6
|
-
import type { UnexpectedError } from '../errors.
|
7
|
-
import type { LiveStoreSchema } from '../schema/mod.
|
8
|
-
import { SqliteAst, SqliteDsl } from '../schema/state/sqlite/db-schema/mod.
|
9
|
-
import type { SchemaEventDefsMetaRow, SchemaMetaRow } from '../schema/state/sqlite/system-tables.
|
4
|
+
import type { SqliteDb } from '../adapter-types.ts'
|
5
|
+
import type { MigrationsReport, MigrationsReportEntry } from '../defs.ts'
|
6
|
+
import type { UnexpectedError } from '../errors.ts'
|
7
|
+
import type { LiveStoreSchema } from '../schema/mod.ts'
|
8
|
+
import { SqliteAst, SqliteDsl } from '../schema/state/sqlite/db-schema/mod.ts'
|
9
|
+
import type { SchemaEventDefsMetaRow, SchemaMetaRow } from '../schema/state/sqlite/system-tables.ts'
|
10
10
|
import {
|
11
11
|
isStateSystemTable,
|
12
12
|
SCHEMA_EVENT_DEFS_META_TABLE,
|
13
13
|
SCHEMA_META_TABLE,
|
14
14
|
schemaEventDefsMetaTable,
|
15
15
|
stateSystemTables,
|
16
|
-
} from '../schema/state/sqlite/system-tables.
|
17
|
-
import { sql } from '../util.
|
18
|
-
import type { SchemaManager } from './common.
|
19
|
-
import { dbExecute, dbSelect } from './common.
|
20
|
-
import { validateSchema } from './validate-schema.
|
16
|
+
} from '../schema/state/sqlite/system-tables.ts'
|
17
|
+
import { sql } from '../util.ts'
|
18
|
+
import type { SchemaManager } from './common.ts'
|
19
|
+
import { dbExecute, dbSelect } from './common.ts'
|
20
|
+
import { validateSchema } from './validate-schema.ts'
|
21
21
|
|
22
22
|
const getMemoizedTimestamp = memoizeByStringifyArgs(() => new Date().toISOString())
|
23
23
|
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import { Effect, Schema } from '@livestore/utils/effect'
|
2
2
|
|
3
|
-
import { UnexpectedError } from '../adapter-types.
|
4
|
-
import type { EventDef } from '../schema/EventDef.
|
5
|
-
import type { LiveStoreSchema } from '../schema/mod.
|
6
|
-
import type { EventDefInfo, SchemaManager } from './common.
|
3
|
+
import { UnexpectedError } from '../adapter-types.ts'
|
4
|
+
import type { EventDef } from '../schema/EventDef.ts'
|
5
|
+
import type { LiveStoreSchema } from '../schema/mod.ts'
|
6
|
+
import type { EventDefInfo, SchemaManager } from './common.ts'
|
7
7
|
|
8
8
|
export const validateSchema = (schema: LiveStoreSchema, schemaManager: SchemaManager) =>
|
9
9
|
Effect.gen(function* () {
|
@@ -15,7 +15,7 @@ export const validateSchema = (schema: LiveStoreSchema, schemaManager: SchemaMan
|
|
15
15
|
)
|
16
16
|
|
17
17
|
if (missingEventDefs.length > 0) {
|
18
|
-
yield* new UnexpectedError({
|
18
|
+
return yield* new UnexpectedError({
|
19
19
|
cause: `Missing mutation definitions: ${missingEventDefs.map((info) => info.eventName).join(', ')}`,
|
20
20
|
})
|
21
21
|
}
|
package/src/sql-queries/index.ts
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
export * from './sql-queries.
|
2
|
-
export * from './sql-query-builder.
|
3
|
-
export * from './types.
|
1
|
+
export * from './sql-queries.ts'
|
2
|
+
export * from './sql-query-builder.ts'
|
3
|
+
export * from './types.ts'
|
@@ -1,10 +1,10 @@
|
|
1
1
|
import { shouldNeverHappen } from '@livestore/utils'
|
2
2
|
import { pipe, ReadonlyArray, Schema, TreeFormatter } from '@livestore/utils/effect'
|
3
3
|
|
4
|
-
import type { SqliteDsl } from '../schema/state/sqlite/db-schema/mod.
|
5
|
-
import { sql } from '../util.
|
6
|
-
import { objectEntries } from './misc.
|
7
|
-
import * as ClientTypes from './types.
|
4
|
+
import type { SqliteDsl } from '../schema/state/sqlite/db-schema/mod.ts'
|
5
|
+
import { sql } from '../util.ts'
|
6
|
+
import { objectEntries } from './misc.ts'
|
7
|
+
import * as ClientTypes from './types.ts'
|
8
8
|
|
9
9
|
export type BindValues = {
|
10
10
|
readonly [columnName: string]: any
|
@@ -1,7 +1,7 @@
|
|
1
|
-
import type { SqliteDsl } from '../schema/state/sqlite/db-schema/mod.
|
2
|
-
import type { BindValues } from './sql-queries.
|
3
|
-
import * as SqlQueries from './sql-queries.
|
4
|
-
import type * as ClientTypes from './types.
|
1
|
+
import type { SqliteDsl } from '../schema/state/sqlite/db-schema/mod.ts'
|
2
|
+
import type { BindValues } from './sql-queries.ts'
|
3
|
+
import * as SqlQueries from './sql-queries.ts'
|
4
|
+
import type * as ClientTypes from './types.ts'
|
5
5
|
|
6
6
|
export type SqlQuery = [stmt: string, bindValues: BindValues, tableName: string]
|
7
7
|
|
package/src/sql-queries/types.ts
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
import type { Prettify } from '@livestore/utils'
|
2
2
|
import type { Schema } from '@livestore/utils/effect'
|
3
3
|
|
4
|
-
import type { SqliteDsl } from '../schema/state/sqlite/db-schema/mod.
|
4
|
+
import type { SqliteDsl } from '../schema/state/sqlite/db-schema/mod.ts'
|
5
5
|
|
6
6
|
export type DecodedValuesForTableAll<TSchema extends SqliteDsl.DbSchema, TTableName extends keyof TSchema> = {
|
7
7
|
[K in keyof GetColumns<TSchema, TTableName>]: Schema.Schema.Type<GetColumn<TSchema, TTableName, K>['schema']>
|