execute<TVariables extends JsonSerializable, TQueryResult> method
Future<GraphqlResult<TQueryResult> >
execute<TVariables extends JsonSerializable, TQueryResult>({
- required String query,
- required TVariables variableValues,
- required DefaultGqlOperationType operationType,
- required FromJsonCallback<
TQueryResult> fromJsonCallback,
Method to call mutations and queries
Implementation
Future<GraphqlResult<TQueryResult>>
execute<TVariables extends JsonSerializable, TQueryResult>({
required final String query,
required final TVariables variableValues,
required final DefaultGqlOperationType operationType,
required final FromJsonCallback<TQueryResult> fromJsonCallback,
}) async {
final document = gql_lang.parseString(query);
CactusSync.l.info({
'execute document': document,
'operationType': operationType,
'variableValues': variableValues,
});
final jsonVariableValues = variableValues.toJson();
switch (operationType) {
case DefaultGqlOperationType.create:
case DefaultGqlOperationType.update:
case DefaultGqlOperationType.remove:
final queryResult = await client.mutate(
MutationOptions(
document: document,
variables: {'input': jsonVariableValues},
),
);
return GraphqlResult.fromQueryResult<TQueryResult>(
queryResult: queryResult,
fromJsonCallback: fromJsonCallback,
);
case DefaultGqlOperationType.get:
case DefaultGqlOperationType.find:
final queryResult = await client.query(
QueryOptions(
document: document,
variables: jsonVariableValues,
fetchPolicy: defaultFetchPolicy,
),
);
return GraphqlResult.fromQueryResult<TQueryResult>(
queryResult: queryResult,
fromJsonCallback: fromJsonCallback,
);
case DefaultGqlOperationType.fromString:
throw Exception(
'DefaultGqlOperationType is fromString but '
'has to be different',
);
}
}