4545############################################################################
4646"""
4747from __future__ import unicode_literals
48- import json
48+ from enum import Enum
4949
5050from requests .exceptions import SSLError
5151from labkey .utils import build_url , handle_response
5252
53- _query_headers = {
54- 'Content-Type' : 'application/json'
55- }
53+
54+ class Pagination (Enum ):
55+ paginated = 0
56+ selected = 1
57+ unselected = 2
58+ all = 3
59+ none = 4
5660
5761
5862def delete_rows (schema_name , query_name , rows , server_context , container_path = None ):
@@ -107,15 +111,29 @@ def insert_rows(schema_name, query_name, rows, server_context, container_path=No
107111
108112
109113# TODO: Support all the properties
110- def select_rows (schema_name , query_name , server_context , view_name = None ,
111- filter_array = None , container_path = None , columns = None , max_rows = None , sort = None ,
112- offset = None , container_filter = None ):
114+ def select_rows (schema_name , query_name , server_context ,
115+ view_name = None ,
116+ filter_array = None ,
117+ container_path = None ,
118+ columns = None ,
119+ max_rows = None ,
120+ sort = None ,
121+ offset = None ,
122+ container_filter = None ,
123+ parameters = None ,
124+ show_rows = None ,
125+ include_total_count = None ,
126+ include_details_column = None ,
127+ include_update_column = None ,
128+ # selection_key=None,
129+ timeout = None ,
130+ required_version = None
131+ ):
113132 # TODO: Support data_region_name
114133 url = build_url ('query' , 'getQuery.api' , server_context , container_path = container_path )
115-
116134 payload = {
117135 'schemaName' : schema_name ,
118- 'query.queryName' : query_name
136+ 'query.queryName' : query_name ,
119137 }
120138
121139 # TODO: Roll these checks up
@@ -142,6 +160,27 @@ def select_rows(schema_name, query_name, server_context, view_name=None,
142160 if container_filter is not None :
143161 payload ['query.containerFilter' ] = container_filter
144162
163+ if parameters is not None :
164+ payload ['query.parameters' ] = parameters
165+
166+ if show_rows is not None :
167+ payload ['query.showRows' ] = show_rows
168+
169+ if include_total_count is not None :
170+ payload ['query.includeTotalCount' ] = include_total_count
171+
172+ if include_details_column is not None :
173+ payload ['query.includeDetailsColumn' ] = include_details_column
174+
175+ if include_update_column is not None :
176+ payload ['query.includeUpdateColumn' ] = include_update_column
177+
178+ if timeout is not None :
179+ payload ['query.timeout' ] = timeout
180+
181+ if required_version is not None :
182+ payload ['query.requiredVersion' ] = required_version
183+
145184 select_rows_response = _make_request (server_context , url , payload )
146185 return select_rows_response
147186
@@ -162,7 +201,9 @@ def update_rows(schema_name, query_name, rows, server_context, container_path=No
162201def _make_request (server_context , url , payload ):
163202 try :
164203 session = server_context ['session' ]
165- raw_response = session .post (url , headers = _query_headers , data = json . dumps ( payload ) )
204+ raw_response = session .post (url , data = payload )
166205 return handle_response (raw_response )
167206 except SSLError as e :
168207 raise Exception ('Failed to match server SSL configuration. Ensure the server_context is configured correctly.' )
208+
209+
0 commit comments