@@ -54,6 +54,9 @@ def _filtered_rows_server_url(self):
5454 def _row_link_server_url (self ):
5555 return self .api_gateway_url + '/api/v2/dtables/' + self .dtable_uuid + '/links/'
5656
57+ def _query_links_server_url (self ):
58+ return self .api_gateway_url + '/api/v2/dtables/' + self .dtable_uuid + '/query-links/'
59+
5760 def _batch_update_row_link_server_url (self ):
5861 return self ._row_link_server_url ()
5962
@@ -148,7 +151,7 @@ def get_view_by_name(self, table_name, view_name):
148151 response = requests .get (view_url , headers = self .headers , timeout = self .timeout )
149152 return parse_response (response )
150153
151-
154+
152155 def add_view (self , table_name , view_name ):
153156 url = self ._view_server_url ()
154157 view_url = '%(url)s/?table_name=%(table_name)s' % ({
@@ -161,7 +164,7 @@ def add_view(self, table_name, view_name):
161164 response = requests .post (view_url , json = json_data , headers = self .headers , timeout = self .timeout )
162165 return parse_response (response )
163166
164-
167+
165168 def rename_view (self , table_name , view_name , new_view_name ):
166169 url = self ._view_server_url ()
167170 view_url = '%(url)s/%(view_name)s/?table_name=%(table_name)s' % ({
@@ -175,7 +178,7 @@ def rename_view(self, table_name, view_name, new_view_name):
175178 response = requests .put (view_url , json = json_data , headers = self .headers , timeout = self .timeout )
176179 return parse_response (response )
177180
178-
181+
179182 def delete_view (self , table_name , view_name ):
180183 url = self ._view_server_url ()
181184 view_url = '%(url)s/%(view_name)s/?table_name=%(table_name)s' % ({
@@ -186,7 +189,7 @@ def delete_view(self, table_name, view_name):
186189 response = requests .delete (view_url , headers = self .headers , timeout = self .timeout )
187190 return parse_response (response )
188191
189-
192+
190193 def list_rows (self , table_name , view_name = None , order_by = None , desc = False , start = None , limit = None ):
191194 """
192195 :param table_name: str
@@ -218,7 +221,7 @@ def list_rows(self, table_name, view_name=None, order_by=None, desc=False, start
218221 data = parse_response (response )
219222 return data .get ('rows' )
220223
221-
224+
222225 def get_row (self , table_name , row_id ):
223226 """
224227 :param table_name: str
@@ -237,7 +240,7 @@ def get_row(self, table_name, row_id):
237240 data = parse_response (response )
238241 return data
239242
240-
243+
241244 def append_row (self , table_name , row_data , apply_default = None ):
242245 """
243246 :param table_name: str
@@ -256,7 +259,7 @@ def append_row(self, table_name, row_data, apply_default=None):
256259 data = parse_response (response )
257260 return data .get ('first_row' )
258261
259-
262+
260263 def batch_append_rows (self , table_name , rows_data , apply_default = None ):
261264 """
262265 :param table_name: str
@@ -274,15 +277,15 @@ def batch_append_rows(self, table_name, rows_data, apply_default=None):
274277 response = requests .post (url , json = json_data , headers = self .headers , timeout = self .timeout )
275278 return parse_response (response )
276279
277-
280+
278281 def insert_row (self , table_name , row_data , anchor_row_id , apply_default = None ):
279282 """
280283 :param table_name: str
281284 :param row_data: dict
282285 :param anchor_row_id: str
283286 """
284287 return self .append_row (table_name , row_data , apply_default = apply_default )
285-
288+
286289
287290 def update_row (self , table_name , row_id , row_data ):
288291 """
@@ -301,7 +304,7 @@ def update_row(self, table_name, row_id, row_data):
301304 response = requests .put (url , json = json_data , headers = self .headers , timeout = self .timeout )
302305 return parse_response (response )
303306
304-
307+
305308 def batch_update_rows (self , table_name , rows_data ):
306309 """
307310 :param table_name: str
@@ -318,7 +321,7 @@ def batch_update_rows(self, table_name, rows_data):
318321 response = requests .put (url , json = json_data , headers = self .headers , timeout = self .timeout )
319322 return parse_response (response )
320323
321-
324+
322325 def delete_row (self , table_name , row_id ):
323326 """
324327 :param table_name: str
@@ -334,7 +337,7 @@ def delete_row(self, table_name, row_id):
334337 response = requests .delete (url , json = json_data , headers = self .headers , timeout = self .timeout )
335338 return parse_response (response )
336339
337-
340+
338341 def batch_delete_rows (self , table_name , row_ids ):
339342 """
340343 :param table_name: str
@@ -350,7 +353,7 @@ def batch_delete_rows(self, table_name, row_ids):
350353 response = requests .delete (url , json = json_data , headers = self .headers , timeout = self .timeout )
351354 return parse_response (response )
352355
353-
356+
354357 def filter_rows (self , table_name , filters , view_name = None , filter_conjunction = 'And' ):
355358 """
356359 :param table_name: str
@@ -417,7 +420,7 @@ def add_link(self, link_id, table_name, other_table_name, row_id, other_row_id):
417420 response = requests .post (url , json = json_data , headers = self .headers , timeout = self .timeout )
418421 return parse_response (response )
419422
420-
423+
421424 def remove_link (self , link_id , table_name , other_table_name , row_id , other_row_id ):
422425 """
423426 :param link_id: str
@@ -440,7 +443,7 @@ def remove_link(self, link_id, table_name, other_table_name, row_id, other_row_i
440443 response = requests .delete (url , json = json_data , headers = self .headers , timeout = self .timeout )
441444 return parse_response (response )
442445
443-
446+
444447 def update_link (self , link_id , table_name , other_table_name , row_id , other_rows_ids ):
445448 """
446449 :param link_id: str
@@ -467,7 +470,7 @@ def update_link(self, link_id, table_name, other_table_name, row_id, other_rows_
467470 response = requests .put (url , json = json_data , headers = self .headers , timeout = self .timeout )
468471 return parse_response (response )
469472
470-
473+
471474 def batch_update_links (self , link_id , table_name , other_table_name , row_id_list , other_rows_ids_map ):
472475 """
473476 :param link_id: str
@@ -492,6 +495,22 @@ def batch_update_links(self, link_id, table_name, other_table_name, row_id_list,
492495 return parse_response (response )
493496
494497
498+ def get_linked_records (self , table_id , link_column_key , rows ):
499+ """
500+ :param table_id: str
501+ :param link_column_key: str
502+ :param rows: list
503+ """
504+ url = self ._query_links_server_url ()
505+ json_data = {
506+ 'table_id' : table_id ,
507+ 'link_column_key' : link_column_key ,
508+ 'rows' : rows ,
509+ }
510+ response = requests .post (url , json = json_data , headers = self .headers , timeout = self .timeout )
511+ return parse_response (response )
512+
513+
495514 def list_columns (self , table_name , view_name = None ):
496515 """
497516 :param table_name: str
@@ -510,30 +529,30 @@ def list_columns(self, table_name, view_name=None):
510529 data = parse_response (response )
511530 return data .get ('columns' )
512531
513-
532+
514533 def get_column_link_id (self , table_name , column_name ):
515534 columns = self .list_columns (table_name )
516535 for column in columns :
517536 if column .get ('name' ) == column_name and column .get ('type' ) == 'link' :
518537 return column .get ('data' , {}).get ('link_id' )
519538 raise ValueError ('link type column "%s" does not exist in current table' % column_name )
520539
521-
540+
522541 def get_column_by_name (self , table_name , column_name ):
523542 columns = self .list_columns (table_name )
524543 for col in columns :
525544 if col .get ('name' ) == column_name :
526545 return col
527546
528-
547+
529548 def get_columns_by_type (self , table_name , column_type : ColumnTypes ):
530549 if column_type not in ColumnTypes :
531550 raise ValueError ("type %s invalid!" % (column_type ,))
532551 columns = self .list_columns (table_name )
533552 cols_results = [col for col in columns if col .get ('type' ) == column_type .value ]
534553 return cols_results
535554
536-
555+
537556 def insert_column (self , table_name , column_name , column_type , column_key = None , column_data = None ):
538557 """
539558 :param table_name: str
@@ -561,7 +580,7 @@ def insert_column(self, table_name, column_name, column_type, column_key=None, c
561580 data = parse_response (response )
562581 return data
563582
564-
583+
565584 def rename_column (self , table_name , column_key , new_column_name ):
566585 """
567586 :param table_name: str
@@ -582,7 +601,7 @@ def rename_column(self, table_name, column_key, new_column_name):
582601 data = parse_response (response )
583602 return data
584603
585-
604+
586605 def resize_column (self , table_name , column_key , new_column_width ):
587606 """
588607 :param table_name: str
@@ -604,7 +623,7 @@ def resize_column(self, table_name, column_key, new_column_width):
604623 data = parse_response (response )
605624 return data
606625
607-
626+
608627 def freeze_column (self , table_name , column_key , frozen ):
609628 """
610629 :param table_name: str
@@ -625,7 +644,7 @@ def freeze_column(self, table_name, column_key, frozen):
625644 data = parse_response (response )
626645 return data
627646
628-
647+
629648 def move_column (self , table_name , column_key , target_column_key ):
630649 """
631650 :param table_name: str
@@ -646,7 +665,7 @@ def move_column(self, table_name, column_key, target_column_key):
646665 data = parse_response (response )
647666 return data
648667
649-
668+
650669 def modify_column_type (self , table_name , column_key , new_column_type ):
651670 """
652671 :param table_name: str
@@ -669,7 +688,7 @@ def modify_column_type(self, table_name, column_key, new_column_type):
669688 data = parse_response (response )
670689 return data
671690
672-
691+
673692 def add_column_options (self , table_name , column , options ):
674693 """
675694 :param table_name: str
@@ -688,7 +707,7 @@ def add_column_options(self, table_name, column, options):
688707 data = parse_response (response )
689708 return data
690709
691-
710+
692711 def add_column_cascade_settings (self , table_name , child_column , parent_column , cascade_settings ):
693712 """
694713
@@ -711,7 +730,7 @@ def add_column_cascade_settings(self, table_name, child_column, parent_column, c
711730 data = parse_response (response )
712731 return data
713732
714-
733+
715734 def delete_column (self , table_name , column_key ):
716735 """
717736 :param table_name: str
0 commit comments