graphql-engine/server/src-lib/Hasura/Backends/MSSQL
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 Fix a /= [] and add hint. 2022-05-27 12:28:24 +00:00
Execute server/mssql: drop the temp table after delete 2022-05-26 15:21:54 +00:00
FromIr replace SQLOperator with ScalarSelectionArguments 2022-05-03 09:00:01 +00:00
Instances Remove circular dependency in schema building code 2022-05-27 17:22:38 +00:00
Schema Remove circular dependency in schema building code 2022-05-27 17:22:38 +00:00
SQL Remove RQL/Types.hs 2022-04-27 13:58:47 +00:00
Types server: naming conventions for auto generated fields 2022-05-26 11:55:29 +00:00
Connection.hs server/MSSQL: Event Delivery System (Incremental PR - 3) 2022-04-21 07:20:34 +00:00
DDL.hs server: naming conventions for auto generated fields 2022-05-26 11:55:29 +00:00
FromIr.hs Tidy up MSSQL.FromIr 2022-03-10 10:34:52 +00:00
Meta.hs Make ForeignKey mappings non-empty 2022-05-10 15:44:46 +00:00
Plan.hs Add unless/when related hints 2022-05-27 13:34:42 +00:00
ToQuery.hs server/postgres + server/mssql: Insert empty objects with default values 2022-05-11 16:01:57 +00:00
Types.hs Add docstrings to the module headers of a few selected mssql modules 2022-01-03 17:17:18 +00:00