Skip to content

Commit

Permalink
Make interfaced objects override resolveType
Browse files Browse the repository at this point in the history
  • Loading branch information
comigor committed Jun 11, 2019
1 parent 5d4e7d4 commit a954a22
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions lib/helpers.dart
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,11 @@ void _generateClassProperty(StringBuffer buffer, GraphQLSchema schema,
buffer.writeln(' $dartTypeStr ${field.name};');
}

void _generateResolveTypeProperty(StringBuffer buffer) {
void _generateResolveTypeProperty(StringBuffer buffer,
{bool override = false}) {
if (override) {
buffer.writeln(' @override');
}
buffer.writeln(''' @JsonKey(name: '__resolveType')
String resolveType;''');
}
Expand Down Expand Up @@ -165,8 +169,10 @@ void _generateClass(StringBuffer buffer, GraphQLSchema schema, GraphQLType type,
buffer.writeln('@JsonSerializable()');
buffer.writeln('class $className $mixins {');

if (type.kind == GraphQLTypeKind.INTERFACE) {
_generateResolveTypeProperty(buffer);
if (type.kind == GraphQLTypeKind.INTERFACE ||
(type.kind == GraphQLTypeKind.OBJECT && type.interfaces.isNotEmpty)) {
_generateResolveTypeProperty(buffer,
override: type.kind == GraphQLTypeKind.OBJECT);
}

final interfaceFields = type.interfaces
Expand Down

0 comments on commit a954a22

Please sign in to comment.