graphql-engine/server/src-lib/Hasura/GraphQL
Auke Booij 83ea4a254d server: plumb StoredIntrospection while building the Schema Cache
We'd like to be able to build a Schema Cache from only serializable data. We already have Metadata. The data that's missing to build a Schema Cache is referred to as "stored introspection", and this includes:
- DB introspection
- User-defined enum values (i.e. contents of specific DB tables)
- Remote schema introspection

This PR introduces a new `StoredIntrospection` container that holds that data, and plumbs it through to the right parts of the schema cache building process, so that stored introspection can be used as a substitute for fresh introspection requests against live data sources.

The serialization of `StoredIntrospection` is intended to be straightforward: just take the serialized source introspection results, and put them in an appropriate JSON object. Though I don't think that this PR achieves that entirely.

In order for `StoredIntrospection` to be deserializable (through `aeson` instances), while keeping the required code changes low, this piggy-backs off of the `ResolvedSource` data type. `ResolvedSource` is _almost_ exactly what we want, and _almost_ deserializable, so this PR brings it across the finish line by moving a few things out of that type, and adding a `FromJSON (RawFunctionInfo b)` context to the `Backend` type class.

[PLAT-270]: https://hasurahq.atlassian.net/browse/PLAT-270?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
[PLAT-270]: https://hasurahq.atlassian.net/browse/PLAT-270?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
[PLAT-276]: https://hasurahq.atlassian.net/browse/PLAT-276?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
[PLAT-276]: https://hasurahq.atlassian.net/browse/PLAT-276?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/7053
GitOrigin-RevId: 5001b4ea086195cb5e65886747eac2a0a657b64c
2023-01-20 14:52:36 +00:00
..
Execute server: add kind field to livequery-poller-log (GS-329) 2023-01-17 13:55:16 +00:00
Schema Implement Schema Parsers for Native Query Interface 2023-01-19 11:27:24 +00:00
Transport server: replicate log-based data transfer metrics as prometheus metrics 2022-12-28 03:49:33 +00:00
Analyse.hs Upgrade Ormolu to v0.5. 2022-11-02 20:55:13 +00:00
ApolloFederation.hs server: remove built-in scalars from graphql schema printer 2022-11-10 18:53:05 +00:00
Context.hs server: runParse returns QErr 2022-06-16 12:22:30 +00:00
Execute.hs server: replicate log-based data transfer metrics as prometheus metrics 2022-12-28 03:49:33 +00:00
Explain.hs server: support for Apollo federation 2022-07-25 15:54:41 +00:00
Logging.hs Source typename customization (close graphql-engine#6974) 2021-10-29 14:43:14 +00:00
Namespace.hs Move MkTypename and NamingCase into their own modules. 2022-07-12 14:01:28 +00:00
ParameterizedQueryHash.hs Implement HLint suggestions and turn warnings into errors 2022-07-01 10:50:33 +00:00
RemoteServer.hs server: plumb StoredIntrospection while building the Schema Cache 2023-01-20 14:52:36 +00:00
Schema.hs Implement Schema Parsers for Native Query Interface 2023-01-19 11:27:24 +00:00