supadartRun function
List<GeneratedFile>
supadartRun(
- DatabaseSwagger swagger,
- Storage storageList,
- bool isDart,
- bool isSeparated,
- YamlMap? mappings,
- List<String> exclude,
- 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,
bool isPostGIS,
bool jsonbToDynamic,
{Map<String, JsonbModelConfig>? jsonbModels}) {
_checkNameClashes(swagger, mappings);
// 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({
for (final e in swagger.enums.entries)
swagger.schemas.localNameOf(e.key): e.value
});
bool needsIntl = false;
bool needsDartConvert = false;
bool needsDurationFromString = false;
bool needsGeometryFromJson = 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;
}
if (classCode.contains("GeometryFromJson")) {
needsGeometryFromJson = true;
needsDartConvert = true;
}
// Exit early if all conditions are met
if (needsIntl &&
needsDartConvert &&
needsDurationFromString &&
needsGeometryFromJson) {
break;
}
}
final supadartGenerator = SupadartGenerator(
clientExtension: clientExtension,
storageClientExtension: storageClientExtension,
dartClasses: dartClasses,
modelExports: modelExports,
enums: enums,
isDart: isDart,
needsIntl: needsIntl,
needsDartConvert: needsDartConvert,
needsDurationFromString: needsDurationFromString,
needsGeometryFromJson: needsGeometryFromJson,
mappings: mappings,
isPostGIS: isPostGIS,
jsonbImports: jsonbImports,
);
return isSeparated
? supadartGenerator.generateDartModelFilesSeparated()
: supadartGenerator.generateClassesSingleFile();
}