generateQueryWithCustomFields static method

String generateQueryWithCustomFields(
  1. String queryTemplate,
  2. Map<String, List> customFieldsConfig
)

Implementation

static String generateQueryWithCustomFields(
    String queryTemplate, Map<String, List<dynamic>> customFieldsConfig) {
  customFieldsConfig.forEach((typeName, customFields) {
    if (customFields.isEmpty) {
      queryTemplate = queryTemplate.replaceAll(
          RegExp(r'\.\.\.' + typeName.capitalize() + r'CustomFields\s*',
              multiLine: true),
          '');

      queryTemplate = queryTemplate.replaceAll(
          RegExp(
              r'fragment\s+' +
                  typeName.capitalize() +
                  r'CustomFields\s+on\s+' +
                  typeName.capitalize() +
                  r'\s*\{[^}]*\}',
              multiLine: true),
          '');
    }
  });

  customFieldsConfig.forEach((typeName, customFields) {
    if (customFields.isNotEmpty) {
      String generatedFragment =
          generateFragmentWithTypename(typeName, customFields);

      queryTemplate = queryTemplate.replaceAllMapped(
          RegExp(
              r'fragment\s+' +
                  typeName.capitalize() +
                  r'CustomFields\s+on\s+' +
                  typeName.capitalize() +
                  r'\s*\{[^}]*\}',
              multiLine: true),
          (match) => generatedFragment);
    }
  });

  queryTemplate = queryTemplate
      .replaceAll(RegExp(r'\n\s*\n', multiLine: true), '\n')
      .trim();

  return queryTemplate;
}