Implementation
Future<Practitioner?> getPractitioner(
{required final String firebaseUid}) async {
final gqlQueryString = '''
query FindOne {
practitioners(
where: {
user: {
firebaseUid: "$firebaseUid"
}
}
) {
${PractitionerGqlEntity.gqlQueryFragment}
}
}
''';
try {
final queryResult = await graphQLClient.query<void>(QueryOptions(
document: gql(gqlQueryString),
fetchPolicy: FetchPolicy.networkOnly,
));
if (queryResult.hasException) {
logger?.e(queryResult.exception.toString());
return null;
}
final data = queryResult.data!['practitioners'] as List<dynamic>;
if (data.isNotEmpty) {
// merge in all properties from the base user entity
final practitionerData = data.first as Map<String, dynamic>;
final practitionerGqlFragment =
PractitionerGqlEntity.fromJson(practitionerData);
if (practitionerGqlFragment != null) {
return practitionerGqlFragment.toPractitioner();
}
}
} catch (e, stackTrace) {
logger?.e('Could not retrieve practitioner instance from backend', e,
stackTrace);
}
return null;
}