graphql-engine/v3/ci.docker-compose.yaml
Daniel Chambers f255b5e48a Nested relationships: Refactor capabilities, add engine test, fix docker compose engine metadata (#1341)
### What
This PR does three related things:
* Adds an execution test that tests that nested relationships work in
field selection in Postgres (taken from #935)
* Refactors the way capabilities are handled in metadata resolve to
account for difference between NDC 0.1.x and 0.2.x. Specifically, NDC
0.1.x connectors are assumed to support nested relationships in field
selection, but do not support them in filtering and ordering. Whereas in
NDC 0.2.x, a capability exists to indicate nested relationship support,
but then you must support them in filtering and ordering as well as
field selection.
* Updates the metadata used in the default docker compose so that it:
    * uses an up to date pg schema
    * uses BooleanExpressionType instead of ObjectBooleanExpression
    * removes commands that do not exist on the pg connector
* adds the Institutions model so that nested relationships can be tested

This PR does not add support for nested relationships in filtering or in
ordering. It also does not block nested relationships in field selection
for NDC 0.2.x connectors that do not support it. This will all come in
later PRs.

### How

In `metadata_resolve`, the resolved `DataConnector` used to contain a
copy of the `ndc_models::Capabilities`. This has been removed and
instead a `metadata_resolve` specific `DataConnectorCapabilities`
structure is used instead. This decouples `metadata_resolve` from
`ndc_models` and allows it to capture differences between NDC 0.1.x and
0.2.x properly.

There is now a specific function per NDC version that creates a
`DataConnectorCapabilities`. This removes the need for capabilities
migration code.

V3_GIT_ORIGIN_REV_ID: 0eb119aab0e5fa22977d84820025f75c6102036d
2024-11-13 12:28:29 +00:00

62 lines
1.5 KiB
YAML

name: v3-engine-tests
services:
postgres:
extends:
file: ./docker-compose.yaml
service: postgres
postgres_connector:
image: ghcr.io/hasura/ndc-postgres:dev-main
ports:
- 8080:8080
environment:
CONNECTION_URI: "postgresql://postgres:password@postgres"
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: "http://jaeger:4317"
OTEL_SERVICE_NAME: "ndc-postgres"
RUST_LOG: info
volumes:
- type: bind
source: ./crates/engine/tests/ndc-postgres-configuration
target: /etc/connector
read_only: true
depends_on:
postgres:
condition: service_healthy
custom_connector:
build:
dockerfile: custom-connector.Dockerfile
entrypoint:
- ./bin/custom-connector
ports:
- "8102:8102"
environment:
RUST_LOG: info
healthcheck:
test: curl -fsS http://localhost:8102/schema
start_period: 5s
interval: 5s
timeout: 10s
retries: 20
custom_connector_ndc_v01:
# This is the v3-engine commit version before the custom connector got upgraded to ndc_models v0.2.0
image: ghcr.io/hasura/v3-custom-connector:bef8a750ca31b067952247ad348683a4faa843f5
ports:
- "8101:8101"
environment:
RUST_LOG: info
# Required to test graphql-ws; subscriptions with custom session variables
auth_hook:
build:
dockerfile: dev-auth-webhook.Dockerfile
environment:
RUST_LOG: debug
ports:
- "3050:3050"
volumes:
postgres: