mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-15 01:12:56 +03:00
346804fc67
## Description This change adds support for nested object fields in HGE IR and Schema Cache, the Data Connectors backend and API, and the MongoDB agent. ### Data Connector API changes - The `/schema` endpoint response now includes an optional set of GraphQL type definitions. Table column types can refer to these definitions by name. - Queries can now include a new field type `object` which contains a column name and a nested query. This allows querying into a nested object within a field. ### MongoDB agent changes - Add support for querying into nested documents using the new `object` field type. ### HGE changes - The `Backend` type class has a new type family `XNestedObjects b` which controls whether or not a backend supports querying into nested objects. This is currently enabled only for the `DataConnector` backend. - For backends that support nested objects, the `FieldInfo` type gets a new constructor `FINestedObject`, and the `AnnFieldG` type gets a new constructor `AFNestedObject`. - If the DC `/schema` endpoint returns any custom GraphQL type definitions they are stored in the `TableInfo` for each table in the source. - During schema cache building, the function `addNonColumnFields` will check whether any column types match custom GraphQL object types stored in the `TableInfo`. If so, they are converted into `FINestedObject` instead of `FIColumn` in the `FieldInfoMap`. - When building the `FieldParser`s from `FieldInfo` (function `fieldSelection`) any `FINestedObject` fields are converted into nested object parsers returning `AFNestedObject`. - The `DataConnector` query planner converts `AFNestedObject` fields into `object` field types in the query sent to the agent. ## Limitations ### HGE not yet implemented: - Support for nested arrays - Support for nested objects/arrays in mutations - Support for nested objects/arrays in order-by - Support for filters (`where`) in nested objects/arrays - Support for adding custom GraphQL types via track table metadata API - Support for interface and union types - Tests for nested objects ### Mongo agent not yet implemented: - Generate nested object types from validation schema - Support for aggregates - Support for order-by - Configure agent port - Build agent in CI - Agent tests for nested objects and MongoDB agent PR-URL: https://github.com/hasura/graphql-engine-mono/pull/7844 GitOrigin-RevId: aec9ec1e4216293286a68f9b1af6f3f5317db423
39 lines
1.1 KiB
JSON
39 lines
1.1 KiB
JSON
{
|
|
"name": "@hasura/dc-agent-reference",
|
|
"version": "0.1.0",
|
|
"description": "Reference implementation of a Data Connector Agent for Hasura GraphQL Engine",
|
|
"author": "Hasura (https://github.com/hasura/graphql-engine)",
|
|
"license": "Apache-2.0",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/hasura/graphql-engine.git"
|
|
},
|
|
"bugs": {
|
|
"url": "https://github.com/hasura/graphql-engine/issues"
|
|
},
|
|
"homepage": "https://github.com/hasura/graphql-engine#readme",
|
|
"main": "dist/index.js",
|
|
"scripts": {
|
|
"build": "tsc",
|
|
"typecheck": "tsc --noEmit",
|
|
"start": "ts-node ./src/index.ts",
|
|
"start-no-typecheck": "ts-node --transpileOnly ./src/index.ts",
|
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
},
|
|
"dependencies": {
|
|
"@fastify/cors": "^8.1.0",
|
|
"@hasura/dc-api-types": "0.30.0",
|
|
"fastify": "^4.13.0",
|
|
"mathjs": "^11.0.0",
|
|
"pino-pretty": "^8.0.0",
|
|
"xml2js": "github:Leonidas-from-XIV/node-xml2js"
|
|
},
|
|
"devDependencies": {
|
|
"@tsconfig/node16": "^1.0.3",
|
|
"@types/node": "^16.11.49",
|
|
"@types/xml2js": "^0.4.11",
|
|
"ts-node": "^10.9.1",
|
|
"typescript": "^4.7.4"
|
|
}
|
|
}
|