@undefineds.co/drizzle-solid 0.2.13 → 0.3.1
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/CHANGELOG-DRAFT.md +1 -1
- package/README.md +163 -248
- package/dist/core/ast-to-sparql.d.ts +32 -25
- package/dist/core/ast-to-sparql.d.ts.map +1 -1
- package/dist/core/ast-to-sparql.js +1 -1
- package/dist/core/ast-to-sparql.js.map +1 -1
- package/dist/core/compile-time-types.d.ts +10 -7
- package/dist/core/compile-time-types.d.ts.map +1 -1
- package/dist/core/compile-time-types.js +6 -4
- package/dist/core/compile-time-types.js.map +1 -1
- package/dist/core/comunica-patch.d.ts +1 -6
- package/dist/core/comunica-patch.d.ts.map +1 -1
- package/dist/core/comunica-patch.js +16 -20
- package/dist/core/comunica-patch.js.map +1 -1
- package/dist/core/conflict-resolution.d.ts.map +1 -1
- package/dist/core/conflict-resolution.js +3 -2
- package/dist/core/conflict-resolution.js.map +1 -1
- package/dist/core/discovery/typeindex-discovery.d.ts.map +1 -1
- package/dist/core/discovery/typeindex-discovery.js +0 -2
- package/dist/core/discovery/typeindex-discovery.js.map +1 -1
- package/dist/core/execution/ldp-executor.d.ts.map +1 -1
- package/dist/core/execution/ldp-executor.js +2 -21
- package/dist/core/execution/ldp-executor.js.map +1 -1
- package/dist/core/execution/pod-executor.d.ts.map +1 -1
- package/dist/core/execution/pod-executor.js +2 -4
- package/dist/core/execution/pod-executor.js.map +1 -1
- package/dist/core/execution/sparql-strategy.d.ts +8 -40
- package/dist/core/execution/sparql-strategy.d.ts.map +1 -1
- package/dist/core/execution/sparql-strategy.js +24 -186
- package/dist/core/execution/sparql-strategy.js.map +1 -1
- package/dist/core/execution/strategy-factory.d.ts +7 -20
- package/dist/core/execution/strategy-factory.d.ts.map +1 -1
- package/dist/core/execution/strategy-factory.js +2 -17
- package/dist/core/execution/strategy-factory.js.map +1 -1
- package/dist/core/expressions.d.ts +10 -9
- package/dist/core/expressions.d.ts.map +1 -1
- package/dist/core/expressions.js.map +1 -1
- package/dist/core/pod-database.d.ts +62 -18
- package/dist/core/pod-database.d.ts.map +1 -1
- package/dist/core/pod-database.js +136 -72
- package/dist/core/pod-database.js.map +1 -1
- package/dist/core/pod-dialect.d.ts +7 -1
- package/dist/core/pod-dialect.d.ts.map +1 -1
- package/dist/core/pod-dialect.js +36 -29
- package/dist/core/pod-dialect.js.map +1 -1
- package/dist/core/pod-session.d.ts +10 -9
- package/dist/core/pod-session.d.ts.map +1 -1
- package/dist/core/pod-session.js.map +1 -1
- package/dist/core/query-builders/delete-query-builder.d.ts +2 -2
- package/dist/core/query-builders/delete-query-builder.d.ts.map +1 -1
- package/dist/core/query-builders/delete-query-builder.js +8 -6
- package/dist/core/query-builders/delete-query-builder.js.map +1 -1
- package/dist/core/query-builders/select-query-builder.d.ts +15 -6
- package/dist/core/query-builders/select-query-builder.d.ts.map +1 -1
- package/dist/core/query-builders/select-query-builder.js +217 -31
- package/dist/core/query-builders/select-query-builder.js.map +1 -1
- package/dist/core/query-builders/update-query-builder.d.ts +2 -2
- package/dist/core/query-builders/update-query-builder.d.ts.map +1 -1
- package/dist/core/query-builders/update-query-builder.js +7 -5
- package/dist/core/query-builders/update-query-builder.js.map +1 -1
- package/dist/core/query-conditions.d.ts +18 -11
- package/dist/core/query-conditions.d.ts.map +1 -1
- package/dist/core/query-conditions.js.map +1 -1
- package/dist/core/query-where-policy.d.ts +7 -0
- package/dist/core/query-where-policy.d.ts.map +1 -0
- package/dist/core/query-where-policy.js +83 -0
- package/dist/core/query-where-policy.js.map +1 -0
- package/dist/core/resource-resolver/base-resolver.d.ts +1 -0
- package/dist/core/resource-resolver/base-resolver.d.ts.map +1 -1
- package/dist/core/resource-resolver/base-resolver.js +33 -39
- package/dist/core/resource-resolver/base-resolver.js.map +1 -1
- package/dist/core/resource-resolver/document-resolver.d.ts +2 -1
- package/dist/core/resource-resolver/document-resolver.d.ts.map +1 -1
- package/dist/core/resource-resolver/document-resolver.js +17 -46
- package/dist/core/resource-resolver/document-resolver.js.map +1 -1
- package/dist/core/runtime/pod-runtime.d.ts.map +1 -1
- package/dist/core/runtime/pod-runtime.js +0 -6
- package/dist/core/runtime/pod-runtime.js.map +1 -1
- package/dist/core/schema/columns.d.ts +6 -6
- package/dist/core/schema/columns.d.ts.map +1 -1
- package/dist/core/schema/columns.js +18 -18
- package/dist/core/schema/columns.js.map +1 -1
- package/dist/core/schema/defs.d.ts +4 -4
- package/dist/core/schema/defs.d.ts.map +1 -1
- package/dist/core/schema/pod-table.js +2 -2
- package/dist/core/schema/pod-table.js.map +1 -1
- package/dist/core/select-plan.d.ts +9 -7
- package/dist/core/select-plan.d.ts.map +1 -1
- package/dist/core/services/pod-services.d.ts +7 -5
- package/dist/core/services/pod-services.d.ts.map +1 -1
- package/dist/core/services/pod-services.js +7 -5
- package/dist/core/services/pod-services.js.map +1 -1
- package/dist/core/shape/generator.js +3 -3
- package/dist/core/shape/generator.js.map +1 -1
- package/dist/core/shape/manager.js +5 -5
- package/dist/core/shape/manager.js.map +1 -1
- package/dist/core/solid-n3-client.d.ts.map +1 -1
- package/dist/core/solid-n3-client.js +20 -9
- package/dist/core/solid-n3-client.js.map +1 -1
- package/dist/core/sparql/builder/expression-builder.d.ts +14 -16
- package/dist/core/sparql/builder/expression-builder.d.ts.map +1 -1
- package/dist/core/sparql/builder/expression-builder.js +177 -74
- package/dist/core/sparql/builder/expression-builder.js.map +1 -1
- package/dist/core/sparql/builder/select-builder.d.ts +1 -1
- package/dist/core/sparql/builder/select-builder.d.ts.map +1 -1
- package/dist/core/sparql/builder/select-builder.js +19 -5
- package/dist/core/sparql/builder/select-builder.js.map +1 -1
- package/dist/core/sparql/builder/update-builder.d.ts +1 -1
- package/dist/core/sparql/builder/update-builder.d.ts.map +1 -1
- package/dist/core/sparql/builder/update-builder.js +4 -15
- package/dist/core/sparql/builder/update-builder.js.map +1 -1
- package/dist/core/sparql/helpers.js +3 -3
- package/dist/core/sparql/helpers.js.map +1 -1
- package/dist/core/sparql-engine.d.ts +16 -0
- package/dist/core/sparql-engine.d.ts.map +1 -0
- package/dist/core/sparql-engine.js +128 -0
- package/dist/core/sparql-engine.js.map +1 -0
- package/dist/core/sparql-executor.d.ts +12 -7
- package/dist/core/sparql-executor.d.ts.map +1 -1
- package/dist/core/sparql-executor.js +56 -47
- package/dist/core/sparql-executor.js.map +1 -1
- package/dist/core/triple/handlers/inverse.js +4 -4
- package/dist/core/triple/handlers/inverse.js.map +1 -1
- package/dist/core/triple/handlers/uri.d.ts +1 -1
- package/dist/core/triple/handlers/uri.js +3 -3
- package/dist/core/triple/handlers/uri.js.map +1 -1
- package/dist/core/typeindex-manager.d.ts.map +1 -1
- package/dist/core/typeindex-manager.js +3 -0
- package/dist/core/typeindex-manager.js.map +1 -1
- package/dist/core/types.d.ts +3 -3
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/uri/resolver.d.ts +9 -9
- package/dist/core/uri/resolver.d.ts.map +1 -1
- package/dist/core/uri/resolver.js +51 -51
- package/dist/core/uri/resolver.js.map +1 -1
- package/dist/core/uri/types.d.ts +10 -10
- package/dist/core/uri/types.d.ts.map +1 -1
- package/dist/core/zod-integration.d.ts +9 -7
- package/dist/core/zod-integration.d.ts.map +1 -1
- package/dist/core/zod-integration.js.map +1 -1
- package/dist/driver.d.ts +10 -1
- package/dist/driver.d.ts.map +1 -1
- package/dist/driver.js +1 -5
- package/dist/driver.js.map +1 -1
- package/dist/esm/core/ast-to-sparql.d.ts +32 -25
- package/dist/esm/core/ast-to-sparql.d.ts.map +1 -1
- package/dist/esm/core/ast-to-sparql.js +1 -1
- package/dist/esm/core/ast-to-sparql.js.map +1 -1
- package/dist/esm/core/compile-time-types.d.ts +10 -7
- package/dist/esm/core/compile-time-types.d.ts.map +1 -1
- package/dist/esm/core/compile-time-types.js +6 -4
- package/dist/esm/core/compile-time-types.js.map +1 -1
- package/dist/esm/core/comunica-patch.d.ts +1 -6
- package/dist/esm/core/comunica-patch.d.ts.map +1 -1
- package/dist/esm/core/comunica-patch.js +13 -21
- package/dist/esm/core/comunica-patch.js.map +1 -1
- package/dist/esm/core/conflict-resolution.d.ts.map +1 -1
- package/dist/esm/core/conflict-resolution.js +3 -2
- package/dist/esm/core/conflict-resolution.js.map +1 -1
- package/dist/esm/core/discovery/typeindex-discovery.d.ts.map +1 -1
- package/dist/esm/core/discovery/typeindex-discovery.js +0 -2
- package/dist/esm/core/discovery/typeindex-discovery.js.map +1 -1
- package/dist/esm/core/execution/ldp-executor.d.ts.map +1 -1
- package/dist/esm/core/execution/ldp-executor.js +2 -21
- package/dist/esm/core/execution/ldp-executor.js.map +1 -1
- package/dist/esm/core/execution/pod-executor.d.ts.map +1 -1
- package/dist/esm/core/execution/pod-executor.js +2 -4
- package/dist/esm/core/execution/pod-executor.js.map +1 -1
- package/dist/esm/core/execution/sparql-strategy.d.ts +8 -40
- package/dist/esm/core/execution/sparql-strategy.d.ts.map +1 -1
- package/dist/esm/core/execution/sparql-strategy.js +25 -187
- package/dist/esm/core/execution/sparql-strategy.js.map +1 -1
- package/dist/esm/core/execution/strategy-factory.d.ts +7 -20
- package/dist/esm/core/execution/strategy-factory.d.ts.map +1 -1
- package/dist/esm/core/execution/strategy-factory.js +2 -17
- package/dist/esm/core/execution/strategy-factory.js.map +1 -1
- package/dist/esm/core/expressions.d.ts +10 -9
- package/dist/esm/core/expressions.d.ts.map +1 -1
- package/dist/esm/core/expressions.js.map +1 -1
- package/dist/esm/core/pod-database.d.ts +62 -18
- package/dist/esm/core/pod-database.d.ts.map +1 -1
- package/dist/esm/core/pod-database.js +136 -72
- package/dist/esm/core/pod-database.js.map +1 -1
- package/dist/esm/core/pod-dialect.d.ts +7 -1
- package/dist/esm/core/pod-dialect.d.ts.map +1 -1
- package/dist/esm/core/pod-dialect.js +37 -30
- package/dist/esm/core/pod-dialect.js.map +1 -1
- package/dist/esm/core/pod-session.d.ts +10 -9
- package/dist/esm/core/pod-session.d.ts.map +1 -1
- package/dist/esm/core/pod-session.js.map +1 -1
- package/dist/esm/core/query-builders/delete-query-builder.d.ts +2 -2
- package/dist/esm/core/query-builders/delete-query-builder.d.ts.map +1 -1
- package/dist/esm/core/query-builders/delete-query-builder.js +8 -6
- package/dist/esm/core/query-builders/delete-query-builder.js.map +1 -1
- package/dist/esm/core/query-builders/select-query-builder.d.ts +15 -6
- package/dist/esm/core/query-builders/select-query-builder.d.ts.map +1 -1
- package/dist/esm/core/query-builders/select-query-builder.js +218 -32
- package/dist/esm/core/query-builders/select-query-builder.js.map +1 -1
- package/dist/esm/core/query-builders/update-query-builder.d.ts +2 -2
- package/dist/esm/core/query-builders/update-query-builder.d.ts.map +1 -1
- package/dist/esm/core/query-builders/update-query-builder.js +7 -5
- package/dist/esm/core/query-builders/update-query-builder.js.map +1 -1
- package/dist/esm/core/query-conditions.d.ts +18 -11
- package/dist/esm/core/query-conditions.d.ts.map +1 -1
- package/dist/esm/core/query-conditions.js.map +1 -1
- package/dist/esm/core/query-where-policy.d.ts +7 -0
- package/dist/esm/core/query-where-policy.d.ts.map +1 -0
- package/dist/esm/core/query-where-policy.js +78 -0
- package/dist/esm/core/query-where-policy.js.map +1 -0
- package/dist/esm/core/resource-resolver/base-resolver.d.ts +1 -0
- package/dist/esm/core/resource-resolver/base-resolver.d.ts.map +1 -1
- package/dist/esm/core/resource-resolver/base-resolver.js +33 -39
- package/dist/esm/core/resource-resolver/base-resolver.js.map +1 -1
- package/dist/esm/core/resource-resolver/document-resolver.d.ts +2 -1
- package/dist/esm/core/resource-resolver/document-resolver.d.ts.map +1 -1
- package/dist/esm/core/resource-resolver/document-resolver.js +17 -46
- package/dist/esm/core/resource-resolver/document-resolver.js.map +1 -1
- package/dist/esm/core/runtime/pod-runtime.d.ts.map +1 -1
- package/dist/esm/core/runtime/pod-runtime.js +0 -6
- package/dist/esm/core/runtime/pod-runtime.js.map +1 -1
- package/dist/esm/core/schema/columns.d.ts +6 -6
- package/dist/esm/core/schema/columns.d.ts.map +1 -1
- package/dist/esm/core/schema/columns.js +18 -18
- package/dist/esm/core/schema/columns.js.map +1 -1
- package/dist/esm/core/schema/defs.d.ts +4 -4
- package/dist/esm/core/schema/defs.d.ts.map +1 -1
- package/dist/esm/core/schema/pod-table.js +2 -2
- package/dist/esm/core/schema/pod-table.js.map +1 -1
- package/dist/esm/core/select-plan.d.ts +9 -7
- package/dist/esm/core/select-plan.d.ts.map +1 -1
- package/dist/esm/core/services/pod-services.d.ts +7 -5
- package/dist/esm/core/services/pod-services.d.ts.map +1 -1
- package/dist/esm/core/services/pod-services.js +7 -5
- package/dist/esm/core/services/pod-services.js.map +1 -1
- package/dist/esm/core/shape/generator.js +3 -3
- package/dist/esm/core/shape/generator.js.map +1 -1
- package/dist/esm/core/shape/manager.js +5 -5
- package/dist/esm/core/shape/manager.js.map +1 -1
- package/dist/esm/core/solid-n3-client.d.ts.map +1 -1
- package/dist/esm/core/solid-n3-client.js +20 -9
- package/dist/esm/core/solid-n3-client.js.map +1 -1
- package/dist/esm/core/sparql/builder/expression-builder.d.ts +14 -16
- package/dist/esm/core/sparql/builder/expression-builder.d.ts.map +1 -1
- package/dist/esm/core/sparql/builder/expression-builder.js +177 -74
- package/dist/esm/core/sparql/builder/expression-builder.js.map +1 -1
- package/dist/esm/core/sparql/builder/select-builder.d.ts +1 -1
- package/dist/esm/core/sparql/builder/select-builder.d.ts.map +1 -1
- package/dist/esm/core/sparql/builder/select-builder.js +19 -5
- package/dist/esm/core/sparql/builder/select-builder.js.map +1 -1
- package/dist/esm/core/sparql/builder/update-builder.d.ts +1 -1
- package/dist/esm/core/sparql/builder/update-builder.d.ts.map +1 -1
- package/dist/esm/core/sparql/builder/update-builder.js +4 -15
- package/dist/esm/core/sparql/builder/update-builder.js.map +1 -1
- package/dist/esm/core/sparql/helpers.js +3 -3
- package/dist/esm/core/sparql/helpers.js.map +1 -1
- package/dist/esm/core/sparql-engine.d.ts +16 -0
- package/dist/esm/core/sparql-engine.d.ts.map +1 -0
- package/dist/esm/core/sparql-engine.js +89 -0
- package/dist/esm/core/sparql-engine.js.map +1 -0
- package/dist/esm/core/sparql-executor.d.ts +12 -7
- package/dist/esm/core/sparql-executor.d.ts.map +1 -1
- package/dist/esm/core/sparql-executor.js +56 -47
- package/dist/esm/core/sparql-executor.js.map +1 -1
- package/dist/esm/core/triple/handlers/inverse.js +4 -4
- package/dist/esm/core/triple/handlers/inverse.js.map +1 -1
- package/dist/esm/core/triple/handlers/uri.d.ts +1 -1
- package/dist/esm/core/triple/handlers/uri.js +3 -3
- package/dist/esm/core/triple/handlers/uri.js.map +1 -1
- package/dist/esm/core/typeindex-manager.d.ts.map +1 -1
- package/dist/esm/core/typeindex-manager.js +3 -0
- package/dist/esm/core/typeindex-manager.js.map +1 -1
- package/dist/esm/core/types.d.ts +3 -3
- package/dist/esm/core/types.d.ts.map +1 -1
- package/dist/esm/core/uri/resolver.d.ts +9 -9
- package/dist/esm/core/uri/resolver.d.ts.map +1 -1
- package/dist/esm/core/uri/resolver.js +51 -51
- package/dist/esm/core/uri/resolver.js.map +1 -1
- package/dist/esm/core/uri/types.d.ts +10 -10
- package/dist/esm/core/uri/types.d.ts.map +1 -1
- package/dist/esm/core/zod-integration.d.ts +9 -7
- package/dist/esm/core/zod-integration.d.ts.map +1 -1
- package/dist/esm/core/zod-integration.js.map +1 -1
- package/dist/esm/driver.d.ts +10 -1
- package/dist/esm/driver.d.ts.map +1 -1
- package/dist/esm/driver.js +1 -5
- package/dist/esm/driver.js.map +1 -1
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +4 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/pod.d.ts +118 -0
- package/dist/esm/pod.d.ts.map +1 -0
- package/dist/esm/pod.js +146 -0
- package/dist/esm/pod.js.map +1 -0
- package/dist/esm/utils/find-by-iri.d.ts +4 -2
- package/dist/esm/utils/find-by-iri.d.ts.map +1 -1
- package/dist/esm/utils/find-by-iri.js +8 -8
- package/dist/esm/utils/find-by-iri.js.map +1 -1
- package/dist/esm/utils/helpers.d.ts +2 -2
- package/dist/esm/utils/helpers.d.ts.map +1 -1
- package/dist/esm/utils/rdf-helpers.d.ts +2 -2
- package/dist/esm/utils/rdf-helpers.d.ts.map +1 -1
- package/dist/esm/utils/rdf-helpers.js +9 -6
- package/dist/esm/utils/rdf-helpers.js.map +1 -1
- package/dist/esm/utils/rdf-validation.d.ts +5 -3
- package/dist/esm/utils/rdf-validation.d.ts.map +1 -1
- package/dist/esm/utils/rdf-validation.js +47 -8
- package/dist/esm/utils/rdf-validation.js.map +1 -1
- package/dist/esm/utils/webid-resolver.d.ts +1 -2
- package/dist/esm/utils/webid-resolver.d.ts.map +1 -1
- package/dist/esm/utils/webid-resolver.js +37 -31
- package/dist/esm/utils/webid-resolver.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -4
- package/dist/index.js.map +1 -1
- package/dist/pod.d.ts +118 -0
- package/dist/pod.d.ts.map +1 -0
- package/dist/pod.js +153 -0
- package/dist/pod.js.map +1 -0
- package/dist/utils/find-by-iri.d.ts +4 -2
- package/dist/utils/find-by-iri.d.ts.map +1 -1
- package/dist/utils/find-by-iri.js +8 -8
- package/dist/utils/find-by-iri.js.map +1 -1
- package/dist/utils/helpers.d.ts +2 -2
- package/dist/utils/helpers.d.ts.map +1 -1
- package/dist/utils/rdf-helpers.d.ts +2 -2
- package/dist/utils/rdf-helpers.d.ts.map +1 -1
- package/dist/utils/rdf-helpers.js +9 -6
- package/dist/utils/rdf-helpers.js.map +1 -1
- package/dist/utils/rdf-validation.d.ts +5 -3
- package/dist/utils/rdf-validation.d.ts.map +1 -1
- package/dist/utils/rdf-validation.js +47 -8
- package/dist/utils/rdf-validation.js.map +1 -1
- package/dist/utils/webid-resolver.d.ts +1 -2
- package/dist/utils/webid-resolver.d.ts.map +1 -1
- package/dist/utils/webid-resolver.js +37 -31
- package/dist/utils/webid-resolver.js.map +1 -1
- package/package.json +13 -4
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { entityKind } from 'drizzle-orm';
|
|
2
2
|
import { PodDialect } from './pod-dialect';
|
|
3
3
|
import { PodAsyncSession, type SelectFieldMap, SelectQueryBuilder, InsertQueryBuilder, UpdateQueryBuilder, DeleteQueryBuilder } from './pod-session';
|
|
4
|
-
import { PodTable, SolidSchema, type InferTableData, PodColumnBase, type InstantiateTableOptions } from './schema';
|
|
4
|
+
import { PodTable, SolidSchema, type InferTableData, type ColumnBuilderDataType, PodColumnBase, type InstantiateTableOptions } from './schema';
|
|
5
|
+
import { type PublicQueryCondition, type PublicWhereObject } from './query-conditions';
|
|
5
6
|
import { type TableSubscribeOptions, type EntitySubscribeOptions, type Subscription } from './notifications';
|
|
6
7
|
import { type FederatedError } from './federated';
|
|
7
8
|
import type { DataDiscovery } from './discovery';
|
|
9
|
+
import type { OrderByExpression } from './order-by';
|
|
8
10
|
/**
|
|
9
11
|
* 初始化表选项
|
|
10
12
|
*/
|
|
@@ -16,6 +18,41 @@ export interface InitOptions {
|
|
|
16
18
|
/** Shape 保存位置(容器路径或完整 URL),默认为 Pod 根目录下的 /shapes/ */
|
|
17
19
|
shapeLocation?: string;
|
|
18
20
|
}
|
|
21
|
+
type GenericPodTable = PodTable;
|
|
22
|
+
type QueryOrderBy = {
|
|
23
|
+
column: PodColumnBase | string | OrderByExpression;
|
|
24
|
+
direction?: 'asc' | 'desc';
|
|
25
|
+
};
|
|
26
|
+
type QueryExactOptions = {
|
|
27
|
+
columns?: SelectFieldMap;
|
|
28
|
+
with?: Record<string, boolean | {
|
|
29
|
+
table?: GenericPodTable;
|
|
30
|
+
}>;
|
|
31
|
+
};
|
|
32
|
+
type EntityLocator = Record<string, unknown>;
|
|
33
|
+
type QueryFindManyOptions = {
|
|
34
|
+
where?: PublicWhereObject | PublicQueryCondition;
|
|
35
|
+
columns?: SelectFieldMap;
|
|
36
|
+
limit?: number;
|
|
37
|
+
offset?: number;
|
|
38
|
+
orderBy?: QueryOrderBy[] | QueryOrderBy;
|
|
39
|
+
with?: Record<string, boolean | {
|
|
40
|
+
table?: GenericPodTable;
|
|
41
|
+
}>;
|
|
42
|
+
};
|
|
43
|
+
type QueryTableHelper<TTable extends GenericPodTable = GenericPodTable> = {
|
|
44
|
+
findMany<T = InferTableData<TTable>>(options?: QueryFindManyOptions): Promise<T[]>;
|
|
45
|
+
findFirst<T = InferTableData<TTable>>(options?: QueryFindManyOptions): Promise<T | null>;
|
|
46
|
+
findByLocator<T = InferTableData<TTable>>(locator: EntityLocator, options?: QueryExactOptions): Promise<T | null>;
|
|
47
|
+
findByIri<T = InferTableData<TTable>>(iri: string, options?: QueryExactOptions): Promise<T | null>;
|
|
48
|
+
count(options?: {
|
|
49
|
+
where?: PublicWhereObject | PublicQueryCondition;
|
|
50
|
+
}): Promise<number>;
|
|
51
|
+
};
|
|
52
|
+
type QueryProxy<TSchema extends Record<string, unknown>> = {
|
|
53
|
+
[K in keyof TSchema as TSchema[K] extends GenericPodTable ? K : never]: TSchema[K] extends GenericPodTable ? QueryTableHelper<TSchema[K]> : never;
|
|
54
|
+
};
|
|
55
|
+
type GenericPodColumn = PodColumnBase<ColumnBuilderDataType, boolean, boolean, ColumnBuilderDataType | null>;
|
|
19
56
|
export declare class PodDatabase<TSchema extends Record<string, unknown> = Record<string, never>> {
|
|
20
57
|
dialect: PodDialect;
|
|
21
58
|
session: PodAsyncSession;
|
|
@@ -82,17 +119,21 @@ export declare class PodDatabase<TSchema extends Record<string, unknown> = Recor
|
|
|
82
119
|
* });
|
|
83
120
|
* ```
|
|
84
121
|
*/
|
|
85
|
-
createTable<TColumns extends Record<string, PodColumnBase
|
|
86
|
-
select<TTable extends PodTable
|
|
87
|
-
insert<TTable extends PodTable
|
|
88
|
-
update<TTable extends PodTable
|
|
89
|
-
delete<TTable extends PodTable
|
|
122
|
+
createTable<TColumns extends Record<string, PodColumnBase>>(schema: SolidSchema<TColumns>, options: InstantiateTableOptions): PodTable<TColumns>;
|
|
123
|
+
select<TTable extends PodTable>(fields?: SelectFieldMap): SelectQueryBuilder<TTable>;
|
|
124
|
+
insert<TTable extends PodTable>(table: TTable): InsertQueryBuilder<TTable>;
|
|
125
|
+
update<TTable extends PodTable>(table: TTable): UpdateQueryBuilder<TTable>;
|
|
126
|
+
delete<TTable extends PodTable>(table: TTable): DeleteQueryBuilder<TTable>;
|
|
90
127
|
execute(query: string): Promise<unknown[]>;
|
|
91
128
|
executeSPARQL(query: string): Promise<unknown[]>;
|
|
92
129
|
batch<TOperations extends readonly unknown[]>(operations: TOperations): Promise<{
|
|
93
130
|
[K in keyof TOperations]: Awaited<TOperations[K]>;
|
|
94
131
|
}>;
|
|
95
|
-
findFirst<TTable extends PodTable
|
|
132
|
+
findFirst<TTable extends PodTable>(table: TTable, where?: PublicWhereObject): Promise<InferTableData<TTable> | null>;
|
|
133
|
+
private getLocatorTemplate;
|
|
134
|
+
private getRequiredLocatorKeys;
|
|
135
|
+
private resolveLocatorSubject;
|
|
136
|
+
findByLocator<TTable extends PodTable>(table: TTable, locator: EntityLocator): Promise<InferTableData<TTable> | null>;
|
|
96
137
|
/**
|
|
97
138
|
* 通过完整 IRI 查询单个实体
|
|
98
139
|
*
|
|
@@ -112,7 +153,7 @@ export declare class PodDatabase<TSchema extends Record<string, unknown> = Recor
|
|
|
112
153
|
* db.findByIri(agentTable, contact.entityUri)
|
|
113
154
|
* ```
|
|
114
155
|
*/
|
|
115
|
-
findByIri<TTable extends PodTable
|
|
156
|
+
findByIri<TTable extends PodTable>(table: TTable, iri: string): Promise<InferTableData<TTable> | null>;
|
|
116
157
|
/**
|
|
117
158
|
* 解析 IRI 为文档 URL 和 fragment
|
|
118
159
|
*/
|
|
@@ -147,7 +188,7 @@ export declare class PodDatabase<TSchema extends Record<string, unknown> = Recor
|
|
|
147
188
|
* unsubscribe()
|
|
148
189
|
* ```
|
|
149
190
|
*/
|
|
150
|
-
subscribeByIri<TTable extends PodTable
|
|
191
|
+
subscribeByIri<TTable extends PodTable>(table: TTable, iri: string, options: EntitySubscribeOptions<InferTableData<TTable>>): Promise<() => void>;
|
|
151
192
|
/**
|
|
152
193
|
* 通过完整 IRI 更新单个实体
|
|
153
194
|
*
|
|
@@ -165,7 +206,8 @@ export declare class PodDatabase<TSchema extends Record<string, unknown> = Recor
|
|
|
165
206
|
* )
|
|
166
207
|
* ```
|
|
167
208
|
*/
|
|
168
|
-
updateByIri<TTable extends PodTable
|
|
209
|
+
updateByIri<TTable extends PodTable>(table: TTable, iri: string, data: Partial<Omit<InferTableData<TTable>, '@id' | 'id'>>): Promise<InferTableData<TTable> | null>;
|
|
210
|
+
updateByLocator<TTable extends PodTable>(table: TTable, locator: EntityLocator, data: Partial<Omit<InferTableData<TTable>, '@id' | 'id'>>): Promise<InferTableData<TTable> | null>;
|
|
169
211
|
/**
|
|
170
212
|
* 通过完整 IRI 删除单个实体
|
|
171
213
|
*
|
|
@@ -181,7 +223,8 @@ export declare class PodDatabase<TSchema extends Record<string, unknown> = Recor
|
|
|
181
223
|
* )
|
|
182
224
|
* ```
|
|
183
225
|
*/
|
|
184
|
-
deleteByIri<TTable extends PodTable
|
|
226
|
+
deleteByIri<TTable extends PodTable>(table: TTable, iri: string): Promise<boolean>;
|
|
227
|
+
deleteByLocator<TTable extends PodTable>(table: TTable, locator: EntityLocator): Promise<boolean>;
|
|
185
228
|
transaction<T>(transaction: (tx: PodDatabase<TSchema>) => Promise<T>): Promise<T>;
|
|
186
229
|
getDialect(): PodDialect;
|
|
187
230
|
getSession(): PodAsyncSession;
|
|
@@ -222,7 +265,7 @@ export declare class PodDatabase<TSchema extends Record<string, unknown> = Recor
|
|
|
222
265
|
* subscription.unsubscribe();
|
|
223
266
|
* ```
|
|
224
267
|
*/
|
|
225
|
-
subscribe<TTable extends PodTable
|
|
268
|
+
subscribe<TTable extends PodTable>(table: TTable, options: TableSubscribeOptions): Promise<Subscription>;
|
|
226
269
|
/**
|
|
227
270
|
* 解析表对应的订阅主题 URL
|
|
228
271
|
* @param table 表定义
|
|
@@ -365,21 +408,22 @@ export declare class PodDatabase<TSchema extends Record<string, unknown> = Recor
|
|
|
365
408
|
removeSource(source: string): void;
|
|
366
409
|
getSources(): string[];
|
|
367
410
|
addSourcesFromTypeIndex(): Promise<void>;
|
|
368
|
-
init<TTable extends PodTable<
|
|
369
|
-
init<TTable extends PodTable<
|
|
411
|
+
init<TColumns extends Record<string, GenericPodColumn>, TTable extends PodTable<TColumns>>(tables: TTable | TTable[], options?: InitOptions): Promise<void>;
|
|
412
|
+
init<TColumns extends Record<string, GenericPodColumn>, TTable extends PodTable<TColumns>>(...tables: Array<TTable | TTable[]>): Promise<void>;
|
|
370
413
|
private queryProxy?;
|
|
371
|
-
get query():
|
|
414
|
+
get query(): QueryProxy<TSchema>;
|
|
372
415
|
private buildQueryProxy;
|
|
373
416
|
private eagerLoadWith;
|
|
374
417
|
private dedupeBySubject;
|
|
375
418
|
private resolveIdFromRow;
|
|
376
419
|
private resolveParentKey;
|
|
377
420
|
private resolveIriFromRow;
|
|
378
|
-
private
|
|
379
|
-
private
|
|
421
|
+
private collectLinkLookupKeys;
|
|
422
|
+
private normalizeLinkValue;
|
|
380
423
|
private normalizeLiteralValue;
|
|
381
|
-
private
|
|
424
|
+
private collectInverseLinkValues;
|
|
382
425
|
private groupRowsByIri;
|
|
383
426
|
private extractFragment;
|
|
384
427
|
}
|
|
428
|
+
export {};
|
|
385
429
|
//# sourceMappingURL=pod-database.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pod-database.d.ts","sourceRoot":"","sources":["../../src/core/pod-database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EACL,eAAe,EACf,KAAK,cAAc,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAiB,KAAK,cAAc,EAAE,aAAa,EAA2B,KAAK,uBAAuB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"pod-database.d.ts","sourceRoot":"","sources":["../../src/core/pod-database.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,6 +40,15 @@ const schema_1 = require("./schema");
|
|
|
40
40
|
const query_conditions_1 = require("./query-conditions");
|
|
41
41
|
const notifications_1 = require("./notifications");
|
|
42
42
|
const federated_1 = require("./federated");
|
|
43
|
+
function isRecord(value) {
|
|
44
|
+
return typeof value === 'object' && value !== null;
|
|
45
|
+
}
|
|
46
|
+
function isPodTable(value) {
|
|
47
|
+
return isRecord(value) && 'columns' in value && 'config' in value;
|
|
48
|
+
}
|
|
49
|
+
function hasStringValue(value) {
|
|
50
|
+
return isRecord(value) && typeof value.value === 'string';
|
|
51
|
+
}
|
|
43
52
|
class PodDatabase {
|
|
44
53
|
constructor(dialect, session, schema) {
|
|
45
54
|
this.dialect = dialect;
|
|
@@ -124,9 +133,9 @@ class PodDatabase {
|
|
|
124
133
|
if (options.hooks) {
|
|
125
134
|
table.config.hooks = options.hooks;
|
|
126
135
|
}
|
|
127
|
-
// Store
|
|
136
|
+
// Store db handle in table for hook context
|
|
128
137
|
// This allows hooks to access db when invoked
|
|
129
|
-
table
|
|
138
|
+
Reflect.set(table, '_db', this);
|
|
130
139
|
return table;
|
|
131
140
|
}
|
|
132
141
|
// SELECT 查询
|
|
@@ -173,6 +182,42 @@ class PodDatabase {
|
|
|
173
182
|
const rows = await builder;
|
|
174
183
|
return rows.length > 0 ? rows[0] : null;
|
|
175
184
|
}
|
|
185
|
+
getLocatorTemplate(table) {
|
|
186
|
+
return table.getSubjectTemplate?.() ?? table.config?.subjectTemplate ?? '{id}';
|
|
187
|
+
}
|
|
188
|
+
getRequiredLocatorKeys(table) {
|
|
189
|
+
const template = this.getLocatorTemplate(table);
|
|
190
|
+
const keys = Array.from(template.matchAll(/\{([^}]+)\}/g))
|
|
191
|
+
.map((match) => match[1])
|
|
192
|
+
.filter((key) => key !== 'index');
|
|
193
|
+
return Array.from(new Set(keys));
|
|
194
|
+
}
|
|
195
|
+
resolveLocatorSubject(table, locator, methodName) {
|
|
196
|
+
if (!isRecord(locator) || Array.isArray(locator)) {
|
|
197
|
+
throw new Error(`${methodName} requires a locator object`);
|
|
198
|
+
}
|
|
199
|
+
if ('@id' in locator) {
|
|
200
|
+
throw new Error(`${methodName} does not accept '@id'. Use ${methodName.replace('Locator', 'Iri')}(table, iri) instead.`);
|
|
201
|
+
}
|
|
202
|
+
const idValue = locator.id;
|
|
203
|
+
if (typeof idValue === 'string' && (idValue.startsWith('http://') || idValue.startsWith('https://'))) {
|
|
204
|
+
throw new Error(`${methodName} does not accept a full IRI in locator.id. Use ${methodName.replace('Locator', 'Iri')}(table, iri) instead.`);
|
|
205
|
+
}
|
|
206
|
+
const requiredKeys = this.getRequiredLocatorKeys(table);
|
|
207
|
+
const missingKeys = requiredKeys.filter((key) => locator[key] === undefined || locator[key] === null);
|
|
208
|
+
if (missingKeys.length > 0) {
|
|
209
|
+
const template = this.getLocatorTemplate(table);
|
|
210
|
+
throw new Error(`${methodName} requires a complete locator for subjectTemplate '${template}'. ` +
|
|
211
|
+
`Missing [${missingKeys.join(', ')}]. ` +
|
|
212
|
+
`Use ${methodName.replace('Locator', 'Iri')}(table, iri) when you already have a full IRI.`);
|
|
213
|
+
}
|
|
214
|
+
const resolver = this.dialect.getResolver(table);
|
|
215
|
+
return resolver.resolveSubject(table, locator);
|
|
216
|
+
}
|
|
217
|
+
async findByLocator(table, locator) {
|
|
218
|
+
const iri = this.resolveLocatorSubject(table, locator, 'findByLocator');
|
|
219
|
+
return await this.findByIri(table, iri);
|
|
220
|
+
}
|
|
176
221
|
/**
|
|
177
222
|
* 通过完整 IRI 查询单个实体
|
|
178
223
|
*
|
|
@@ -196,14 +241,11 @@ class PodDatabase {
|
|
|
196
241
|
if (!iri || typeof iri !== 'string') {
|
|
197
242
|
throw new Error('findByIri requires a valid IRI string');
|
|
198
243
|
}
|
|
199
|
-
//
|
|
200
|
-
|
|
201
|
-
// 用 schema.table(documentUrl) 创建指向目标位置的表
|
|
202
|
-
const targetTable = table.$schema.table('target', { base: documentUrl });
|
|
203
|
-
// 使用 whereByIri 内部方法
|
|
244
|
+
// 保持原始表上下文,让 subjectTemplate/base 反解保持一致。
|
|
245
|
+
// whereByIri() 已经会把 SELECT 精确定位到目标资源,不需要把表重绑到具体文档。
|
|
204
246
|
const rows = await this.session
|
|
205
247
|
.select()
|
|
206
|
-
.from(
|
|
248
|
+
.from(table)
|
|
207
249
|
.whereByIri(iri)
|
|
208
250
|
.limit(1);
|
|
209
251
|
return (rows[0] ?? null);
|
|
@@ -318,18 +360,19 @@ class PodDatabase {
|
|
|
318
360
|
if (!iri.startsWith('http://') && !iri.startsWith('https://')) {
|
|
319
361
|
throw new Error(`updateByIri requires an absolute IRI, got: ${iri}`);
|
|
320
362
|
}
|
|
321
|
-
|
|
322
|
-
const { documentUrl } = this.parseIri(iri);
|
|
323
|
-
// 用 schema.table(documentUrl) 创建指向目标位置的表
|
|
324
|
-
const targetTable = table.$schema.table('target', { base: documentUrl });
|
|
363
|
+
const updateData = data;
|
|
325
364
|
// 使用 whereByIri 内部方法进行更新
|
|
326
365
|
await this.session
|
|
327
|
-
.update(
|
|
328
|
-
.set(
|
|
366
|
+
.update(table)
|
|
367
|
+
.set(updateData)
|
|
329
368
|
.whereByIri(iri);
|
|
330
369
|
// 返回更新后的数据
|
|
331
370
|
return await this.findByIri(table, iri);
|
|
332
371
|
}
|
|
372
|
+
async updateByLocator(table, locator, data) {
|
|
373
|
+
const iri = this.resolveLocatorSubject(table, locator, 'updateByLocator');
|
|
374
|
+
return await this.updateByIri(table, iri, data);
|
|
375
|
+
}
|
|
333
376
|
/**
|
|
334
377
|
* 通过完整 IRI 删除单个实体
|
|
335
378
|
*
|
|
@@ -357,16 +400,16 @@ class PodDatabase {
|
|
|
357
400
|
if (!existing) {
|
|
358
401
|
return false;
|
|
359
402
|
}
|
|
360
|
-
// 解析文档 URL
|
|
361
|
-
const { documentUrl } = this.parseIri(iri);
|
|
362
|
-
// 用 schema.table(documentUrl) 创建指向目标位置的表
|
|
363
|
-
const targetTable = table.$schema.table('target', { base: documentUrl });
|
|
364
403
|
// 使用 whereByIri 内部方法进行删除
|
|
365
404
|
await this.session
|
|
366
|
-
.delete(
|
|
405
|
+
.delete(table)
|
|
367
406
|
.whereByIri(iri);
|
|
368
407
|
return true;
|
|
369
408
|
}
|
|
409
|
+
async deleteByLocator(table, locator) {
|
|
410
|
+
const iri = this.resolveLocatorSubject(table, locator, 'deleteByLocator');
|
|
411
|
+
return await this.deleteByIri(table, iri);
|
|
412
|
+
}
|
|
370
413
|
// 事务支持
|
|
371
414
|
async transaction(transaction) {
|
|
372
415
|
return await this.session.transaction(async (txSession) => {
|
|
@@ -866,7 +909,7 @@ class PodDatabase {
|
|
|
866
909
|
: [];
|
|
867
910
|
const tableMap = new Map();
|
|
868
911
|
for (const [key, value] of schemaEntries) {
|
|
869
|
-
if (value
|
|
912
|
+
if (isPodTable(value)) {
|
|
870
913
|
tableMap.set(key, value);
|
|
871
914
|
}
|
|
872
915
|
}
|
|
@@ -933,39 +976,54 @@ class PodDatabase {
|
|
|
933
976
|
if (options?.with && Object.keys(options.with).length > 0) {
|
|
934
977
|
rows = await this.eagerLoadWith(rows, table, options.with, tableMap);
|
|
935
978
|
}
|
|
936
|
-
|
|
937
|
-
|
|
979
|
+
const columns = options?.columns;
|
|
980
|
+
if (columns) {
|
|
981
|
+
rows = rows.map((row) => projectColumns(row, columns, options.with));
|
|
938
982
|
}
|
|
939
983
|
return rows;
|
|
940
984
|
};
|
|
941
985
|
const findMany = (options) => createLazy(() => executeFindMany(options));
|
|
986
|
+
const applyExactOptions = async (row, options) => {
|
|
987
|
+
if (!row) {
|
|
988
|
+
return null;
|
|
989
|
+
}
|
|
990
|
+
let rows = [row];
|
|
991
|
+
if (options?.with && Object.keys(options.with).length > 0) {
|
|
992
|
+
rows = await this.eagerLoadWith(rows, table, options.with, tableMap);
|
|
993
|
+
}
|
|
994
|
+
const columns = options?.columns;
|
|
995
|
+
if (columns) {
|
|
996
|
+
rows = rows.map((item) => projectColumns(item, columns, options.with));
|
|
997
|
+
}
|
|
998
|
+
return (rows[0] ?? null);
|
|
999
|
+
};
|
|
942
1000
|
const findFirst = (options) => createLazy(async () => {
|
|
943
1001
|
const rows = await executeFindMany({ ...options, limit: 1 });
|
|
944
1002
|
return rows[0] ?? null;
|
|
945
1003
|
});
|
|
946
|
-
const findById = (id, options) => createLazy(async () => await findFirst({ ...options, where: { ...(options?.where ?? {}), id } }));
|
|
947
1004
|
const count = (options) => createLazy(async () => {
|
|
948
1005
|
const rows = await executeFindMany({ where: options?.where, columns: undefined, limit: undefined, offset: undefined });
|
|
949
1006
|
return rows.length;
|
|
950
1007
|
});
|
|
951
|
-
const
|
|
952
|
-
|
|
953
|
-
return createLazy(async () => await this.findByIri(table, iri));
|
|
954
|
-
};
|
|
1008
|
+
const createFindByLocator = () => (locator, options) => createLazy(async () => await applyExactOptions(await this.findByLocator(table, locator), options));
|
|
1009
|
+
const createFindByIri = () => (iri, options) => createLazy(async () => await applyExactOptions(await this.findByIri(table, iri), options));
|
|
955
1010
|
return {
|
|
956
1011
|
findMany,
|
|
957
1012
|
findFirst,
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
findByIRI: createFindByIRI(),
|
|
1013
|
+
findByLocator: createFindByLocator(),
|
|
1014
|
+
findByIri: createFindByIri(),
|
|
961
1015
|
count
|
|
962
1016
|
};
|
|
963
1017
|
};
|
|
964
1018
|
const proxyTarget = {};
|
|
965
1019
|
return new Proxy(proxyTarget, {
|
|
966
1020
|
get: (_, prop) => {
|
|
967
|
-
if (
|
|
968
|
-
return
|
|
1021
|
+
if (typeof prop !== 'string') {
|
|
1022
|
+
return undefined;
|
|
1023
|
+
}
|
|
1024
|
+
const table = tableMap.get(prop);
|
|
1025
|
+
if (table) {
|
|
1026
|
+
return createHelper(prop, table);
|
|
969
1027
|
}
|
|
970
1028
|
return undefined;
|
|
971
1029
|
}
|
|
@@ -1022,29 +1080,29 @@ class PodDatabase {
|
|
|
1022
1080
|
const candidateColumns = relationDef?.fields && relationDef.fields.length > 0
|
|
1023
1081
|
? relationDef.fields
|
|
1024
1082
|
: Object.values(targetPodTable.columns ?? {});
|
|
1025
|
-
const
|
|
1026
|
-
col.options?.
|
|
1027
|
-
col.
|
|
1028
|
-
const
|
|
1029
|
-
col.options?.
|
|
1030
|
-
col.
|
|
1031
|
-
const
|
|
1083
|
+
const matchesParentLink = (col) => Boolean(col && (col.options?.linkTarget === parentTable.config.type ||
|
|
1084
|
+
col.options?.linkTable === parentTable ||
|
|
1085
|
+
col.getLinkTable?.() === parentTable));
|
|
1086
|
+
const matchesTargetLink = (col) => Boolean(col && (col.options?.linkTarget === targetType ||
|
|
1087
|
+
col.options?.linkTable === targetPodTable ||
|
|
1088
|
+
col.getLinkTable?.() === targetPodTable));
|
|
1089
|
+
const linkColumns = relationDef?.fields && relationDef.fields.length > 0
|
|
1032
1090
|
? candidateColumns
|
|
1033
|
-
: candidateColumns.filter((col) =>
|
|
1034
|
-
if (
|
|
1035
|
-
const
|
|
1036
|
-
const explicitInverse =
|
|
1091
|
+
: candidateColumns.filter((col) => matchesParentLink(col) && !col.isInverse?.());
|
|
1092
|
+
if (linkColumns.length === 0) {
|
|
1093
|
+
const relationReferenceFields = relationDef?.references ?? [];
|
|
1094
|
+
const explicitInverse = relationReferenceFields.filter((col) => Boolean(col &&
|
|
1037
1095
|
typeof col.isInverse === 'function' &&
|
|
1038
1096
|
col.isInverse() &&
|
|
1039
|
-
|
|
1097
|
+
matchesTargetLink(col)));
|
|
1040
1098
|
const parentColumns = Object.values(parentTable.columns ?? {});
|
|
1041
1099
|
const inverseCandidates = (explicitInverse.length > 0 ? explicitInverse : parentColumns).filter((col) => typeof col.isInverse === 'function' &&
|
|
1042
1100
|
col.isInverse() &&
|
|
1043
|
-
|
|
1101
|
+
matchesTargetLink(col));
|
|
1044
1102
|
if (inverseCandidates.length === 0) {
|
|
1045
1103
|
continue;
|
|
1046
1104
|
}
|
|
1047
|
-
const inverseValuesPerRow = dedupedRows.map((row) => this.
|
|
1105
|
+
const inverseValuesPerRow = dedupedRows.map((row) => this.collectInverseLinkValues(row, inverseCandidates));
|
|
1048
1106
|
const uniqueIris = Array.from(new Set(inverseValuesPerRow
|
|
1049
1107
|
.flat()
|
|
1050
1108
|
.filter((iri) => typeof iri === 'string' && iri.length > 0)));
|
|
@@ -1071,17 +1129,17 @@ class PodDatabase {
|
|
|
1071
1129
|
});
|
|
1072
1130
|
continue;
|
|
1073
1131
|
}
|
|
1074
|
-
const refColumn =
|
|
1075
|
-
const
|
|
1076
|
-
const
|
|
1132
|
+
const refColumn = linkColumns[0];
|
|
1133
|
+
const linkColumn = relationDef?.references && relationDef.references[0];
|
|
1134
|
+
const useLinkIri = refColumn.isLink();
|
|
1077
1135
|
const parentKeys = dedupedRows
|
|
1078
|
-
.map((row) => this.resolveParentKey(row,
|
|
1136
|
+
.map((row) => this.resolveParentKey(row, linkColumn, useLinkIri))
|
|
1079
1137
|
.filter((value) => typeof value === 'string' && value.length > 0);
|
|
1080
1138
|
if (parentKeys.length === 0) {
|
|
1081
1139
|
continue;
|
|
1082
1140
|
}
|
|
1083
1141
|
let childBuilder = this.session.select().from(targetPodTable);
|
|
1084
|
-
if (
|
|
1142
|
+
if (useLinkIri) {
|
|
1085
1143
|
childBuilder = childBuilder.where((0, query_conditions_1.inArray)(refColumn, parentKeys));
|
|
1086
1144
|
}
|
|
1087
1145
|
else {
|
|
@@ -1091,9 +1149,10 @@ class PodDatabase {
|
|
|
1091
1149
|
const grouped = new Map();
|
|
1092
1150
|
for (const child of childRows) {
|
|
1093
1151
|
const fkValue = child[refColumn.name];
|
|
1094
|
-
const
|
|
1095
|
-
|
|
1096
|
-
|
|
1152
|
+
const normalizedFkValue = this.normalizeLiteralValue(fkValue);
|
|
1153
|
+
const lookupKeys = useLinkIri
|
|
1154
|
+
? this.collectLinkLookupKeys(fkValue)
|
|
1155
|
+
: (normalizedFkValue ? [normalizedFkValue] : []);
|
|
1097
1156
|
for (const lookupKey of lookupKeys) {
|
|
1098
1157
|
const arr = grouped.get(lookupKey) ?? [];
|
|
1099
1158
|
arr.push(child);
|
|
@@ -1101,12 +1160,12 @@ class PodDatabase {
|
|
|
1101
1160
|
}
|
|
1102
1161
|
}
|
|
1103
1162
|
dedupedRows.forEach((row) => {
|
|
1104
|
-
const parentKeys =
|
|
1163
|
+
const parentKeys = useLinkIri
|
|
1105
1164
|
? Array.from(new Set([
|
|
1106
|
-
this.resolveParentKey(row,
|
|
1165
|
+
this.resolveParentKey(row, linkColumn, true),
|
|
1107
1166
|
this.resolveIdFromRow(row),
|
|
1108
1167
|
].filter((value) => typeof value === 'string' && value.length > 0)))
|
|
1109
|
-
: [this.resolveParentKey(row,
|
|
1168
|
+
: [this.resolveParentKey(row, linkColumn, false)].filter((value) => typeof value === 'string' && value.length > 0);
|
|
1110
1169
|
const related = [];
|
|
1111
1170
|
for (const parentKey of parentKeys) {
|
|
1112
1171
|
const matches = grouped.get(parentKey) ?? [];
|
|
@@ -1137,6 +1196,9 @@ class PodDatabase {
|
|
|
1137
1196
|
continue;
|
|
1138
1197
|
}
|
|
1139
1198
|
const target = merged.get(key);
|
|
1199
|
+
if (!target) {
|
|
1200
|
+
continue;
|
|
1201
|
+
}
|
|
1140
1202
|
for (const [col, value] of Object.entries(row)) {
|
|
1141
1203
|
if (value === undefined)
|
|
1142
1204
|
continue;
|
|
@@ -1156,7 +1218,9 @@ class PodDatabase {
|
|
|
1156
1218
|
target[col] = mergedArr.length === 1 ? mergedArr[0] : mergedArr;
|
|
1157
1219
|
}
|
|
1158
1220
|
}
|
|
1159
|
-
return order
|
|
1221
|
+
return order
|
|
1222
|
+
.map((key) => merged.get(key))
|
|
1223
|
+
.filter((row) => row !== undefined);
|
|
1160
1224
|
}
|
|
1161
1225
|
resolveIdFromRow(row) {
|
|
1162
1226
|
if (!row)
|
|
@@ -1170,12 +1234,12 @@ class PodDatabase {
|
|
|
1170
1234
|
}
|
|
1171
1235
|
return undefined;
|
|
1172
1236
|
}
|
|
1173
|
-
resolveParentKey(row,
|
|
1174
|
-
if (
|
|
1175
|
-
const value = row[
|
|
1176
|
-
return
|
|
1237
|
+
resolveParentKey(row, linkColumn, useLinkIri) {
|
|
1238
|
+
if (linkColumn) {
|
|
1239
|
+
const value = row[linkColumn.name];
|
|
1240
|
+
return useLinkIri ? this.normalizeLinkValue(value) : this.normalizeLiteralValue(value);
|
|
1177
1241
|
}
|
|
1178
|
-
return
|
|
1242
|
+
return useLinkIri ? this.resolveIriFromRow(row) : this.resolveIdFromRow(row);
|
|
1179
1243
|
}
|
|
1180
1244
|
resolveIriFromRow(row) {
|
|
1181
1245
|
if (!row)
|
|
@@ -1188,9 +1252,9 @@ class PodDatabase {
|
|
|
1188
1252
|
}
|
|
1189
1253
|
return undefined;
|
|
1190
1254
|
}
|
|
1191
|
-
|
|
1255
|
+
collectLinkLookupKeys(value) {
|
|
1192
1256
|
const keys = [];
|
|
1193
|
-
const normalized = this.
|
|
1257
|
+
const normalized = this.normalizeLinkValue(value) ?? this.normalizeLiteralValue(value);
|
|
1194
1258
|
if (normalized) {
|
|
1195
1259
|
keys.push(normalized);
|
|
1196
1260
|
const fragment = this.extractFragment(normalized);
|
|
@@ -1200,13 +1264,13 @@ class PodDatabase {
|
|
|
1200
1264
|
}
|
|
1201
1265
|
return keys;
|
|
1202
1266
|
}
|
|
1203
|
-
|
|
1267
|
+
normalizeLinkValue(value) {
|
|
1204
1268
|
if (!value)
|
|
1205
1269
|
return undefined;
|
|
1206
1270
|
if (typeof value === 'string') {
|
|
1207
1271
|
return value;
|
|
1208
1272
|
}
|
|
1209
|
-
if (
|
|
1273
|
+
if (hasStringValue(value)) {
|
|
1210
1274
|
return value.value;
|
|
1211
1275
|
}
|
|
1212
1276
|
return undefined;
|
|
@@ -1218,12 +1282,12 @@ class PodDatabase {
|
|
|
1218
1282
|
if (typeof value === 'string') {
|
|
1219
1283
|
return value;
|
|
1220
1284
|
}
|
|
1221
|
-
if (
|
|
1285
|
+
if (hasStringValue(value)) {
|
|
1222
1286
|
return value.value;
|
|
1223
1287
|
}
|
|
1224
1288
|
return undefined;
|
|
1225
1289
|
}
|
|
1226
|
-
|
|
1290
|
+
collectInverseLinkValues(row, columns) {
|
|
1227
1291
|
if (!columns.length) {
|
|
1228
1292
|
return [];
|
|
1229
1293
|
}
|
|
@@ -1234,7 +1298,7 @@ class PodDatabase {
|
|
|
1234
1298
|
continue;
|
|
1235
1299
|
}
|
|
1236
1300
|
const appendValue = (entry) => {
|
|
1237
|
-
const normalized = this.
|
|
1301
|
+
const normalized = this.normalizeLinkValue(entry) ?? (typeof entry === 'string' ? entry : undefined);
|
|
1238
1302
|
if (normalized) {
|
|
1239
1303
|
collected.push(normalized);
|
|
1240
1304
|
}
|
|
@@ -1251,8 +1315,8 @@ class PodDatabase {
|
|
|
1251
1315
|
groupRowsByIri(rows) {
|
|
1252
1316
|
const grouped = new Map();
|
|
1253
1317
|
for (const row of rows) {
|
|
1254
|
-
const iri = this.
|
|
1255
|
-
this.
|
|
1318
|
+
const iri = this.normalizeLinkValue(row['@id']) ??
|
|
1319
|
+
this.normalizeLinkValue(row.uri) ??
|
|
1256
1320
|
(typeof row['@id'] === 'string' ? row['@id'] : undefined);
|
|
1257
1321
|
if (!iri) {
|
|
1258
1322
|
continue;
|