...
[
{
"test:bookstore": {
"bookstore-name": "Chapters",
"categories": [
{
"code": 1,
"name": "SciFi"
},
{
"code": 2,
"name": "kids"
}
]
}
},
{"test:bookstore2": {
"bookstore-name": "Chapters2",
"categories": [
{
"code": 1,
"name": "SciFi"
}
]
}
}
]
code changes as below:
file |
|
---|
openapi.yml | add new endpoint: / |
{version:v[1-2]}v2/dataspaces/{dataspace-name}/nodes/query: $ref: ' |
cpsQuerycpsQueryV2.yml#/nodesByDataspaceAndCpsPath' |
cpsQuerycpsQueryV2.yml | nodesByDataspaceAndCpsPath: get: description: Query data nodes for all anchors of a given dataspace using CPS path tags: - cps-query summary: Query data nodes across all anchors operationId: getNodesByDataspaceAndCpsPath parameters: - $ref: 'components.yml#/components/parameters/dataspaceNameInPath' - $ref: 'components.yml#/components/parameters/cpsPathInQuery' - $ref: 'components.yml#/components/parameters/ |
includeDescendantsOptionInQuerydescendantsInQuery' responses: '200': description: OK content: application/json: schema: type: array examples: dataSample: $ref: 'components.yml#/components/examples/dataSample' '400': $ref: 'components.yml#/components/responses/BadRequest' '401': $ref: 'components.yml#/components/responses/Unauthorized' '403': $ref: 'components.yml#/components/responses/Forbidden' '500': $ref: 'components.yml#/components/responses/InternalServerError' x-codegen-request-body-name: xpath |
FragmentRepositoryCpsPathQueryImpl.java | @Override @Transactional public List<FragmentEntity> findByCpsPath(final CpsPathQuery cpsPathQuery) { final StringBuilder sqlStringBuilder = new StringBuilder("SELECT * FROM FRAGMENT"); final Map<String, Object> queryParameters = new HashMap<>(); sqlStringBuilder.append(" WHERE xpath ~ :xpathRegex"); final String xpathRegex = getXpathSqlRegex(cpsPathQuery); queryParameters.put("xpathRegex", xpathRegex); if (cpsPathQuery.hasLeafConditions()) { sqlStringBuilder.append(" AND attributes @> :leafDataAsJson\\:\\:jsonb"); queryParameters.put("leafDataAsJson", jsonObjectMapper.asJsonString( cpsPathQuery.getLeavesData())); }
addTextFunctionCondition(cpsPathQuery, sqlStringBuilder, queryParameters); final Query query = entityManager.createNativeQuery(sqlStringBuilder.toString(), FragmentEntity.class); setQueryParameters(query, queryParameters); final List<FragmentEntity> fragmentEntities = query.getResultList(); log.debug("Fetched {} fragment entities by anchor and cps path.", fragmentEntities.size()); return fragmentEntities; } |
|
|