Skip to content

Commit a6499da

Browse files
authored
Merge pull request #95 from seatable/query-links
feat(api-gateway): support query links
2 parents 18c05ae + 1522aad commit a6499da

File tree

2 files changed

+49
-29
lines changed

2 files changed

+49
-29
lines changed

seatable_api/api_gateway.py

Lines changed: 47 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -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

seatable_api/main.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ def _batch_update_row_link_server_url(self):
156156

157157
def _app_download_link_url(self):
158158
return self.server_url + '/api/v2.1/dtable/app-download-link/'
159-
159+
160160
def _app_custom_download_link_url(self):
161161
return self.server_url + '/api/v2.1/dtable/custom/app-download-link/'
162162

@@ -722,6 +722,7 @@ def batch_update_links(self, link_id, table_name, other_table_name, row_id_list,
722722
return parse_response(response)
723723

724724
@check_auth
725+
@api_gateway_wrapper
725726
def get_linked_records(self, table_id, link_column_key, rows):
726727
"""
727728
:param table_id: str

0 commit comments

Comments
 (0)