generateQueryWithCustomFields static method
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;
}