I am having issues generating my types using graphql-codegen. My query contains a fragment called AssessmentQuestionnaireType which uses smaller fragments. Each of these fragments contains an options field that varies in the data type of its value subfield. For example, some return "Int!" and others return "Boolean!".
The error(s) I receive are:
Error 0: Fields "options" conflict because subfields "value" conflict because they return conflicting types "Int!" and "Boolean!". Use different aliases on the fields to fetch both if this was intentional.
Error 1: Fields "options" conflict because subfields "value" conflict because they return conflicting types "Int!" and "Boolean!". Use different aliases on the fields to fetch both if this was intentional
.... etc
Error 11: Fields "value" conflict because they return conflicting types "Int" and "String". Use different aliases on the fields to fetch both if this was intentional.
Basically, all of my fragments seem to get varying errors related to options
and value
.
I'm not entirely sure how to get around this. I tried using aliases, like
options {
text
value: integerValue
}
but that didn't seem to work. I'm not entirely sure how to proceed with this if anyone could give me some guidance! Thank you.
I've added the full query and fragments below to be analyzed.
query FetchAppointments($status: AppointmentStatusEnum
$arg1: [arg1!]
$arg2: arg2
) {
appointments(
status: $status
kind: $kind
startingAfter: $startingAfter
startingBefore: $startingBefore
endingAfter: $endingAfter
endingBefore: $endingBefore
hostId: $hostId
attendedBy: $attendedBy
limit: $limit
offset: $offset
sortBy: $sortBy
) {
data {
id
documents {
id
kind
status
assessments {
questionnaires {
...AssessmentQuestionnaireType
}
id
}
}
}
paging {
page
pages
limit
total
}
}
My issue is coming from ...AssessmentQuestionnaireType
. Going down even further, my fragment looks like this:
fragment AssessmentQuestionnaireType on AssessmentQuestionnaire {
id
kind
ordinal
questionnaire {
kind
prompts {
...IntegerRangeSelectionPrompt
...MultipleSelectionPrompt
...SingleSelectionPrompt
...BooleanPrompt
...FreeFormIntegerPrompt
...FreeFormStringPrompt
...DisabledStringInput
...isabledIntegerInput
}
}
responses {
...BooleanPromptResponse
...IntegerPromptResponse
...MultipleIntegerPromptResponse
...StringPromptResponse
...DisabledStringResponse
...DisabledIntegerResponse
...FloatPromptResponse
}
}
and each smaller fragment looks like this:
fragment IntegerRangeSelectionPrompt on IntegerRangeSelectionPrompt {
__typename
key
questionnaireId
required
text
category
categoryDescription
promptDescription
options {
__typename
text
value
}
}
fragment MultipleSelectionPrompt on MultipleSelectionPrompt {
__typename
key
questionnaireId
required
text
category
categoryDescription
promptDescription
options {
__typename
text
value
}
}
fragment SingleSelectionPrompt on SingleSelectionPrompt {
__typename
key
questionnaireId
required
text
category
categoryDescription
promptDescription
options {
__typename
text
value
}
}
fragment BooleanPrompt on BooleanPrompt {
__typename
key
questionnaireId
required
text
category
categoryDescription
promptDescription
options {
__typename
text
value
}
}
fragment FreeFormIntegerPrompt on FreeFormIntegerPrompt {
__typename
key
questionnaireId
required
text
category
categoryDescription
promptDescription
}
fragment FreeFormStringPrompt on FreeFormStringPrompt {
__typename
key
questionnaireId
required
text
category
categoryDescription
promptDescription
}
fragment DisabledStringInput on DisabledStringInput {
__typename
key
questionnaireId
required
text
category
categoryDescription
promptDescription
}
fragment DisabledIntegerInput on DisabledIntegerInput {
__typename
key
questionnaireId
required
text
category
categoryDescription
promptDescription
}
fragment BooleanPromptResponse on BooleanPromptResponse {
key
value
}
fragment IntegerPromptResponse on IntegerPromptResponse {
key
value
}
fragment MultipleIntegerPromptResponse on MultipleIntegerPromptResponse {
key
value
__typename
}
fragment StringPromptResponse on StringPromptResponse {
key
value
}
fragment DisabledStringResponse on DisabledStringResponse {
key
value
}
fragment DisabledIntegerResponse on DisabledIntegerResponse {
key
value
}
fragment FloatPromptResponse on FloatPromptResponse {
key
value
}