@livestore/common 0.4.0-dev.1 → 0.4.0-dev.11
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 +8 -3
- package/dist/ClientSessionLeaderThreadProxy.d.ts.map +1 -1
- package/dist/ClientSessionLeaderThreadProxy.js.map +1 -1
- package/dist/adapter-types.d.ts +9 -3
- package/dist/adapter-types.d.ts.map +1 -1
- package/dist/adapter-types.js.map +1 -1
- package/dist/devtools/devtools-messages-client-session.d.ts +21 -21
- package/dist/devtools/devtools-messages-common.d.ts +7 -14
- package/dist/devtools/devtools-messages-common.d.ts.map +1 -1
- package/dist/devtools/devtools-messages-common.js +1 -6
- package/dist/devtools/devtools-messages-common.js.map +1 -1
- package/dist/devtools/devtools-messages-leader.d.ts +27 -25
- package/dist/devtools/devtools-messages-leader.d.ts.map +1 -1
- package/dist/errors.d.ts +47 -5
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +22 -3
- package/dist/errors.js.map +1 -1
- package/dist/leader-thread/LeaderSyncProcessor.d.ts +7 -3
- package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
- package/dist/leader-thread/LeaderSyncProcessor.js +135 -52
- package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
- package/dist/leader-thread/eventlog.d.ts +4 -10
- package/dist/leader-thread/eventlog.d.ts.map +1 -1
- package/dist/leader-thread/eventlog.js +4 -6
- package/dist/leader-thread/eventlog.js.map +1 -1
- package/dist/leader-thread/leader-worker-devtools.d.ts +1 -1
- package/dist/leader-thread/leader-worker-devtools.js +6 -2
- package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.d.ts +1 -2
- package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.js +68 -19
- package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.test.d.ts +2 -0
- package/dist/leader-thread/make-leader-thread-layer.test.d.ts.map +1 -0
- package/dist/leader-thread/make-leader-thread-layer.test.js +32 -0
- package/dist/leader-thread/make-leader-thread-layer.test.js.map +1 -0
- package/dist/leader-thread/materialize-event.d.ts +2 -2
- package/dist/leader-thread/materialize-event.d.ts.map +1 -1
- package/dist/leader-thread/materialize-event.js +23 -9
- package/dist/leader-thread/materialize-event.js.map +1 -1
- package/dist/leader-thread/recreate-db.d.ts +2 -3
- package/dist/leader-thread/recreate-db.d.ts.map +1 -1
- package/dist/leader-thread/recreate-db.js +1 -1
- package/dist/leader-thread/recreate-db.js.map +1 -1
- package/dist/leader-thread/shutdown-channel.d.ts +2 -2
- package/dist/leader-thread/shutdown-channel.d.ts.map +1 -1
- package/dist/leader-thread/shutdown-channel.js +2 -2
- package/dist/leader-thread/shutdown-channel.js.map +1 -1
- package/dist/leader-thread/types.d.ts +7 -5
- package/dist/leader-thread/types.d.ts.map +1 -1
- package/dist/leader-thread/types.js.map +1 -1
- package/dist/materializer-helper.d.ts +1 -1
- package/dist/materializer-helper.d.ts.map +1 -1
- package/dist/materializer-helper.js +20 -4
- package/dist/materializer-helper.js.map +1 -1
- package/dist/rematerialize-from-eventlog.d.ts +1 -1
- package/dist/rematerialize-from-eventlog.d.ts.map +1 -1
- package/dist/rematerialize-from-eventlog.js +25 -16
- package/dist/rematerialize-from-eventlog.js.map +1 -1
- package/dist/schema/EventDef.d.ts +3 -0
- package/dist/schema/EventDef.d.ts.map +1 -1
- package/dist/schema/EventDef.js.map +1 -1
- package/dist/schema/EventSequenceNumber.d.ts +4 -1
- package/dist/schema/EventSequenceNumber.d.ts.map +1 -1
- package/dist/schema/EventSequenceNumber.js +4 -1
- package/dist/schema/EventSequenceNumber.js.map +1 -1
- package/dist/schema/EventSequenceNumber.test.js +2 -2
- package/dist/schema/LiveStoreEvent.d.ts +1 -1
- package/dist/schema/LiveStoreEvent.d.ts.map +1 -1
- package/dist/schema/LiveStoreEvent.js +1 -2
- package/dist/schema/LiveStoreEvent.js.map +1 -1
- package/dist/schema/mod.d.ts +2 -0
- package/dist/schema/mod.d.ts.map +1 -1
- package/dist/schema/mod.js +1 -0
- package/dist/schema/mod.js.map +1 -1
- package/dist/schema/schema.d.ts +15 -0
- package/dist/schema/schema.d.ts.map +1 -1
- package/dist/schema/schema.js +26 -1
- package/dist/schema/schema.js.map +1 -1
- package/dist/schema/state/sqlite/client-document-def.d.ts +35 -5
- package/dist/schema/state/sqlite/client-document-def.d.ts.map +1 -1
- package/dist/schema/state/sqlite/client-document-def.js +95 -4
- package/dist/schema/state/sqlite/client-document-def.js.map +1 -1
- package/dist/schema/state/sqlite/client-document-def.test.js +16 -0
- package/dist/schema/state/sqlite/client-document-def.test.js.map +1 -1
- package/dist/schema/state/sqlite/column-annotations.d.ts.map +1 -1
- package/dist/schema/state/sqlite/column-annotations.js +14 -6
- package/dist/schema/state/sqlite/column-annotations.js.map +1 -1
- package/dist/schema/state/sqlite/column-def.d.ts +6 -2
- package/dist/schema/state/sqlite/column-def.d.ts.map +1 -1
- package/dist/schema/state/sqlite/column-def.js +128 -185
- package/dist/schema/state/sqlite/column-def.js.map +1 -1
- package/dist/schema/state/sqlite/column-def.test.js +116 -73
- package/dist/schema/state/sqlite/column-def.test.js.map +1 -1
- package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts +2 -1
- package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts.map +1 -1
- package/dist/schema/state/sqlite/db-schema/ast/sqlite.js +23 -6
- package/dist/schema/state/sqlite/db-schema/ast/sqlite.js.map +1 -1
- package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts.map +1 -1
- package/dist/schema/state/sqlite/db-schema/dsl/mod.js +2 -1
- package/dist/schema/state/sqlite/db-schema/dsl/mod.js.map +1 -1
- package/dist/schema/state/sqlite/mod.d.ts +1 -1
- package/dist/schema/state/sqlite/mod.d.ts.map +1 -1
- package/dist/schema/state/sqlite/mod.js +1 -1
- package/dist/schema/state/sqlite/mod.js.map +1 -1
- package/dist/schema/state/sqlite/query-builder/api.d.ts +5 -2
- package/dist/schema/state/sqlite/query-builder/api.d.ts.map +1 -1
- package/dist/schema/state/sqlite/query-builder/impl.d.ts.map +1 -1
- package/dist/schema/state/sqlite/query-builder/impl.js +6 -2
- package/dist/schema/state/sqlite/query-builder/impl.js.map +1 -1
- package/dist/schema/state/sqlite/query-builder/impl.test.js +137 -2
- package/dist/schema/state/sqlite/query-builder/impl.test.js.map +1 -1
- package/dist/schema/state/sqlite/system-tables.d.ts +42 -6
- package/dist/schema/state/sqlite/system-tables.d.ts.map +1 -1
- package/dist/schema/state/sqlite/system-tables.js +2 -0
- package/dist/schema/state/sqlite/system-tables.js.map +1 -1
- package/dist/schema/state/sqlite/table-def.d.ts +4 -4
- package/dist/schema/state/sqlite/table-def.d.ts.map +1 -1
- package/dist/schema/state/sqlite/table-def.js +2 -2
- package/dist/schema/state/sqlite/table-def.js.map +1 -1
- package/dist/schema/state/sqlite/table-def.test.js +87 -2
- package/dist/schema/state/sqlite/table-def.test.js.map +1 -1
- package/dist/schema/unknown-events.d.ts +47 -0
- package/dist/schema/unknown-events.d.ts.map +1 -0
- package/dist/schema/unknown-events.js +69 -0
- package/dist/schema/unknown-events.js.map +1 -0
- package/dist/sql-queries/sql-query-builder.d.ts.map +1 -1
- package/dist/sql-queries/sql-query-builder.js +2 -1
- package/dist/sql-queries/sql-query-builder.js.map +1 -1
- package/dist/sync/ClientSessionSyncProcessor.d.ts +9 -11
- package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
- package/dist/sync/ClientSessionSyncProcessor.js +36 -33
- package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
- package/dist/sync/errors.d.ts +61 -0
- package/dist/sync/errors.d.ts.map +1 -0
- package/dist/sync/errors.js +36 -0
- package/dist/sync/errors.js.map +1 -0
- package/dist/sync/index.d.ts +3 -0
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +3 -0
- package/dist/sync/index.js.map +1 -1
- package/dist/sync/mock-sync-backend.d.ts +23 -0
- package/dist/sync/mock-sync-backend.d.ts.map +1 -0
- package/dist/sync/mock-sync-backend.js +114 -0
- package/dist/sync/mock-sync-backend.js.map +1 -0
- package/dist/sync/next/compact-events.d.ts.map +1 -1
- package/dist/sync/next/compact-events.js +4 -5
- package/dist/sync/next/compact-events.js.map +1 -1
- package/dist/sync/next/facts.d.ts.map +1 -1
- package/dist/sync/next/facts.js +1 -2
- package/dist/sync/next/facts.js.map +1 -1
- package/dist/sync/next/history-dag-common.d.ts +50 -11
- package/dist/sync/next/history-dag-common.d.ts.map +1 -1
- package/dist/sync/next/history-dag-common.js +193 -4
- package/dist/sync/next/history-dag-common.js.map +1 -1
- package/dist/sync/next/history-dag.d.ts.map +1 -1
- package/dist/sync/next/history-dag.js +3 -1
- package/dist/sync/next/history-dag.js.map +1 -1
- package/dist/sync/sync-backend-kv.d.ts +7 -0
- package/dist/sync/sync-backend-kv.d.ts.map +1 -0
- package/dist/sync/sync-backend-kv.js +18 -0
- package/dist/sync/sync-backend-kv.js.map +1 -0
- package/dist/sync/sync-backend.d.ts +105 -0
- package/dist/sync/sync-backend.d.ts.map +1 -0
- package/dist/sync/sync-backend.js +61 -0
- package/dist/sync/sync-backend.js.map +1 -0
- package/dist/sync/sync.d.ts +6 -84
- package/dist/sync/sync.d.ts.map +1 -1
- package/dist/sync/sync.js +2 -27
- package/dist/sync/sync.js.map +1 -1
- package/dist/sync/syncstate.test.js +16 -15
- package/dist/sync/syncstate.test.js.map +1 -1
- package/dist/sync/transport-chunking.d.ts +36 -0
- package/dist/sync/transport-chunking.d.ts.map +1 -0
- package/dist/sync/transport-chunking.js +56 -0
- package/dist/sync/transport-chunking.js.map +1 -0
- package/dist/sync/validate-push-payload.d.ts +1 -1
- package/dist/sync/validate-push-payload.d.ts.map +1 -1
- package/dist/sync/validate-push-payload.js +6 -6
- package/dist/sync/validate-push-payload.js.map +1 -1
- package/dist/testing/event-factory.d.ts +68 -0
- package/dist/testing/event-factory.d.ts.map +1 -0
- package/dist/testing/event-factory.js +80 -0
- package/dist/testing/event-factory.js.map +1 -0
- package/dist/testing/mod.d.ts +2 -0
- package/dist/testing/mod.d.ts.map +1 -0
- package/dist/testing/mod.js +2 -0
- package/dist/testing/mod.js.map +1 -0
- 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 +7 -8
- package/src/ClientSessionLeaderThreadProxy.ts +8 -3
- package/src/adapter-types.ts +13 -3
- package/src/devtools/devtools-messages-common.ts +1 -8
- package/src/errors.ts +33 -4
- package/src/leader-thread/LeaderSyncProcessor.ts +204 -63
- package/src/leader-thread/eventlog.ts +10 -6
- package/src/leader-thread/leader-worker-devtools.ts +6 -2
- package/src/leader-thread/make-leader-thread-layer.test.ts +44 -0
- package/src/leader-thread/make-leader-thread-layer.ts +137 -26
- package/src/leader-thread/materialize-event.ts +34 -9
- package/src/leader-thread/recreate-db.ts +11 -3
- package/src/leader-thread/shutdown-channel.ts +16 -2
- package/src/leader-thread/types.ts +7 -5
- package/src/materializer-helper.ts +22 -5
- package/src/rematerialize-from-eventlog.ts +33 -23
- package/src/schema/EventDef.ts +3 -0
- package/src/schema/EventSequenceNumber.test.ts +2 -2
- package/src/schema/EventSequenceNumber.ts +5 -2
- package/src/schema/LiveStoreEvent.ts +1 -2
- package/src/schema/mod.ts +2 -0
- package/src/schema/schema.ts +37 -1
- package/src/schema/state/sqlite/client-document-def.test.ts +17 -0
- package/src/schema/state/sqlite/client-document-def.ts +117 -5
- package/src/schema/state/sqlite/column-annotations.ts +16 -6
- package/src/schema/state/sqlite/column-def.test.ts +150 -93
- package/src/schema/state/sqlite/column-def.ts +136 -203
- package/src/schema/state/sqlite/db-schema/ast/sqlite.ts +26 -6
- package/src/schema/state/sqlite/db-schema/dsl/mod.ts +2 -1
- package/src/schema/state/sqlite/mod.ts +1 -0
- package/src/schema/state/sqlite/query-builder/api.ts +7 -2
- package/src/schema/state/sqlite/query-builder/impl.test.ts +187 -6
- package/src/schema/state/sqlite/query-builder/impl.ts +8 -2
- package/src/schema/state/sqlite/system-tables.ts +2 -0
- package/src/schema/state/sqlite/table-def.test.ts +112 -2
- package/src/schema/state/sqlite/table-def.ts +9 -8
- package/src/schema/unknown-events.ts +131 -0
- package/src/sql-queries/sql-query-builder.ts +2 -1
- package/src/sync/ClientSessionSyncProcessor.ts +56 -49
- package/src/sync/errors.ts +38 -0
- package/src/sync/index.ts +3 -0
- package/src/sync/mock-sync-backend.ts +184 -0
- package/src/sync/next/compact-events.ts +4 -5
- package/src/sync/next/facts.ts +1 -3
- package/src/sync/next/history-dag-common.ts +272 -21
- package/src/sync/next/history-dag.ts +3 -1
- package/src/sync/sync-backend-kv.ts +22 -0
- package/src/sync/sync-backend.ts +185 -0
- package/src/sync/sync.ts +6 -89
- package/src/sync/syncstate.test.ts +17 -15
- package/src/sync/transport-chunking.ts +90 -0
- package/src/sync/validate-push-payload.ts +6 -7
- package/src/testing/event-factory.ts +133 -0
- package/src/testing/mod.ts +1 -0
- package/src/version.ts +2 -2
- package/dist/schema-management/migrations.test.d.ts +0 -2
- package/dist/schema-management/migrations.test.d.ts.map +0 -1
- package/dist/schema-management/migrations.test.js +0 -52
- package/dist/schema-management/migrations.test.js.map +0 -1
- package/dist/sync/next/graphology.d.ts +0 -8
- package/dist/sync/next/graphology.d.ts.map +0 -1
- package/dist/sync/next/graphology.js +0 -30
- package/dist/sync/next/graphology.js.map +0 -1
- package/dist/sync/next/graphology_.d.ts +0 -3
- package/dist/sync/next/graphology_.d.ts.map +0 -1
- package/dist/sync/next/graphology_.js +0 -3
- package/dist/sync/next/graphology_.js.map +0 -1
- package/src/sync/next/ambient.d.ts +0 -3
- package/src/sync/next/graphology.ts +0 -41
- package/src/sync/next/graphology_.ts +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-document-def.test.js","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/client-document-def.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE/C,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAEtD,OAAO,EAAE,4BAA4B,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAE3G,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;QACrB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;KAW9F,CAAC,CAAA;QAEF,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;KAY5F,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,MAAM,SAAS,GAAG,CAAI,MAA6B,EAAE,KAAQ,EAAE,EAAW,EAAE,OAAkC,EAAE,EAAE;YAChH,MAAM,GAAG,GAAG,cAAc,CAAC;gBACzB,IAAI,EAAE,MAAM;gBACZ,MAAM;gBACN,OAAO,EAAE,EAAE,KAAK,EAAE;gBAClB,GAAG,OAAO;aACX,CAAC,CAAA;YAEF,MAAM,YAAY,GAAG,GAAG,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC,eAAe,CAAA;YAE9E,OAAO,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAS,CAAC,CAAC,IAAI,EAAE;gBAClD,YAAY,EAAE,IAAI,GAAG,EAAE;gBACvB,KAAK,EAAE,EAAS,EAAE,SAAS;gBAC3B,QAAQ,EAAE,GAAG,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC,WAAW;
|
|
1
|
+
{"version":3,"file":"client-document-def.test.js","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/client-document-def.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column-annotations.d.ts","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/column-annotations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEnD,eAAO,MAAM,YAAY,eAA+D,CAAA;AAExF,eAAO,MAAM,UAAU,eAA+D,CAAA;AAEtF,eAAO,MAAM,OAAO,eAA2D,CAAA;AAE/E,eAAO,MAAM,aAAa,eAAkE,CAAA;AAE5F,eAAO,MAAM,MAAM,eAA0D,CAAA;AAkB7E;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"column-annotations.d.ts","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/column-annotations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEnD,eAAO,MAAM,YAAY,eAA+D,CAAA;AAExF,eAAO,MAAM,UAAU,eAA+D,CAAA;AAEtF,eAAO,MAAM,OAAO,eAA2D,CAAA;AAE/E,eAAO,MAAM,aAAa,eAAkE,CAAA;AAE5F,eAAO,MAAM,MAAM,eAA0D,CAAA;AAkB7E;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,MACjB,CAAA;AAEpD;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE;IAC3B,CAAC,IAAI,EAAE,SAAS,CAAC,eAAe,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,CAAA;IAEhF,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,eAAe,GAAG,CAAC,CAAA;CAI5E,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,MACnB,CAAA;AAErD;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAiD,CAAA;AAElH;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE;IAExB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC,CAAA;IAC3D,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,CAAA;CACsD,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { dual } from '@livestore/utils/effect';
|
|
1
|
+
import { dual, Option, SchemaAST } from '@livestore/utils/effect';
|
|
2
2
|
export const PrimaryKeyId = Symbol.for('livestore/state/sqlite/annotations/primary-key');
|
|
3
3
|
export const ColumnType = Symbol.for('livestore/state/sqlite/annotations/column-type');
|
|
4
4
|
export const Default = Symbol.for('livestore/state/sqlite/annotations/default');
|
|
@@ -21,30 +21,38 @@ Here are the knobs you can turn per-column when you CREATE TABLE (or ALTER TABLE
|
|
|
21
21
|
/**
|
|
22
22
|
* Adds a primary key annotation to a schema.
|
|
23
23
|
*/
|
|
24
|
-
export const withPrimaryKey = (schema) => schema
|
|
24
|
+
export const withPrimaryKey = (schema) => applyAnnotations(schema, { [PrimaryKeyId]: true });
|
|
25
25
|
/**
|
|
26
26
|
* Adds a column type annotation to a schema.
|
|
27
27
|
*/
|
|
28
28
|
export const withColumnType = dual(2, (schema, type) => {
|
|
29
29
|
validateSchemaColumnTypeCompatibility(schema, type);
|
|
30
|
-
return schema
|
|
30
|
+
return applyAnnotations(schema, { [ColumnType]: type });
|
|
31
31
|
});
|
|
32
32
|
/**
|
|
33
33
|
* Adds an auto-increment annotation to a schema.
|
|
34
34
|
*/
|
|
35
|
-
export const withAutoIncrement = (schema) => schema
|
|
35
|
+
export const withAutoIncrement = (schema) => applyAnnotations(schema, { [AutoIncrement]: true });
|
|
36
36
|
/**
|
|
37
37
|
* Adds a unique constraint annotation to a schema.
|
|
38
38
|
*/
|
|
39
|
-
export const withUnique = (schema) => schema
|
|
39
|
+
export const withUnique = (schema) => applyAnnotations(schema, { [Unique]: true });
|
|
40
40
|
/**
|
|
41
41
|
* Adds a default value annotation to a schema.
|
|
42
42
|
*/
|
|
43
|
-
export const withDefault = dual(2, (schema, value) => schema
|
|
43
|
+
export const withDefault = dual(2, (schema, value) => applyAnnotations(schema, { [Default]: value }));
|
|
44
44
|
/**
|
|
45
45
|
* Validates that a schema is compatible with the specified SQLite column type
|
|
46
46
|
*/
|
|
47
47
|
const validateSchemaColumnTypeCompatibility = (_schema, _columnType) => {
|
|
48
48
|
// TODO actually implement this
|
|
49
49
|
};
|
|
50
|
+
const applyAnnotations = (schema, overrides) => {
|
|
51
|
+
const identifier = SchemaAST.getIdentifierAnnotation(schema.ast);
|
|
52
|
+
const shouldPreserveIdentifier = Option.isSome(identifier) && !(SchemaAST.IdentifierAnnotationId in overrides);
|
|
53
|
+
const annotations = shouldPreserveIdentifier
|
|
54
|
+
? { ...overrides, [SchemaAST.IdentifierAnnotationId]: identifier.value }
|
|
55
|
+
: overrides;
|
|
56
|
+
return schema.annotations(annotations);
|
|
57
|
+
};
|
|
50
58
|
//# sourceMappingURL=column-annotations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column-annotations.js","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/column-annotations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"column-annotations.js","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/column-annotations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAGjE,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAA;AAExF,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAA;AAEtF,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAA;AAE/E,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAA;AAE5F,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAA;AAE7E,8EAA8E;AAE9E;;;;;;;;;;;;EAYE;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAA8B,MAAS,EAAE,EAAE,CACvE,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;AAEpD;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAIvB,IAAI,CAAC,CAAC,EAAE,CAA8B,MAAS,EAAE,IAA+B,EAAE,EAAE;IACtF,qCAAqC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnD,OAAO,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;AACzD,CAAC,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAA8B,MAAS,EAAE,EAAE,CAC1E,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;AAErD;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAA8B,MAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;AAElH;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAIpB,IAAI,CAAC,CAAC,EAAE,CAA8B,MAAS,EAAE,KAAc,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;AAEvH;;GAEG;AACH,MAAM,qCAAqC,GAAG,CAC5C,OAA0B,EAC1B,WAAsC,EAChC,EAAE;IACR,+BAA+B;AACjC,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,CAA8B,MAAS,EAAE,SAAuC,EAAK,EAAE;IAC9G,MAAM,UAAU,GAAG,SAAS,CAAC,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAChE,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,sBAAsB,IAAI,SAAS,CAAC,CAAA;IAC9G,MAAM,WAAW,GAAiC,wBAAwB;QACxE,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,UAAU,CAAC,KAAK,EAAE;QACxE,CAAC,CAAC,SAAS,CAAA;IAEb,OAAO,MAAM,CAAC,WAAW,CAAC,WAAW,CAAM,CAAA;AAC7C,CAAC,CAAA"}
|
|
@@ -2,11 +2,15 @@ import { Schema, SchemaAST } from '@livestore/utils/effect';
|
|
|
2
2
|
import { SqliteDsl } from './db-schema/mod.ts';
|
|
3
3
|
/**
|
|
4
4
|
* Maps a schema to a SQLite column definition, respecting column annotations.
|
|
5
|
+
*
|
|
6
|
+
* Note: When used with schema-based table definitions, optional fields (| undefined)
|
|
7
|
+
* are transformed to nullable fields (| null) to match SQLite's NULL semantics.
|
|
8
|
+
* Fields with both null and undefined will emit a warning as this is a lossy conversion.
|
|
5
9
|
*/
|
|
6
|
-
export declare const getColumnDefForSchema: (schema: Schema.Schema.AnyNoContext, propertySignature?: SchemaAST.PropertySignature) => SqliteDsl.ColumnDefinition.Any;
|
|
10
|
+
export declare const getColumnDefForSchema: (schema: Schema.Schema.AnyNoContext, propertySignature?: SchemaAST.PropertySignature, forceNullable?: boolean) => SqliteDsl.ColumnDefinition.Any;
|
|
7
11
|
/**
|
|
8
12
|
* Maps schema property signatures to SQLite column definitions.
|
|
9
|
-
*
|
|
13
|
+
* Optional fields (| undefined) become nullable columns (| null).
|
|
10
14
|
*/
|
|
11
15
|
export declare const schemaFieldsToColumns: (propertySignatures: ReadonlyArray<SchemaAST.PropertySignature>) => {
|
|
12
16
|
columns: SqliteDsl.Columns;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column-def.d.ts","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/column-def.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,MAAM,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAGnE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE9C
|
|
1
|
+
{"version":3,"file":"column-def.d.ts","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/column-def.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,MAAM,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAGnE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE9C;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,GAChC,QAAQ,MAAM,CAAC,MAAM,CAAC,YAAY,EAClC,oBAAoB,SAAS,CAAC,iBAAiB,EAC/C,uBAAqB,KACpB,SAAS,CAAC,gBAAgB,CAAC,GA8B7B,CAAA;AAaD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAChC,oBAAoB,aAAa,CAAC,SAAS,CAAC,iBAAiB,CAAC,KAC7D;IAAE,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAA;CAwCvD,CAAA"}
|
|
@@ -4,239 +4,182 @@ import { AutoIncrement, ColumnType, Default, PrimaryKeyId, Unique } from "./colu
|
|
|
4
4
|
import { SqliteDsl } from "./db-schema/mod.js";
|
|
5
5
|
/**
|
|
6
6
|
* Maps a schema to a SQLite column definition, respecting column annotations.
|
|
7
|
+
*
|
|
8
|
+
* Note: When used with schema-based table definitions, optional fields (| undefined)
|
|
9
|
+
* are transformed to nullable fields (| null) to match SQLite's NULL semantics.
|
|
10
|
+
* Fields with both null and undefined will emit a warning as this is a lossy conversion.
|
|
7
11
|
*/
|
|
8
|
-
export const getColumnDefForSchema = (schema, propertySignature) => {
|
|
12
|
+
export const getColumnDefForSchema = (schema, propertySignature, forceNullable = false) => {
|
|
9
13
|
const ast = schema.ast;
|
|
10
|
-
//
|
|
14
|
+
// Extract annotations
|
|
11
15
|
const getAnnotation = (annotationId) => propertySignature
|
|
12
16
|
? hasPropertyAnnotation(propertySignature, annotationId)
|
|
13
17
|
: SchemaAST.getAnnotation(annotationId)(ast);
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
const columnType = SchemaAST.getAnnotation(ColumnType)(ast);
|
|
19
|
+
// Check if schema has null (e.g., Schema.NullOr) or undefined or if it's forced nullable (optional field)
|
|
20
|
+
const isNullable = forceNullable || hasNull(ast) || hasUndefined(ast);
|
|
21
|
+
// Get base column definition with nullable flag
|
|
22
|
+
const baseColumn = Option.isSome(columnType)
|
|
23
|
+
? getColumnForType(columnType.value, isNullable)
|
|
24
|
+
: getColumnForSchema(schema, isNullable);
|
|
25
|
+
// Apply annotations
|
|
26
|
+
const primaryKey = getAnnotation(PrimaryKeyId).pipe(Option.getOrElse(() => false));
|
|
27
|
+
const autoIncrement = getAnnotation(AutoIncrement).pipe(Option.getOrElse(() => false));
|
|
28
|
+
const defaultValue = getAnnotation(Default);
|
|
29
|
+
return {
|
|
30
|
+
...baseColumn,
|
|
31
|
+
...(primaryKey && { primaryKey: true }),
|
|
32
|
+
...(autoIncrement && { autoIncrement: true }),
|
|
33
|
+
...(Option.isSome(defaultValue) && { default: Option.some(defaultValue.value) }),
|
|
19
34
|
};
|
|
20
|
-
// 2. Resolve the core type and nullable info
|
|
21
|
-
const typeInfo = resolveType(ast);
|
|
22
|
-
// 3. Create column definition based on resolved type
|
|
23
|
-
let columnDef;
|
|
24
|
-
// Custom column type overrides everything
|
|
25
|
-
if (Option.isSome(annotations.columnType)) {
|
|
26
|
-
columnDef = createColumnFromType(annotations.columnType.value, typeInfo.coreType);
|
|
27
|
-
}
|
|
28
|
-
// Lossy case: both null and undefined need JSON
|
|
29
|
-
else if (typeInfo.hasNull && typeInfo.hasUndefined) {
|
|
30
|
-
columnDef = {
|
|
31
|
-
...SqliteDsl.text(),
|
|
32
|
-
nullable: true,
|
|
33
|
-
schema: Schema.parseJson(schema),
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
// Regular nullable/optional case
|
|
37
|
-
else if (typeInfo.hasNull || typeInfo.hasUndefined) {
|
|
38
|
-
const baseColumnDef = createColumnFromAST(typeInfo.coreType, Schema.make(typeInfo.coreType));
|
|
39
|
-
const isComplexOptional = typeInfo.hasUndefined && !isPrimitiveAST(typeInfo.coreType);
|
|
40
|
-
columnDef = {
|
|
41
|
-
...baseColumnDef,
|
|
42
|
-
nullable: true,
|
|
43
|
-
schema: isComplexOptional ? Schema.parseJson(schema) : schema,
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
// Non-nullable type
|
|
47
|
-
else {
|
|
48
|
-
columnDef = createColumnFromAST(ast, schema);
|
|
49
|
-
}
|
|
50
|
-
// 4. Apply annotations
|
|
51
|
-
const result = { ...columnDef };
|
|
52
|
-
if (annotations.primaryKey)
|
|
53
|
-
result.primaryKey = true;
|
|
54
|
-
if (annotations.autoIncrement)
|
|
55
|
-
result.autoIncrement = true;
|
|
56
|
-
if (Option.isSome(annotations.defaultValue)) {
|
|
57
|
-
result.default = Option.some(annotations.defaultValue.value);
|
|
58
|
-
}
|
|
59
|
-
return result;
|
|
60
35
|
};
|
|
61
|
-
/**
|
|
62
|
-
* Checks if a property signature has a specific annotation, checking both
|
|
63
|
-
* the property signature itself and its type AST.
|
|
64
|
-
*/
|
|
65
36
|
const hasPropertyAnnotation = (propertySignature, annotationId) => {
|
|
66
|
-
// When using Schema.optional(Schema.String).pipe(withPrimaryKey) in a struct,
|
|
67
|
-
// the annotation ends up on a PropertySignatureDeclaration, not the Union type
|
|
68
|
-
// Check if this is a PropertySignatureDeclaration with annotations
|
|
69
37
|
if ('annotations' in propertySignature && propertySignature.annotations) {
|
|
70
38
|
const annotation = SchemaAST.getAnnotation(annotationId)(propertySignature);
|
|
71
|
-
if (Option.isSome(annotation))
|
|
39
|
+
if (Option.isSome(annotation))
|
|
72
40
|
return annotation;
|
|
73
|
-
}
|
|
74
41
|
}
|
|
75
|
-
// Otherwise check the type AST
|
|
76
42
|
return SchemaAST.getAnnotation(annotationId)(propertySignature.type);
|
|
77
43
|
};
|
|
78
44
|
/**
|
|
79
45
|
* Maps schema property signatures to SQLite column definitions.
|
|
80
|
-
*
|
|
46
|
+
* Optional fields (| undefined) become nullable columns (| null).
|
|
81
47
|
*/
|
|
82
48
|
export const schemaFieldsToColumns = (propertySignatures) => {
|
|
83
49
|
const columns = {};
|
|
84
50
|
const uniqueColumns = [];
|
|
85
51
|
for (const prop of propertySignatures) {
|
|
86
|
-
if (typeof prop.name
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
if (hasUnique) {
|
|
95
|
-
uniqueColumns.push(prop.name);
|
|
52
|
+
if (typeof prop.name !== 'string')
|
|
53
|
+
continue;
|
|
54
|
+
const fieldSchema = Schema.make(prop.type);
|
|
55
|
+
// Warn about lossy conversion for fields with both null and undefined
|
|
56
|
+
if (prop.isOptional) {
|
|
57
|
+
const { hasNull, hasUndefined } = checkNullUndefined(fieldSchema.ast);
|
|
58
|
+
if (hasNull && hasUndefined) {
|
|
59
|
+
console.warn(`Field '${prop.name}' has both null and undefined - treating | undefined as | null`);
|
|
96
60
|
}
|
|
97
61
|
}
|
|
62
|
+
// Get column definition - pass nullable flag for optional fields
|
|
63
|
+
const columnDef = getColumnDefForSchema(fieldSchema, prop, prop.isOptional);
|
|
64
|
+
// Check for primary key and unique annotations
|
|
65
|
+
const hasPrimaryKey = hasPropertyAnnotation(prop, PrimaryKeyId).pipe(Option.getOrElse(() => false));
|
|
66
|
+
const hasUnique = hasPropertyAnnotation(prop, Unique).pipe(Option.getOrElse(() => false));
|
|
67
|
+
// Build final column
|
|
68
|
+
columns[prop.name] = {
|
|
69
|
+
...columnDef,
|
|
70
|
+
...(hasPrimaryKey && { primaryKey: true }),
|
|
71
|
+
};
|
|
72
|
+
// Validate primary key + nullable
|
|
73
|
+
const column = columns[prop.name];
|
|
74
|
+
if (column?.primaryKey && column.nullable) {
|
|
75
|
+
throw new Error('Primary key columns cannot be nullable');
|
|
76
|
+
}
|
|
77
|
+
if (hasUnique)
|
|
78
|
+
uniqueColumns.push(prop.name);
|
|
98
79
|
}
|
|
99
80
|
return { columns, uniqueColumns };
|
|
100
81
|
};
|
|
101
|
-
|
|
102
|
-
* Converts a schema field and its property signature to a SQLite column definition.
|
|
103
|
-
*/
|
|
104
|
-
const schemaFieldToColumn = (fieldSchema, propertySignature, forceHasPrimaryKey) => {
|
|
105
|
-
// Determine column type based on schema type
|
|
106
|
-
const columnDef = getColumnDefForSchema(fieldSchema, propertySignature);
|
|
107
|
-
// Create a new object with appropriate properties
|
|
108
|
-
const result = {
|
|
109
|
-
columnType: columnDef.columnType,
|
|
110
|
-
schema: columnDef.schema,
|
|
111
|
-
default: columnDef.default,
|
|
112
|
-
nullable: columnDef.nullable,
|
|
113
|
-
primaryKey: columnDef.primaryKey,
|
|
114
|
-
autoIncrement: columnDef.autoIncrement,
|
|
115
|
-
};
|
|
116
|
-
// Set primaryKey property explicitly
|
|
117
|
-
if (forceHasPrimaryKey || columnDef.primaryKey) {
|
|
118
|
-
result.primaryKey = true;
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
result.primaryKey = false;
|
|
122
|
-
}
|
|
123
|
-
// Check for invalid primary key + nullable combination
|
|
124
|
-
if (result.primaryKey && (propertySignature.isOptional || columnDef.nullable)) {
|
|
125
|
-
return shouldNeverHappen(`Primary key columns cannot be nullable. Found nullable primary key for column. ` +
|
|
126
|
-
`Either remove the primary key annotation or use a non-nullable schema.`);
|
|
127
|
-
}
|
|
128
|
-
// Set nullable property explicitly
|
|
129
|
-
if (propertySignature.isOptional) {
|
|
130
|
-
result.nullable = true;
|
|
131
|
-
}
|
|
132
|
-
else if (columnDef.nullable) {
|
|
133
|
-
result.nullable = true;
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
result.nullable = false;
|
|
137
|
-
}
|
|
138
|
-
// Only add autoIncrement if it's true
|
|
139
|
-
if (columnDef.autoIncrement) {
|
|
140
|
-
result.autoIncrement = true;
|
|
141
|
-
}
|
|
142
|
-
return result;
|
|
143
|
-
};
|
|
144
|
-
/**
|
|
145
|
-
* Resolves type information from an AST, unwrapping unions and tracking nullability.
|
|
146
|
-
*/
|
|
147
|
-
const resolveType = (ast) => {
|
|
148
|
-
if (!SchemaAST.isUnion(ast)) {
|
|
149
|
-
return { coreType: ast, hasNull: false, hasUndefined: false };
|
|
150
|
-
}
|
|
82
|
+
const checkNullUndefined = (ast) => {
|
|
151
83
|
let hasNull = false;
|
|
152
84
|
let hasUndefined = false;
|
|
153
|
-
let coreType;
|
|
154
85
|
const visit = (type) => {
|
|
155
|
-
if (SchemaAST.isUndefinedKeyword(type))
|
|
86
|
+
if (SchemaAST.isUndefinedKeyword(type))
|
|
156
87
|
hasUndefined = true;
|
|
157
|
-
|
|
158
|
-
else if (SchemaAST.isLiteral(type) && type.literal === null) {
|
|
88
|
+
else if (SchemaAST.isLiteral(type) && type.literal === null)
|
|
159
89
|
hasNull = true;
|
|
160
|
-
|
|
161
|
-
else if (SchemaAST.isUnion(type)) {
|
|
90
|
+
else if (SchemaAST.isUnion(type))
|
|
162
91
|
type.types.forEach(visit);
|
|
163
|
-
}
|
|
164
|
-
else if (!coreType) {
|
|
165
|
-
coreType = type;
|
|
166
|
-
}
|
|
167
92
|
};
|
|
168
|
-
ast
|
|
169
|
-
return {
|
|
93
|
+
visit(ast);
|
|
94
|
+
return { hasNull, hasUndefined };
|
|
170
95
|
};
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
if (SchemaAST.isRefinement(ast)) {
|
|
177
|
-
// Special case for Schema.Int
|
|
178
|
-
const identifier = SchemaAST.getIdentifierAnnotation(ast).pipe(Option.getOrElse(() => ''));
|
|
179
|
-
if (identifier === 'Int')
|
|
180
|
-
return SqliteDsl.integer();
|
|
181
|
-
return createColumnFromAST(ast.from, Schema.make(ast.from));
|
|
182
|
-
}
|
|
183
|
-
if (SchemaAST.isTransformation(ast)) {
|
|
184
|
-
return createColumnFromAST(ast.to, Schema.make(ast.to));
|
|
96
|
+
const hasNull = (ast) => {
|
|
97
|
+
if (SchemaAST.isLiteral(ast) && ast.literal === null)
|
|
98
|
+
return true;
|
|
99
|
+
if (SchemaAST.isUnion(ast)) {
|
|
100
|
+
return ast.types.some((type) => hasNull(type));
|
|
185
101
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
if (SchemaAST.
|
|
190
|
-
return
|
|
191
|
-
if (SchemaAST.
|
|
192
|
-
return
|
|
193
|
-
// Literals
|
|
194
|
-
if (SchemaAST.isLiteral(ast)) {
|
|
195
|
-
const value = ast.literal;
|
|
196
|
-
if (typeof value === 'string')
|
|
197
|
-
return SqliteDsl.text();
|
|
198
|
-
if (typeof value === 'number')
|
|
199
|
-
return SqliteDsl.real();
|
|
200
|
-
if (typeof value === 'boolean')
|
|
201
|
-
return SqliteDsl.boolean();
|
|
102
|
+
return false;
|
|
103
|
+
};
|
|
104
|
+
const hasUndefined = (ast) => {
|
|
105
|
+
if (SchemaAST.isUndefinedKeyword(ast))
|
|
106
|
+
return true;
|
|
107
|
+
if (SchemaAST.isUnion(ast)) {
|
|
108
|
+
return ast.types.some((type) => hasUndefined(type));
|
|
202
109
|
}
|
|
203
|
-
|
|
204
|
-
return SqliteDsl.json({ schema });
|
|
110
|
+
return false;
|
|
205
111
|
};
|
|
206
|
-
|
|
207
|
-
* Creates a column from a specific column type string.
|
|
208
|
-
*/
|
|
209
|
-
const createColumnFromType = (columnType, ast) => {
|
|
112
|
+
const getColumnForType = (columnType, nullable = false) => {
|
|
210
113
|
switch (columnType) {
|
|
211
114
|
case 'text':
|
|
212
|
-
return SqliteDsl.text();
|
|
115
|
+
return SqliteDsl.text({ nullable });
|
|
213
116
|
case 'integer':
|
|
214
|
-
|
|
215
|
-
return SchemaAST.isBooleanKeyword(ast) ? SqliteDsl.boolean() : SqliteDsl.integer();
|
|
117
|
+
return SqliteDsl.integer({ nullable });
|
|
216
118
|
case 'real':
|
|
217
|
-
return SqliteDsl.real();
|
|
119
|
+
return SqliteDsl.real({ nullable });
|
|
218
120
|
case 'blob':
|
|
219
|
-
return SqliteDsl.blob();
|
|
121
|
+
return SqliteDsl.blob({ nullable });
|
|
220
122
|
default:
|
|
221
123
|
return shouldNeverHappen(`Unsupported column type: ${columnType}`);
|
|
222
124
|
}
|
|
223
125
|
};
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
const
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
126
|
+
const getColumnForSchema = (schema, nullable = false) => {
|
|
127
|
+
const ast = schema.ast;
|
|
128
|
+
// Strip nullable wrapper to get core type
|
|
129
|
+
const coreAst = stripNullable(ast);
|
|
130
|
+
const coreSchema = stripNullable(ast) === ast ? schema : Schema.make(coreAst);
|
|
131
|
+
// Special case: Boolean is transformed to integer in SQLite
|
|
132
|
+
if (SchemaAST.isBooleanKeyword(coreAst)) {
|
|
133
|
+
return SqliteDsl.boolean({ nullable });
|
|
134
|
+
}
|
|
135
|
+
// Get the encoded AST - what actually gets stored in SQLite
|
|
136
|
+
const encodedAst = Schema.encodedSchema(coreSchema).ast;
|
|
137
|
+
// Check if the encoded type matches SQLite native types
|
|
138
|
+
if (SchemaAST.isStringKeyword(encodedAst)) {
|
|
139
|
+
return SqliteDsl.text({ schema: coreSchema, nullable });
|
|
140
|
+
}
|
|
141
|
+
if (SchemaAST.isNumberKeyword(encodedAst)) {
|
|
142
|
+
// Special cases for integer columns
|
|
143
|
+
const id = SchemaAST.getIdentifierAnnotation(coreAst).pipe(Option.getOrElse(() => ''));
|
|
144
|
+
if (id === 'Int' || id === 'DateFromNumber') {
|
|
145
|
+
return SqliteDsl.integer({ schema: coreSchema, nullable });
|
|
146
|
+
}
|
|
147
|
+
return SqliteDsl.real({ schema: coreSchema, nullable });
|
|
233
148
|
}
|
|
234
|
-
|
|
235
|
-
|
|
149
|
+
// Literals based on their type
|
|
150
|
+
if (SchemaAST.isLiteral(coreAst)) {
|
|
151
|
+
const value = coreAst.literal;
|
|
152
|
+
if (typeof value === 'boolean')
|
|
153
|
+
return SqliteDsl.boolean({ nullable });
|
|
236
154
|
}
|
|
237
|
-
|
|
238
|
-
|
|
155
|
+
// Literals based on their encoded type
|
|
156
|
+
if (SchemaAST.isLiteral(encodedAst)) {
|
|
157
|
+
const value = encodedAst.literal;
|
|
158
|
+
if (typeof value === 'string')
|
|
159
|
+
return SqliteDsl.text({ schema: coreSchema, nullable });
|
|
160
|
+
if (typeof value === 'number') {
|
|
161
|
+
// Check if the original schema is Int
|
|
162
|
+
const id = SchemaAST.getIdentifierAnnotation(coreAst).pipe(Option.getOrElse(() => ''));
|
|
163
|
+
if (id === 'Int') {
|
|
164
|
+
return SqliteDsl.integer({ schema: coreSchema, nullable });
|
|
165
|
+
}
|
|
166
|
+
return SqliteDsl.real({ schema: coreSchema, nullable });
|
|
167
|
+
}
|
|
239
168
|
}
|
|
240
|
-
|
|
169
|
+
// Everything else needs JSON encoding
|
|
170
|
+
return SqliteDsl.json({ schema: coreSchema, nullable });
|
|
171
|
+
};
|
|
172
|
+
const stripNullable = (ast) => {
|
|
173
|
+
if (!SchemaAST.isUnion(ast))
|
|
174
|
+
return ast;
|
|
175
|
+
// Filter out null/undefined members while preserving any annotations on the union
|
|
176
|
+
const coreTypes = ast.types.filter((type) => !(SchemaAST.isLiteral(type) && type.literal === null) && !SchemaAST.isUndefinedKeyword(type));
|
|
177
|
+
if (coreTypes.length === 0 || coreTypes.length === ast.types.length) {
|
|
178
|
+
return ast;
|
|
179
|
+
}
|
|
180
|
+
if (coreTypes.length === 1) {
|
|
181
|
+
return coreTypes[0];
|
|
182
|
+
}
|
|
183
|
+
return SchemaAST.Union.make(coreTypes, ast.annotations);
|
|
241
184
|
};
|
|
242
185
|
//# sourceMappingURL=column-def.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column-def.js","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/column-def.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"column-def.js","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/column-def.ts"],"names":[],"mappings":"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"}
|