ochre-sdk 0.22.3 → 0.22.4
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/index.mjs +28 -25
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -2379,6 +2379,12 @@ function buildPropertyQueryExpression(params) {
|
|
|
2379
2379
|
if (propertyVariable != null) propertyQueryExpressions.unshift(buildPropertyLabelQuery(propertyVariable));
|
|
2380
2380
|
return buildNestedElementQuery(["properties", "property"], buildAndCtsQueryExpressionInternal(propertyQueryExpressions));
|
|
2381
2381
|
}
|
|
2382
|
+
function buildPropertyPresenceQueryExpression(params) {
|
|
2383
|
+
return buildPropertyQueryExpression({
|
|
2384
|
+
propertyVariable: params.propertyVariable,
|
|
2385
|
+
queryExpression: "cts:true-query()"
|
|
2386
|
+
});
|
|
2387
|
+
}
|
|
2382
2388
|
function buildPropertyStringQueryExpression(params) {
|
|
2383
2389
|
const { propertyVariable, value, matchMode, isCaseSensitive, language } = params;
|
|
2384
2390
|
return buildPropertyQueryExpression({
|
|
@@ -2408,7 +2414,7 @@ function buildPropertyScalarQueryExpression(params) {
|
|
|
2408
2414
|
}
|
|
2409
2415
|
function buildPropertyAllQueryExpression(params) {
|
|
2410
2416
|
const { query, value, matchMode } = params;
|
|
2411
|
-
|
|
2417
|
+
return buildPropertyQueryExpression({
|
|
2412
2418
|
propertyVariable: query.propertyVariable,
|
|
2413
2419
|
queryExpression: buildNestedElementQuery(["value"], buildAndCtsQueryExpressionInternal([buildValueNotIdRefQuery(), buildCtsWordQueryExpression({
|
|
2414
2420
|
value,
|
|
@@ -2416,27 +2422,6 @@ function buildPropertyAllQueryExpression(params) {
|
|
|
2416
2422
|
isCaseSensitive: query.isCaseSensitive
|
|
2417
2423
|
})]))
|
|
2418
2424
|
});
|
|
2419
|
-
return buildPropertyQueryExpression({
|
|
2420
|
-
propertyVariable: query.propertyVariable,
|
|
2421
|
-
queryExpression: buildNestedElementQuery(["value"], buildAndCtsQueryExpressionInternal([buildValueNotIdRefQuery(), buildOrCtsQueryExpressionInternal([
|
|
2422
|
-
buildValueRawValueInnerQuery({
|
|
2423
|
-
value,
|
|
2424
|
-
matchMode,
|
|
2425
|
-
isCaseSensitive: query.isCaseSensitive
|
|
2426
|
-
}),
|
|
2427
|
-
buildValueDirectTextInnerQuery({
|
|
2428
|
-
value,
|
|
2429
|
-
matchMode,
|
|
2430
|
-
isCaseSensitive: query.isCaseSensitive
|
|
2431
|
-
}),
|
|
2432
|
-
buildValueContentInnerQuery({
|
|
2433
|
-
language: query.language,
|
|
2434
|
-
value,
|
|
2435
|
-
matchMode,
|
|
2436
|
-
isCaseSensitive: query.isCaseSensitive
|
|
2437
|
-
})
|
|
2438
|
-
])]))
|
|
2439
|
-
});
|
|
2440
2425
|
}
|
|
2441
2426
|
function buildPropertyIdRefQueryExpression(params) {
|
|
2442
2427
|
const { propertyVariable, value } = params;
|
|
@@ -2451,8 +2436,8 @@ function buildPropertyIdRefQueryExpression(params) {
|
|
|
2451
2436
|
}
|
|
2452
2437
|
function buildPropertyDateRangeQueryExpression(query) {
|
|
2453
2438
|
const rangeQueryExpressions = [];
|
|
2454
|
-
if (query.from != null) rangeQueryExpressions.push(`cts:element-attribute-range-query(xs:QName("value"), xs:QName("rawValue"), ">=",
|
|
2455
|
-
if (query.to != null) rangeQueryExpressions.push(`cts:element-attribute-range-query(xs:QName("value"), xs:QName("rawValue"), "<=",
|
|
2439
|
+
if (query.from != null) rangeQueryExpressions.push(`cts:element-attribute-range-query(xs:QName("value"), xs:QName("rawValue"), ">=", ${stringLiteral(query.from)})`);
|
|
2440
|
+
if (query.to != null) rangeQueryExpressions.push(`cts:element-attribute-range-query(xs:QName("value"), xs:QName("rawValue"), "<=", ${stringLiteral(query.to)})`);
|
|
2456
2441
|
return buildPropertyQueryExpression({
|
|
2457
2442
|
propertyVariable: query.propertyVariable,
|
|
2458
2443
|
queryExpression: buildNestedElementQuery(["value"], buildAndCtsQueryExpressionInternal(rangeQueryExpressions))
|
|
@@ -2543,6 +2528,7 @@ function buildLeafValueQueryExpression(params) {
|
|
|
2543
2528
|
}
|
|
2544
2529
|
}
|
|
2545
2530
|
function buildLeafQueryExpression(query) {
|
|
2531
|
+
if (query.target === "property" && query.dataType !== "date" && query.dataType !== "dateTime" && !("value" in query) && query.propertyVariable != null) return buildPropertyPresenceQueryExpression({ propertyVariable: query.propertyVariable });
|
|
2546
2532
|
if (query.target === "property" && (query.dataType === "date" || query.dataType === "dateTime") && query.value == null) return buildPropertyDateRangeQueryExpression(query);
|
|
2547
2533
|
const searchValue = getLeafSearchValue(query);
|
|
2548
2534
|
if (searchValue == null) throw new Error("Missing searchable value for query leaf");
|
|
@@ -2959,6 +2945,23 @@ function getPropertyVariableUuidsFromQueries(queries) {
|
|
|
2959
2945
|
}
|
|
2960
2946
|
return [...propertyVariableUuids];
|
|
2961
2947
|
}
|
|
2948
|
+
function getItemFilterQueriesFromPropertyValueQueries(queries) {
|
|
2949
|
+
if (queries == null) return null;
|
|
2950
|
+
if ("target" in queries) {
|
|
2951
|
+
if (queries.target !== "property") return queries;
|
|
2952
|
+
if (queries.dataType === "date" || queries.dataType === "dateTime") return queries;
|
|
2953
|
+
return "value" in queries && queries.value != null ? queries : null;
|
|
2954
|
+
}
|
|
2955
|
+
const filteredChildren = [];
|
|
2956
|
+
const childQueries = "and" in queries ? queries.and : queries.or;
|
|
2957
|
+
for (const childQuery of childQueries) {
|
|
2958
|
+
const filteredChildQuery = getItemFilterQueriesFromPropertyValueQueries(childQuery);
|
|
2959
|
+
if (filteredChildQuery != null) filteredChildren.push(filteredChildQuery);
|
|
2960
|
+
}
|
|
2961
|
+
if (filteredChildren.length === 0) return null;
|
|
2962
|
+
if (filteredChildren.length === 1) return filteredChildren[0] ?? null;
|
|
2963
|
+
return "and" in queries ? { and: filteredChildren } : { or: filteredChildren };
|
|
2964
|
+
}
|
|
2962
2965
|
/**
|
|
2963
2966
|
* Schema for a single property value query item in the OCHRE API response
|
|
2964
2967
|
*/
|
|
@@ -3040,7 +3043,7 @@ function buildXQuery(params) {
|
|
|
3040
3043
|
if (setScopeUuids.length > 0) setScopeFilter = `/set[(${setScopeUuids.map((uuid) => `@uuid="${uuid}"`).join(" or ")})]/items/*`;
|
|
3041
3044
|
const propertyVariableFilters = getPropertyVariableUuidsFromQueries(queries).map((uuid) => `@uuid="${uuid}"`).join(" or ");
|
|
3042
3045
|
const baseItemsExpression = `doc()/ochre${setScopeFilter}`;
|
|
3043
|
-
const compiledQueryPlan = buildQueryPlan({ queries });
|
|
3046
|
+
const compiledQueryPlan = buildQueryPlan({ queries: getItemFilterQueriesFromPropertyValueQueries(queries) });
|
|
3044
3047
|
const itemsQueryExpressions = [];
|
|
3045
3048
|
const belongsToCollectionQueryExpression = buildBelongsToCollectionQueryExpression(belongsToCollectionScopeUuids, BELONGS_TO_COLLECTION_UUID);
|
|
3046
3049
|
if (compiledQueryPlan.queryExpression != null) itemsQueryExpressions.push(compiledQueryPlan.queryExpression);
|