graphql-engine/server/src-lib/Hasura
Antoine Leblanc 7aa341944b Remove HasServerConfigCtx from the schema cache build.
## Description

This PR is a incremental step towards achieving the goal of #8344. It is a less ambitious version of #8484.

This PR removes all references to `HasServerConfigCtx` from the cache build and removes `ServerConfigCtx` from `CacheBuildParams`, making `ServerConfigCtx` an argument being passed around manually instead. This has several benefits: by making it an arrow argument, we now properly integrate the fields that change over time in the dependency framework, as they should be, and we can clean up some of the top-level app code.

## Implementation

In practice, this PR introduces a `HasServerConfigCtx` instance for `CacheRWT`, the monad we use to build the cache, so we can retrieve the `ServerConfigCtx` in the implementation of `CacheRWM`. This contributes to reducing the amount of `HasServerConfigCtx` in the code: we can remove `SchemaUpdateT` altogether, and we can remove the `HasServerConfigCtx` instance of `Handler`. This makes `HasServerConfigCtx` almost **an implementation detail of the Metadata API**.

This first step is enough to achieve the goal of #8344: we can now build the schema cache in the app monad, since we no longer rely on `HasServerConfigCtx` to build it.

## Drawbacks

This PR does not attempt to remove the use of `ServerConfigCtx` itself in the schema cache build: doing so would make this PR much much bigger. Ideally, to avoid having all the static fields given as arrow-ish arguments to the cache, we could depend on `HasAppEnv` in the cache build, and use `AppContext` as an arrow argument. But making the cache build depend on the full `AppEnv` and `AppContext` creates a lot of circular imports; and since removing `ServerConfigCtx` itself isn't required to achieve #8344, this PR keeps it wholesale and defers cleaning it to a future PR.

A negative consequence of this is that we need an `Eq` instance on `ServerConfigCtx`, and that instance is inelegant.

## Future work

There are several further steps we can take in parallel after this is merged. First, again, we can make a new version of #8344, removing `CacheBuild`, FINALLY. As for `ServerConfigCtx`, we can split it / rename it to make ad-hoc structures. If it turns out that `ServerConfigCtx` is only ever used for the schema cache build, we could split it between `CacheBuildEnv` and `CacheBuildContext`, which will be subsets of `AppEnv` and `AppContext`, avoiding import loops.

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8509
GitOrigin-RevId: 01b37cc3fd3490d6b117701e22fc4ac88b62b6b5
2023-03-27 17:44:27 +00:00
..
App Remove HasServerConfigCtx from the schema cache build. 2023-03-27 17:44:27 +00:00
Backends Remove HasServerConfigCtx from the schema cache build. 2023-03-27 17:44:27 +00:00
Base server/pro/multitenant: Postgres connection routing using kriti templates 2023-01-25 07:14:31 +00:00
Cache server, pro: actually reformat the code-base using ormolu 2021-09-23 22:57:37 +00:00
CustomReturnType feature(server): ordered columns in Logical Model return type 2023-03-22 16:35:56 +00:00
Eventing server: fix value of created_at for postgres event triggers 2023-03-22 07:32:42 +00:00
GraphQL feature(server): ordered columns in Logical Model return type 2023-03-22 16:35:56 +00:00
LogicalModel feature(server): add SQLServer logical models 2023-03-27 16:56:05 +00:00
Metadata server: codecs for network config, graphql introspection 2023-03-17 17:46:16 +00:00
RemoteSchema chore(server): remove some unused function arguments 2023-03-17 15:51:33 +00:00
RQL Remove HasServerConfigCtx from the schema cache build. 2023-03-27 17:44:27 +00:00
Server Remove HasServerConfigCtx from the schema cache build. 2023-03-27 17:44:27 +00:00
Services harmonize network manager handling 2023-02-22 15:55:54 +00:00
SQL server: plumb StoredIntrospection while building the Schema Cache 2023-01-20 14:52:36 +00:00
Tracing Rewrite Tracing to allow for only one TraceT in the entire stack. 2023-03-13 17:38:39 +00:00
App.hs Remove HasServerConfigCtx from the schema cache build. 2023-03-27 17:44:27 +00:00
CustomReturnType.hs feature(server): ordered columns in Logical Model return type 2023-03-22 16:35:56 +00:00
EncJSON.hs server: plumb StoredIntrospection while building the Schema Cache 2023-01-20 14:52:36 +00:00
GC.hs Upgrade Ormolu to v0.5. 2022-11-02 20:55:13 +00:00
HTTP.hs server: improve logging around 'Internal Exception' errors 2023-03-21 12:00:00 +00:00
Logging.hs chore(server): split new statistics log from QueryLog 2023-03-15 13:06:47 +00:00
Name.hs server/postgres: fix the schema types conflict between aggregation predicates and table selection aggregates 2022-10-21 13:28:43 +00:00
PingSources.hs Fix: Unable to use environment variable for CockroachDB connection string in Cloud 2023-02-14 12:15:58 +00:00
QueryTags.hs add omit_request_id flag 2023-01-31 00:28:50 +00:00
Services.hs harmonize network manager handling 2023-02-22 15:55:54 +00:00
Session.hs server: webhook auth token caching 2023-03-14 18:28:56 +00:00
ShutdownLatch.hs multitenant: make shutdown logic more abstract 2022-11-23 07:53:19 +00:00
Tracing.hs Rewrite Tracing to allow for only one TraceT in the entire stack. 2023-03-13 17:38:39 +00:00