buildListRelatedQuery method
OperationDefinitionNode
buildListRelatedQuery({})
Implementation
OperationDefinitionNode buildListRelatedQuery({
required String thisType,
required String relatedType,
required String fieldName,
required String queryName,
Map<String, Object?>? where,
}) {
final rootWhere = {
'id': VariableNode(name: NameNode(value: 'id')),
};
final artifactPlural = pluralize(thisType.uncapitalize());
return OperationDefinitionNode(
type: OperationType.query,
name: NameNode(value: queryName),
variableDefinitions: [
VariableDefinitionNode(
defaultValue: DefaultValueNode(value: null),
variable: VariableNode(name: NameNode(value: "id")),
type: NamedTypeNode(
name: NameNode(value: "ID"),
isNonNull: true,
),
)
],
selectionSet: SelectionSetNode(
selections: [
FieldNode(
name: NameNode(value: artifactPlural),
arguments: [
ArgumentNode(name: NameNode(value: "where"), value: rootWhere.toValueNode()),
],
selectionSet: SelectionSetNode(
selections: [
FieldNode(
name: NameNode(value: fieldName),
arguments: [
if (where?.isNotEmpty == true)
ArgumentNode(
name: NameNode(value: "where"),
value: where.toValueNode(),
),
],
selectionSet: SelectionSetNode(
selections: [
FragmentSpreadNode(name: NameNode(value: '${relatedType}Fragment')),
],
),
)
],
),
)
],
),
);
}