updateMoodEntry method Null safety
- {required MoodEntry entry}
Updates entry in the backend. Assumes that entry already exists.
Will return null if entry does not exist or if the update fails.
Implementation
Future<MoodEntry?> updateMoodEntry({required MoodEntry entry}) async {
final gqlQueryString = '''
mutation UpdateMoodEntry {
updateMoodEntry(
input: {
where: { id: "${entry.id}" }
data: {
mood: ${MoodType.toDatabaseFormat(moodType: entry.mood)}
dateTime: "${entry.dateTime}"
}
}
) {
moodEntry {
${MoodEntryGqlEntity.gqlQueryFragment}
}
}
}
''';
try {
final queryResult = await graphQLClient.mutate<void>(MutationOptions(
document: gql(gqlQueryString),
fetchPolicy: FetchPolicy.networkOnly,
));
if (queryResult.hasException) {
logger?.e(queryResult.exception.toString());
return null;
}
} catch (e, stackTrace) {
logger?.e('Could not update mood entry', e, stackTrace);
return null;
}
if (!_lastUpdatedMoodStreamController.isClosed) {
_lastUpdatedMoodStreamController
.add([EntityUpdated(entry, entry)].toBuiltList());
}
return entry;
}