cpsQueryV2.yml |
Code Block |
---|
language | xml |
---|
title | cpsQueryV2.yml |
---|
linenumbers | true |
---|
collapse | true |
---|
| nodesByDataspaceAndCpsPath: |
|
|
description: Query data nodes for all anchors of a given dataspace using CPS path |
|
|
|
summary: Query data nodes across all anchors |
|
operationId: getNodesByDataspaceAndCpsPath |
|
|
- $ref: 'components.yml#/components/parameters/dataspaceNameInPath' |
|
- $ref: 'components.yml#/components/parameters/cpsPathInQuery' |
|
- $ref: 'components.yml#/components/parameters/descendantsInQuery' |
|
|
|
|
|
|
|
|
|
|
$ref: 'components.yml#/components/examples/dataSample' |
|
|
$ref: 'components.yml#/components/responses/BadRequest' |
|
|
$ref: 'components.yml#/components/responses/Unauthorized' |
|
|
$ref: 'components.yml#/components/responses/Forbidden' |
|
|
$ref: 'components.yml#/components/responses/InternalServerError' |
|
x-codegen-request-body-name: xpath |
|
FragmentRepositoryCpsPathQueryImpl.java | | @Override
@Transactional
public List<FragmentEntity>language | java |
---|
title | FragmentRepositoryCpsPathQueryImpl.java |
---|
| @Override
@Transactional
public List<FragmentEntity> findByCpsPath(final CpsPathQuery cpsPathQuery) { |
|
final StringBuilder sqlStringBuilder = new StringBuilder("SELECT * FROM FRAGMENT"); |
|
| Map<String | Object>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); |
|
| List<FragmentEntity>List<FragmentEntity> fragmentEntities = query.getResultList(); |
|
log.debug("Fetched {} fragment entities by anchor and cps path.", fragmentEntities.size()); |
|
|
|