Restore GraphQL schema merge for Relay query text
relay-compiler requires a single schema file: a directory is rejected and schemaExtensions marks fields as client-only, so it emitted text: null and the console posted query: null, getting a 400 on every operation. Restore the merge step (contrib/merge-graphql-schema.sh, the RELAY_SCHEMAS make rules, and the gitignore entry) and point each relay.config.json project back at the merged schema.graphql. The IDE graphql-config removal and npm-script cleanup are unrelated and stay. Signed-off-by: Émile Ré <emile@probo.com>
This commit is contained in:
@@ -41,7 +41,7 @@ Individual codegen is driven by `go generate`:
|
||||
- `go generate ./pkg/server/api/mcp/v1` — MCP (mcpgen)
|
||||
- `go generate ./pkg/llm` — LLM model registry from OpenRouter (`make genmodels`)
|
||||
|
||||
`make relay` runs `relay-compiler`, which reads the split `.graphql` schema files directly (via each project's `schema` + `schemaExtensions` in `relay.config.json`) and keeps generated artifacts in sync (stale ones are removed automatically).
|
||||
`make relay` merges each service's split `.graphql` schema files into a single `schema.graphql` (via `contrib/merge-graphql-schema.sh`) and runs `relay-compiler`. The merge is required: relay-compiler's `schema` must be a single file, and `schemaExtensions` would mark the fields as client-only (emitting `text: null`), so the split files cannot be fed to Relay directly.
|
||||
|
||||
## Coverage
|
||||
|
||||
|
||||
44
contrib/merge-graphql-schema.sh
Executable file
44
contrib/merge-graphql-schema.sh
Executable file
@@ -0,0 +1,44 @@
|
||||
#!/bin/sh
|
||||
# Merge split GraphQL schema files into a single file for Relay.
|
||||
# Strips "type Mutation" and "extend type Mutation { ... }" blocks,
|
||||
# then appends a single "type Mutation { ... }" with all collected fields.
|
||||
#
|
||||
# Usage: merge-graphql-schema.sh <output> <graphql-dir>
|
||||
|
||||
set -eu
|
||||
|
||||
output="$1"
|
||||
graphql_dir="$2"
|
||||
base="$graphql_dir/base.graphql"
|
||||
|
||||
mutation_fields=$(mktemp)
|
||||
schema_body=$(mktemp)
|
||||
trap 'rm -f "$mutation_fields" "$schema_body"' EXIT
|
||||
|
||||
process_file() {
|
||||
awk -v mf="$mutation_fields" '
|
||||
/^type Mutation$/ { next }
|
||||
/^(extend )?type Mutation \{/ { skip=1; depth=1; next }
|
||||
skip {
|
||||
if (/\{/) depth++
|
||||
if (/\}/) { depth--; if (depth==0) { skip=0; next } }
|
||||
if (skip) { print >> mf; next }
|
||||
}
|
||||
{ print }
|
||||
' "$1"
|
||||
}
|
||||
|
||||
{
|
||||
process_file "$base"
|
||||
for f in "$graphql_dir"/*.graphql; do
|
||||
[ "$f" = "$base" ] && continue
|
||||
process_file "$f"
|
||||
done
|
||||
} > "$schema_body"
|
||||
|
||||
{
|
||||
cat "$schema_body"
|
||||
printf '\ntype Mutation {\n'
|
||||
cat "$mutation_fields"
|
||||
printf '}\n'
|
||||
} > "$output"
|
||||
Reference in New Issue
Block a user