I am trying to nest fragments (no-recursion or unbounded expansion) in my graphql query. But, either the graphql schema doesn't consider my query as valid, or the fragment definition seems redundant. My desired graphql response-structure is:
`
{
"data":{
"availability":{
"mon":{
"open":"5.00 a.m.",
"close":"10.00 p.m.",
"allday":false,
"closed":false
},
"tue":{
"open":"5.00 a.m.",
"close":"10.00 p.m.",
"allday":false,
"closed":false
},
"wed":{
"open":"5.00 a.m.",
"close":"10.00 p.m.",
"allday":false,
"closed":false
},
"thu":{
"open":"5.00 a.m.",
"close":"10.00 p.m.",
"allday":false,
"closed":false
},
"fri":{
"open":"5.00 a.m.",
"close":"10.00 p.m.",
"allday":false,
"closed":false
},
"sat":{
"open":"5.00 a.m.",
"close":"10.00 p.m.",
"allday":false,
"closed":false
},
"sun":{
"open":"5.00 a.m.",
"close":"10.00 p.m.",
"allday":false,
"closed":false
}
}
}
}
`
where availability has type Availability and mon, tue, etc. have type Day
Approach 1: This is not a valid syntax in graphql. graphql throws error (doesn't allow nesting this way)
`
fragment Hours on Day {
open
close
allday
closed
}
fragment DailyAvailability on Availability {
mon
tue
wed
thu
fri
sat
sun
}
query {
availability {
... DailyAvailability {
... Hours
}
}
}
`
Approach 2: This works, but seems redundant as I have to spread Hours on each Day separately.
`
fragment Hours on Day {
open
close
allday
closed
}
fragment DailyAvailability on Availability {
mon {... Hours}
tue {... Hours}
wed {... Hours}
thu {... Hours}
fri {... Hours}
sat {... Hours}
sun {... Hours}
}
query {
availability {
... DailyAvailability
}
}
`
Please suggest if there is a way to nest fragments as I intend to do in my first approach.