graphql-engine/server/src-test
Antoine Leblanc 498442b1d3 Remove circular dependency in schema building code
### Description

The main goal of this PR is, as stated, to remove the circular dependency in the schema building code. This cycle arises from the existence of remote relationships: when we build the schema for a source A, a remote relationship might force us to jump to the schema of a source B, or some remote schema. As a result, we end up having to do a dispatch from a "leaf" of the schema, similar to the one done at the root. In turn, this forces us to carry along in the schema a lot of information required for that dispatch, AND it forces us to import the instances in scope, creating an import loop.

As discussed in #4489, this PR implements the "dependency injection" solution: we pass to the schema a function to call to do the dispatch, and to get a generated field for a remote relationship. That way, this function can be chosen at the root level, and the leaves need not be aware of the overall context.

This PR grew a bit bigger than that, however; in an attempt to try and remove the `SourceCache` from the schema altogether, it changed a lot of functions across the schema building code, to thread along the `SourceInfo b` of the source being built. This avoids having to do cache lookups within a given source. A few cases remain, such as relay, that we might try to tackle in a subsequent PR.

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4557
GitOrigin-RevId: 9388e48372877520a72a9fd1677005df9f7b2d72
2022-05-27 17:22:38 +00:00
..
Control/Concurrent server: parallelize buildGQLContext to improve replace_metadata perfo… 2022-03-09 02:27:42 +00:00
Data server/tests: add hspec test case to parse legacy remote relationship definition json 2022-04-22 11:34:38 +00:00
Database/MSSQL server/mssql: improve database exception handling and better API errors 2022-02-07 14:12:55 +00:00
Hasura Remove circular dependency in schema building code 2022-05-27 17:22:38 +00:00
Network/HTTP/Client server: add explicit export lists in OSS server and enforce with warning 2021-11-04 16:09:38 +00:00
Test Remove circular dependency in schema building code 2022-05-27 17:22:38 +00:00
Main.hs server: add infrastructure to write runit tests for update parsers 2022-05-26 14:06:24 +00:00