You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 19 Next »

Background

To query large outputs or large number of fragments across all anchors, we need to provide pagination for Query API( query data nodes across all anchors). it will help client to fetch limited set of data per request. below is two possible solutions for further discussions to decide appropriate choice.  

Pagination over fragments 

Implementation

API : GET http://<IP>:<PORT>/cps/api/v2/dataspaces/{dataspace-name}/nodes/query?cps-path={cps-path}&descendants={descendants}&pageIndex={pageIndex}&pageSize={pageSize}

Request Parameters:

ParameterisRequiredDescription
cps-pathyesnode path to be queried
descendantsnoNumber of descendants to be queried. default is none
pageIndexnopage index starting from 1. 
resultSizenonumber of fragments per page starting from 10 (TBD). 

Query

QueryDescription
SELECT id, anchor_id AS anchorId, xpath, parent_id AS parentId, CAST(attributes AS TEXT) AS attributes FROM FRAGMENT WHERE xpath ~ :xpathRegex ORDERED BY id LIMIT :resultSize OFFSET  (:resultIndex - 1) * :resultSize Query limited fragments in order of fragment id


Pagination over anchors

we can provide pagination over anchors where client can choose number of anchors per request to fetch fragments from. 

Implementation

API : GET http://<IP>:<PORT>/cps/api/v2/dataspaces/{dataspace-name}/nodes/query?cps-path={cps-path}&descendants={descendants}&pageIndex={pageIndex}&resultSize={resultSize}

Request Parameters:

ParameterisRequiredDescription
cps-pathyesnode path to be queried
descendantsnoNumber of descendants to be queried. default is none
pageIndexnopage index starting from 1. 
resultSizenonumber of records per request. It is nothing but number of anchors to be queried.  Default value is 5(TBD).

Response Headers

Headerdescription
totalResultstotal number of available records (achors)
totalPagestotal nulber of pages.

Query

QueryDescription
SELECT id FROM anchor order by id LIMIT : anchorSize OFFSET : (resultIndex -1) * :anchorSize query list of anchors 
SELECT id, anchor_id AS anchorId, xpath, parent_id AS parentId, CAST(attributes AS TEXT) AS attributes FROM FRAGMENT WHERE anchor_id IN :anchorList AND xpath ~ :xpathRegexquery fragments for list of anchors from above query
  • No labels