graphql-engine/server/src-lib/Hasura/Backends/BigQuery
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
..
DDL server/bigquery: generate graphql schema for table computed fields 2022-05-25 10:25:38 +00:00
Instances Remove circular dependency in schema building code 2022-05-27 17:22:38 +00:00
Connection.hs server/bigquery: improve throwing upstream exceptions 2022-03-30 13:54:18 +00:00
DDL.hs server: naming conventions for auto generated fields 2022-05-26 11:55:29 +00:00
Execute.hs server/bigquery: improve throwing upstream exceptions 2022-03-30 13:54:18 +00:00
FromIr.hs server/bigquery: generate graphql schema for table computed fields 2022-05-25 10:25:38 +00:00
Meta.hs server/bigquery: generate graphql schema for table computed fields 2022-05-25 10:25:38 +00:00
Plan.hs simplification of generalized joins execution 2021-12-07 13:12:57 +00:00
Source.hs Yeet some default-extensions 2022-03-16 00:40:17 +00:00
ToQuery.hs BigQuery operators: like/nlike, geography 2022-01-18 13:37:12 +00:00
Types.hs server/bigquery: generate graphql schema for table computed fields 2022-05-25 10:25:38 +00:00