loadRelatedJson method
Implementation
Future<dynamic> loadRelatedJson({
required String entityName,
required String entityId,
required String fieldName,
required String relatedType,
String? queryName,
required bool isNullable,
required bool isJoinType,
Map<String, Object?>? fixedWhere,
}) async {
final artifactPlural = pluralize(entityName.uncapitalize());
DocumentNode? gqlQuery;
try {
queryName ??= "listRelated$entityName${fieldName.capitalize()}";
gqlQuery = _resolver.getOrBuildQuery(
queryName,
entityName,
() => _resolver.buildListRelatedQuery(
thisType: entityName,
relatedType: relatedType,
fieldName: fieldName,
queryName: queryName!,
where: fixedWhere,
));
var result = await this._client().query(
QueryOptions(
document: gqlQuery,
operationName: queryName,
variables: {
"id": entityId,
},
),
);
if (result.hasException) {
final translated = GraphClientConfig.translateException(
GraphOperation(queryName, GraphOperations.listRelated, gqlQuery),
{
"where": fixedWhere ?? {},
"fieldName": fieldName,
"id": entityId,
"relatedType": relatedType,
},
result.exception!);
throw translated;
}
var raw = GraphClientConfig.getDeep(result.data, "${artifactPlural}", 0, fieldName);
if (raw != null && isJoinType) {
raw = raw["edges"];
}
return raw;
} catch (e, stack) {
print(e);
print(stack);
print('## -------------------------------------------------------');
print('## LIST RELATED FAILED!');
// if (gqlQuery == null) print('## NO DOC!');
// gqlQuery?.definitions.forEach((element) {
// print(lang.printNode(element));
// print('##---------------------------------------------------');
// });
// print('##-------------------------------------------------------');
rethrow;
}
}