Problema
Estoy implementando la paginación basada en cursores en graphql en el esquema de sincronización de aplicaciones de AWS. Quiero restringir el tipo dependiendo de la consulta. Por ejemplo, getBuildingsBySite no debería permitir ningún otro tipo que no sea Building. Actualmente, permite todos los tipos en la Unión. ¿Cómo se puede lograr esto?
type Site { siteName: String address: String siteId: String! sitePicture: String siteImgUrl: String } type Floor { floorName: String accessPointsCount: Int unitsCount: Int wingName: String floorId: String! } type Building { buildingId: String! buildingName: String buildingAddress: String buildingImgUrl: String buildingImg: String } type PageInfo { hasNextPage: Boolean endCursor: Boolean } type Collection { edges: Edge pageInfo: PageInfo } type Edge { node: [Node] cursor: String } union Node = Site | Building | Floor type Query { getSites(first: Int, cursor: String): Collection getBuildingsBySite(first: Int, cursor: String, siteId: String!): Collection getFloorsByBuilding(first: Int, cursor: String, siteId: String!, buildingId: String!): Collection }
Consulta
{ getBuildingsBySite(first: 10, cursor: "xyz", siteId: "S1") { edges { node { ... on Site { siteName address address } ... on Building { buildingId buildingName } ... on Floor { floorId floorName } } } } }
Si existe algún enfoque mejor en AWS Appsync para la paginación, sugiéralo. Gracias