Skip to content

Commit 26c9121

Browse files
committed
graphql queries can pass in if supports links data
1 parent 3d7d2b1 commit 26c9121

1 file changed

Lines changed: 86 additions & 15 deletions

File tree

ayon_api/graphql_queries.py

Lines changed: 86 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,30 @@
1+
from __future__ import annotations
2+
13
import collections
4+
import typing
25

36
from .constants import DEFAULT_LINK_FIELDS
47
from .graphql import FIELD_VALUE, GraphQlQuery, fields_to_dict
58

9+
if typing.TYPE_CHECKING:
10+
from .graphql import (
11+
GraphQlQueryEdgeField,
12+
)
13+
614

7-
def add_links_fields(entity_field, nested_fields):
15+
def add_links_fields(
16+
entity_field: GraphQlQueryEdgeField,
17+
nested_fields: dict | None,
18+
supports_data: bool = False,
19+
) -> None:
820
if "links" not in nested_fields:
921
return
1022
links_fields = nested_fields.pop("links")
1123

1224
link_edge_fields = set(DEFAULT_LINK_FIELDS)
25+
if supports_data:
26+
link_edge_fields.add("data")
27+
1328
if isinstance(links_fields, dict):
1429
simple_fields = set(links_fields)
1530
simple_variant = len(simple_fields - link_edge_fields) == 0
@@ -121,7 +136,11 @@ def product_types_query(fields):
121136
return query
122137

123138

124-
def folders_graphql_query(fields):
139+
def folders_graphql_query(
140+
fields: set[str],
141+
*,
142+
links_support_data: bool = False,
143+
) -> GraphQlQuery:
125144
query = GraphQlQuery("FoldersQuery")
126145
project_name_var = query.add_variable("projectName", "String!")
127146
folder_ids_var = query.add_variable("folderIds", "[String!]")
@@ -161,7 +180,11 @@ def folders_graphql_query(fields):
161180
folders_field.set_filter("filter", filter_var)
162181

163182
nested_fields = fields_to_dict(fields)
164-
add_links_fields(folders_field, nested_fields)
183+
add_links_fields(
184+
folders_field,
185+
nested_fields,
186+
supports_data=links_support_data,
187+
)
165188

166189
query_queue = collections.deque()
167190
for key, value in nested_fields.items():
@@ -179,7 +202,11 @@ def folders_graphql_query(fields):
179202
return query
180203

181204

182-
def tasks_graphql_query(fields):
205+
def tasks_graphql_query(
206+
fields: set[str],
207+
*,
208+
links_support_data: bool = False,
209+
) -> GraphQlQuery:
183210
query = GraphQlQuery("TasksQuery")
184211
project_name_var = query.add_variable("projectName", "String!")
185212
task_ids_var = query.add_variable("taskIds", "[String!]")
@@ -209,7 +236,11 @@ def tasks_graphql_query(fields):
209236
tasks_field.set_filter("filter", filter_var)
210237

211238
nested_fields = fields_to_dict(fields)
212-
add_links_fields(tasks_field, nested_fields)
239+
add_links_fields(
240+
tasks_field,
241+
nested_fields,
242+
supports_data=links_support_data,
243+
)
213244

214245
query_queue = collections.deque()
215246
for key, value in nested_fields.items():
@@ -227,7 +258,11 @@ def tasks_graphql_query(fields):
227258
return query
228259

229260

230-
def tasks_by_folder_paths_graphql_query(fields):
261+
def tasks_by_folder_paths_graphql_query(
262+
fields: set[str],
263+
*,
264+
links_support_data: bool = False,
265+
) -> GraphQlQuery:
231266
query = GraphQlQuery("TasksByFolderPathQuery")
232267
project_name_var = query.add_variable("projectName", "String!")
233268
task_names_var = query.add_variable("taskNames", "[String!]")
@@ -258,7 +293,11 @@ def tasks_by_folder_paths_graphql_query(fields):
258293
tasks_field.set_filter("filter", filter_var)
259294

260295
nested_fields = fields_to_dict(fields)
261-
add_links_fields(tasks_field, nested_fields)
296+
add_links_fields(
297+
tasks_field,
298+
nested_fields,
299+
supports_data=links_support_data,
300+
)
262301

263302
query_queue = collections.deque()
264303
for key, value in nested_fields.items():
@@ -276,7 +315,11 @@ def tasks_by_folder_paths_graphql_query(fields):
276315
return query
277316

278317

279-
def products_graphql_query(fields):
318+
def products_graphql_query(
319+
fields: set[str],
320+
*,
321+
links_support_data: bool = False,
322+
) -> GraphQlQuery:
280323
query = GraphQlQuery("ProductsQuery")
281324

282325
project_name_var = query.add_variable("projectName", "String!")
@@ -308,7 +351,11 @@ def products_graphql_query(fields):
308351
products_field.set_filter("filter", filter_var)
309352

310353
nested_fields = fields_to_dict(set(fields))
311-
add_links_fields(products_field, nested_fields)
354+
add_links_fields(
355+
products_field,
356+
nested_fields,
357+
supports_data=links_support_data,
358+
)
312359

313360
query_queue = collections.deque()
314361
for key, value in nested_fields.items():
@@ -326,7 +373,11 @@ def products_graphql_query(fields):
326373
return query
327374

328375

329-
def versions_graphql_query(fields):
376+
def versions_graphql_query(
377+
fields: set[str],
378+
*,
379+
links_support_data: bool = False,
380+
) -> GraphQlQuery:
330381
query = GraphQlQuery("VersionsQuery")
331382

332383
project_name_var = query.add_variable("projectName", "String!")
@@ -359,7 +410,11 @@ def versions_graphql_query(fields):
359410
versions_field.set_filter("filter", filter_var)
360411

361412
nested_fields = fields_to_dict(set(fields))
362-
add_links_fields(versions_field, nested_fields)
413+
add_links_fields(
414+
versions_field,
415+
nested_fields,
416+
supports_data=links_support_data,
417+
)
363418

364419
query_queue = collections.deque()
365420
for key, value in nested_fields.items():
@@ -377,7 +432,11 @@ def versions_graphql_query(fields):
377432
return query
378433

379434

380-
def representations_graphql_query(fields):
435+
def representations_graphql_query(
436+
fields: set[str],
437+
*,
438+
links_support_data: bool = False,
439+
) -> GraphQlQuery:
381440
query = GraphQlQuery("RepresentationsQuery")
382441

383442
project_name_var = query.add_variable("projectName", "String!")
@@ -408,7 +467,11 @@ def representations_graphql_query(fields):
408467
repres_field.set_filter("filter", filter_var)
409468

410469
nested_fields = fields_to_dict(set(fields))
411-
add_links_fields(repres_field, nested_fields)
470+
add_links_fields(
471+
repres_field,
472+
nested_fields,
473+
supports_data=links_support_data,
474+
)
412475

413476
query_queue = collections.deque()
414477
for key, value in nested_fields.items():
@@ -525,7 +588,11 @@ def representations_hierarchy_qraphql_query(
525588
return query
526589

527590

528-
def workfiles_info_graphql_query(fields):
591+
def workfiles_info_graphql_query(
592+
fields: set[str],
593+
*,
594+
links_support_data: bool = False,
595+
) -> GraphQlQuery:
529596
query = GraphQlQuery("WorkfilesInfo")
530597
project_name_var = query.add_variable("projectName", "String!")
531598
workfiles_info_ids = query.add_variable("workfileIds", "[String!]")
@@ -549,7 +616,11 @@ def workfiles_info_graphql_query(fields):
549616
workfiles_field.set_filter("tags", tags_var)
550617

551618
nested_fields = fields_to_dict(set(fields))
552-
add_links_fields(workfiles_field, nested_fields)
619+
add_links_fields(
620+
workfiles_field,
621+
nested_fields,
622+
supports_data=links_support_data,
623+
)
553624

554625
query_queue = collections.deque()
555626
for key, value in nested_fields.items():

0 commit comments

Comments
 (0)