supadartRun function
List<GeneratedFile>
supadartRun(
- DatabaseSwagger swagger,
- Storage storageList,
- bool isDart,
- bool isSeparated,
- YamlMap? mappings,
- List<String> exclude,
- Map<String, List<String>> mapOfEnums,
- bool isPostGIS,
- bool jsonbToDynamic, {
- Map<String, JsonbModelConfig>? jsonbModels,
})
Implementation
List<GeneratedFile> supadartRun(
DatabaseSwagger swagger,
Storage storageList,
bool isDart,
bool isSeparated,
YamlMap? mappings,
List<String> exclude,
Map<String, List<String>> mapOfEnums,
bool isPostGIS,
bool jsonbToDynamic,
{Map<String, JsonbModelConfig>? jsonbModels}
) {
// Collect unique JSONB model imports
Set<String> jsonbImports = {};
if (jsonbModels != null) {
for (var config in jsonbModels.values) {
jsonbImports.add(config.importPath);
}
}
final dartClasses =
generateDartClasses(swagger, mappings, exclude, jsonbToDynamic);
final clientExtension = generateClientExtension(swagger);
final storageClientExtension = generateStorageClientExtension(storageList);
final modelExports = generateExports(swagger, mappings);
final enums = generateEnums(mapOfEnums);
bool needsIntl = false;
bool needsDartConvert = false;
bool needsDurationFromString = false;
for (var dartClass in dartClasses) {
final classCode = dartClass.classCode;
if (classCode.contains("DateFormat")) {
needsIntl = true;
}
if (classCode.contains("json.") ||
classCode.contains("jsonDecode") ||
classCode.contains("jsonEncode")) {
needsDartConvert = true;
}
if (classCode.contains("Duration")) {
needsDurationFromString = true;
}
// Exit early if all conditions are met
if (needsIntl && needsDartConvert && needsDurationFromString) break;
}
final supadartGenerator = SupadartGenerator(
clientExtension: clientExtension,
storageClientExtension: storageClientExtension,
dartClasses: dartClasses,
modelExports: modelExports,
enums: enums,
isDart: isDart,
needsIntl: needsIntl,
needsDartConvert: needsDartConvert,
needsDurationFromString: needsDurationFromString,
mappings: mappings,
isPostGIS: isPostGIS,
jsonbImports: jsonbImports,
);
return isSeparated
? supadartGenerator.generateDartModelFilesSeparated()
: supadartGenerator.generateClassesSingleFile();
}