Hi,
I am trying out Artemis and I have some deeply nested queries that are generating very long type names, such as:
For example, this query:
query GetAggregatorCompanies(
$aggregatorId: Int!
$latitude: Float
$longitude: Float
$maximumDistanceKilometers: Float
$filterBy: AggregatorFilterOption
$first: Int
$cursor: String
) {
aggregator(
aggregatorId: $aggregatorId
latitude: $latitude
longitude: $longitude
maximumDistanceKilometers: $maximumDistanceKilometers
filterBy: $filterBy
) {
id
__typename
name
numericalId
images {
__typename
url
context
}
companies(first: $first, after: $cursor) {
edges {
__typename
cursor
node {
id
__typename
name
numericalId
onlineStatus
hidden
brand {
id
__typename
numericalId
images {
__typename
context
url
}
}
images {
__typename
context
url
}
highlight {
__typename
numericalId
topLabel
centerLabel
bottomLabel
}
}
}
}
}
}
Will generate these types:
// GENERATED CODE - DO NOT MODIFY BY HAND
import 'package:meta/meta.dart';
import 'package:artemis/artemis.dart';
import 'package:json_annotation/json_annotation.dart';
import 'package:equatable/equatable.dart';
import 'package:gql/ast.dart';
part 'graphql_api.graphql.g.dart';
@JsonSerializable(explicitToJson: true)
class GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$Parameter$OrderTypeParameter$OrderFieldParameter$OrderField
with EquatableMixin {
GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$Parameter$OrderTypeParameter$OrderFieldParameter$OrderField();
factory GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$Parameter$OrderTypeParameter$OrderFieldParameter$OrderField.fromJson(
Map<String, dynamic> json) =>
_$GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$Parameter$OrderTypeParameter$OrderFieldParameter$OrderFieldFromJson(
json);
String id;
int numericalId;
String title;
String label;
@JsonKey(
unknownEnumValue:
GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$Parameter$OrderTypeParameter$OrderFieldParameter$OrderField$OrderFieldType
.ARTEMIS_UNKNOWN)
GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$Parameter$OrderTypeParameter$OrderFieldParameter$OrderField$OrderFieldType
fieldType;
int maxLength;
int position;
bool required;
String requiredErrorMessage;
String invalidErrorMessage;
@override
List<Object> get props => [
id,
numericalId,
title,
label,
fieldType,
maxLength,
position,
required,
requiredErrorMessage,
invalidErrorMessage
];
Map<String, dynamic> toJson() =>
_$GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$Parameter$OrderTypeParameter$OrderFieldParameter$OrderFieldToJson(
this);
}
@JsonSerializable(explicitToJson: true)
class GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$Parameter$OrderTypeParameter$OrderFieldParameter
with EquatableMixin {
GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$Parameter$OrderTypeParameter$OrderFieldParameter();
factory GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$Parameter$OrderTypeParameter$OrderFieldParameter.fromJson(
Map<String, dynamic> json) =>
_$GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$Parameter$OrderTypeParameter$OrderFieldParameterFromJson(
json);
String id;
GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$Parameter$OrderTypeParameter$OrderFieldParameter$OrderField
field;
@override
List<Object> get props => [id, field];
Map<String, dynamic> toJson() =>
_$GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$Parameter$OrderTypeParameter$OrderFieldParameterToJson(
this);
}
@JsonSerializable(explicitToJson: true)
class GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$Parameter$OrderTypeParameter
with EquatableMixin {
GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$Parameter$OrderTypeParameter();
factory GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$Parameter$OrderTypeParameter.fromJson(
Map<String, dynamic> json) =>
_$GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$Parameter$OrderTypeParameterFromJson(
json);
String id;
String title;
int orderType;
String description;
List<GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$Parameter$OrderTypeParameter$OrderFieldParameter>
orderFields;
@override
List<Object> get props => [id, title, orderType, description, orderFields];
Map<String, dynamic> toJson() =>
_$GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$Parameter$OrderTypeParameterToJson(
this);
}
@JsonSerializable(explicitToJson: true)
class GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$Parameter
with EquatableMixin {
GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$Parameter();
factory GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$Parameter.fromJson(
Map<String, dynamic> json) =>
_$GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$ParameterFromJson(
json);
String id;
List<GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$Parameter$OrderTypeParameter>
orderTypes;
@override
List<Object> get props => [id, orderTypes];
Map<String, dynamic> toJson() =>
_$GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$ParameterToJson(
this);
}
@JsonSerializable(explicitToJson: true)
class GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company
with EquatableMixin {
GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company();
factory GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company.fromJson(
Map<String, dynamic> json) =>
_$GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$CompanyFromJson(
json);
String id;
String name;
int numericalId;
@JsonKey(
unknownEnumValue:
GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$OnlineStatus
.ARTEMIS_UNKNOWN)
GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$OnlineStatus
onlineStatus;
GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$Parameter
parameter;
@override
List<Object> get props => [id, name, numericalId, onlineStatus, parameter];
Map<String, dynamic> toJson() =>
_$GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$CompanyToJson(
this);
}
@JsonSerializable(explicitToJson: true)
class GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge
with EquatableMixin {
GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge();
factory GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge.fromJson(
Map<String, dynamic> json) =>
_$GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdgeFromJson(
json);
GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company
node;
@override
List<Object> get props => [node];
Map<String, dynamic> toJson() =>
_$GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdgeToJson(
this);
}
@JsonSerializable(explicitToJson: true)
class GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection
with EquatableMixin {
GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection();
factory GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection.fromJson(
Map<String, dynamic> json) =>
_$GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnectionFromJson(
json);
List<GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge>
edges;
@override
List<Object> get props => [edges];
Map<String, dynamic> toJson() =>
_$GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnectionToJson(
this);
}
@JsonSerializable(explicitToJson: true)
class GetAggregatorCompanies$Query$CompanyGroup with EquatableMixin {
GetAggregatorCompanies$Query$CompanyGroup();
factory GetAggregatorCompanies$Query$CompanyGroup.fromJson(
Map<String, dynamic> json) =>
_$GetAggregatorCompanies$Query$CompanyGroupFromJson(json);
String id;
String name;
int numericalId;
GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection companies;
@override
List<Object> get props => [id, name, numericalId, companies];
Map<String, dynamic> toJson() =>
_$GetAggregatorCompanies$Query$CompanyGroupToJson(this);
}
@JsonSerializable(explicitToJson: true)
class GetAggregatorCompanies$Query with EquatableMixin {
GetAggregatorCompanies$Query();
factory GetAggregatorCompanies$Query.fromJson(Map<String, dynamic> json) =>
_$GetAggregatorCompanies$QueryFromJson(json);
GetAggregatorCompanies$Query$CompanyGroup aggregator;
@override
List<Object> get props => [aggregator];
Map<String, dynamic> toJson() => _$GetAggregatorCompanies$QueryToJson(this);
}
enum GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$OnlineStatus {
ONLINE,
OFFLINE,
CLOSED,
ARTEMIS_UNKNOWN,
}
enum GetAggregatorCompanies$Query$CompanyGroup$CompanySharedConnection$CompanySharedEdge$Company$Parameter$OrderTypeParameter$OrderFieldParameter$OrderField$OrderFieldType {
TEXT,
NUMERIC,
TELEPHONE,
CPF,
OPTION_LIST,
ARTEMIS_UNKNOWN,
}
@JsonSerializable(explicitToJson: true)
class GetAggregatorCompaniesArguments extends JsonSerializable
with EquatableMixin {
GetAggregatorCompaniesArguments(
{@required this.aggregatorId, this.latitude, this.longitude});
factory GetAggregatorCompaniesArguments.fromJson(Map<String, dynamic> json) =>
_$GetAggregatorCompaniesArgumentsFromJson(json);
final int aggregatorId;
final double latitude;
final double longitude;
@override
List<Object> get props => [aggregatorId, latitude, longitude];
Map<String, dynamic> toJson() =>
_$GetAggregatorCompaniesArgumentsToJson(this);
}
class GetAggregatorCompaniesQuery extends GraphQLQuery<
GetAggregatorCompanies$Query, GetAggregatorCompaniesArguments> {
GetAggregatorCompaniesQuery({this.variables});
@override
final DocumentNode document = DocumentNode(definitions: [
OperationDefinitionNode(
type: OperationType.query,
name: NameNode(value: 'GetAggregatorCompanies'),
variableDefinitions: [
VariableDefinitionNode(
variable: VariableNode(name: NameNode(value: 'aggregatorId')),
type:
NamedTypeNode(name: NameNode(value: 'Int'), isNonNull: true),
defaultValue: DefaultValueNode(value: null),
directives: []),
VariableDefinitionNode(
variable: VariableNode(name: NameNode(value: 'latitude')),
type: NamedTypeNode(
name: NameNode(value: 'Float'), isNonNull: false),
defaultValue: DefaultValueNode(value: null),
directives: []),
VariableDefinitionNode(
variable: VariableNode(name: NameNode(value: 'longitude')),
type: NamedTypeNode(
name: NameNode(value: 'Float'), isNonNull: false),
defaultValue: DefaultValueNode(value: null),
directives: [])
],
directives: [],
selectionSet: SelectionSetNode(selections: [
FieldNode(
name: NameNode(value: 'aggregator'),
alias: null,
arguments: [
ArgumentNode(
name: NameNode(value: 'aggregatorId'),
value: VariableNode(name: NameNode(value: 'aggregatorId'))),
ArgumentNode(
name: NameNode(value: 'latitude'),
value: VariableNode(name: NameNode(value: 'latitude'))),
ArgumentNode(
name: NameNode(value: 'longitude'),
value: VariableNode(name: NameNode(value: 'longitude'))),
ArgumentNode(
name: NameNode(value: 'filterBy'),
value:
EnumValueNode(name: NameNode(value: 'DELIVERY_AREA')))
],
directives: [],
selectionSet: SelectionSetNode(selections: [
FieldNode(
name: NameNode(value: 'id'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: '__typename'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'name'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'numericalId'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'companies'),
alias: null,
arguments: [],
directives: [],
selectionSet: SelectionSetNode(selections: [
FieldNode(
name: NameNode(value: 'edges'),
alias: null,
arguments: [],
directives: [],
selectionSet: SelectionSetNode(selections: [
FieldNode(
name: NameNode(value: '__typename'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'node'),
alias: null,
arguments: [],
directives: [],
selectionSet: SelectionSetNode(selections: [
FieldNode(
name: NameNode(value: 'id'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: '__typename'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'name'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'numericalId'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'onlineStatus'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'parameter'),
alias: null,
arguments: [],
directives: [],
selectionSet: SelectionSetNode(
selections: [
FieldNode(
name: NameNode(value: 'id'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(
value: '__typename'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(
value: 'orderTypes'),
alias: null,
arguments: [],
directives: [],
selectionSet: SelectionSetNode(
selections: [
FieldNode(
name: NameNode(
value:
'__typename'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(
value: 'id'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(
value: 'title'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(
value:
'orderType'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(
value:
'description'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(
value:
'orderFields'),
alias: null,
arguments: [],
directives: [],
selectionSet:
SelectionSetNode(
selections: [
FieldNode(
name: NameNode(
value:
'id'),
alias: null,
arguments: [],
directives: [],
selectionSet:
null),
FieldNode(
name: NameNode(
value:
'__typename'),
alias: null,
arguments: [],
directives: [],
selectionSet:
null),
FieldNode(
name: NameNode(
value:
'field'),
alias: null,
arguments: [],
directives: [],
selectionSet:
SelectionSetNode(
selections: [
FieldNode(
name: NameNode(value: 'id'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: '__typename'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'numericalId'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'title'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'label'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'fieldType'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'maxLength'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'position'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'required'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'requiredErrorMessage'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'invalidErrorMessage'),
alias: null,
arguments: [],
directives: [],
selectionSet: null)
]))
]))
]))
]))
]))
]))
]))
]))
]))
]);
@override
final String operationName = 'GetAggregatorCompanies';
@override
final GetAggregatorCompaniesArguments variables;
@override
List<Object> get props => [document, operationName, variables];
@override
GetAggregatorCompanies$Query parse(Map<String, dynamic> json) =>
GetAggregatorCompanies$Query.fromJson(json);
}
Am I doing something wrong? Is there a way for me to get shorter type names?