Skip to content

Commit

Permalink
Fixed generation of allOf models
Browse files Browse the repository at this point in the history
  • Loading branch information
Uladzimir Paliukhovich committed Jan 24, 2024
1 parent 77f17cb commit b61b613
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 1 deletion.
29 changes: 29 additions & 0 deletions lib/src/code_generators/swagger_models_generator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,31 @@ abstract class SwaggerModelsGenerator extends SwaggerGeneratorBase {
);
}

Map<String, SwaggerSchema> getAllOfProperties(
SwaggerSchema schema,
Map<String, SwaggerSchema> classes,
) {
final properties = schema.properties;
for (var element in schema.allOf) {
properties.addAll(element.properties);

if (element.ref.isNotEmpty) {
final neededClass = classes[element.ref.getUnformattedRef()];
properties.addAll(neededClass?.properties ?? {});

if (neededClass != null) {
properties.addAll(getAllOfProperties(neededClass, classes));
}
} else {
for (var allOf in element.allOf) {
properties.addAll(getAllOfProperties(allOf, classes));
}
}
}

return properties;
}

Map<String, SwaggerSchema> getClassesFromInnerClasses(
Map<String, SwaggerSchema> classes,
) {
Expand All @@ -156,6 +181,10 @@ abstract class SwaggerModelsGenerator extends SwaggerGeneratorBase {
...schema.items?.properties ?? {},
};

final allOfProperties = getAllOfProperties(schema, classes);

properties.addAll(allOfProperties);

for (var element in schema.allOf) {
properties.addAll(element.properties);

Expand Down
2 changes: 1 addition & 1 deletion lib/src/swagger_models/responses/swagger_schema.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit b61b613

Please sign in to comment.