findGroups method

  1. @override
Future<List<Group>> findGroups({
  1. int? page,
  2. int? perPage,
  3. String? filter,
  4. String? sort,
  5. bool? descending,
})
override

Implementation

@override
Future<List<Group>> findGroups({
  int? page,
  int? perPage,
  String? filter,
  String? sort,
  bool? descending,
}) async {
  const query = r'''
    query FindGroups($filter: FindFilterType, $group_filter: GroupFilterType) {
      findGroups(filter: $filter, group_filter: $group_filter) {
        groups {
          id
          name
          date
          rating100
          director
          synopsis
        }
      }
    }
  ''';

  final result = await client.query(
    QueryOptions(
      document: gql(query),
      variables: {
        'filter': {
          'page': page,
          'per_page': perPage,
          'sort': sort,
          'direction': descending == true ? 'DESC' : 'ASC',
        },
        'group_filter': filter != null
            ? {
                'name': {
                  'value': filter,
                  'modifier': 'EQUALS',
                },
              }
            : null,
      },
    ),
  );

  if (result.hasException) throw result.exception!;

  final groupsJson =
      result.data?['findGroups']?['groups'] as List<dynamic>? ?? [];
  return groupsJson
      .map((g) => Group.fromJson(g as Map<String, dynamic>))
      .toList();
}