Commit Graph

4239 Commits

Author SHA1 Message Date
Rikin Kachhia
bdd76adc74 console: remove need for clicking Modify before editing remote schema
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4092
Co-authored-by: hasura-bot <30118761+hasura-bot@users.noreply.github.com>
GitOrigin-RevId: b318e4d8f7c3d94a4b0aa5b55db9847e66cb6004
2022-04-05 06:06:20 +00:00
Vijay Prasanna
d850086479 console: add RS-to-DB (only postgres & citus) relationships feature to remote schemas tab [CON-96]
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4123
Co-authored-by: Varun Choudhary <68095256+Varun-Choudhary@users.noreply.github.com>
GitOrigin-RevId: 23c897b33d9051046ecf8a8837489318dd822c20
2022-04-04 19:37:16 +00:00
Gil Mizrahi
b145203345 tests-hspec: use forFinally_ in teardown
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4148
GitOrigin-RevId: 60eb54dd2864d640cfb7d113329dc358bb81a7bd
2022-04-04 14:46:09 +00:00
Auke Booij
3833aaaba9 server: simplify interpretation of concrete monads into abstract arrows
During the preparation of [my talk on monad interpretation](https://www.youtube.com/watch?v=cRh56LGzwas), I realized that the interpretation technique is not lawful for monad transformers in general. This fixes that, while also simplifying the approach a little bit.

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4134
GitOrigin-RevId: 7296a44185e6a87a81ac7efcdd9c7bdd9665a4e3
2022-04-04 12:36:35 +00:00
Antoine Leblanc
b4f7e96665 Rewrite GraphQL.Analysis
### Motivation

While we strive to write clear code, we have historically struggled at Hasura with having very different styles and standards across the codebase. There's been efforts to standardize our coding style, we have an official styleguide that isn't maintained as closely as it should... We still have some work in front of us.

However, in the last ~year or so, there's been a huge push towards incrementally improving the situation. As part of this we've been blocking PRs that don't add enough comments, or don't improve the files that they touch.

While looking at `Hasura.GraphQL.Analyse`, it became apparent that this file did not meet the engineering standards that I would expect to see addressed during a code review. Some ways in which I think it falls short:
- lack of documentation
- no clear distinction between public / internal components
- "unidiomatic" Haskell code (such as using `Either Result Error`)

While there's no problem with a file looking like this during development, those issues should have been caught at review time. The fact that they weren't indicates a problem in our process that we will need to address: code quality and maintainability is paramount, and we all need to do our part.

### Description

This PR rewrites all of `Hasura.GraphQL.Analyze`, and adapts `Hasura.Server.OpenAPI` accordingly where needed. I've attempted to clarify names and add documentation based on my understanding of the code, and to clean what was unused (such as field variables). I don't think this PR is good enough as is, and I welcome criticism where I got my comments wrong / am happy to help y'all add more.

This PR makes one small change in the way error messages are reported (and adjusts the corresponding test accordingly); each error message is now prefixed with the path within the selection set:
```
⚠️ $.test.foo.bar.baz.mizpelled: field 'mizpelled' not found in object 'Baz'
```

### Note

This PR is currently **on top of #3962**. You can preview the changes in isolation by [diffing the branches](https://github.com/hasura/graphql-engine-mono/compare/nicuveo/clean-rest-endpoint-inconsistency-check..nicuveo/rewrite-analysis).

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/3963
Co-authored-by: paritosh-08 <85472423+paritosh-08@users.noreply.github.com>
GitOrigin-RevId: 5ec38e0e753f0c12096a350db0737658495e2f15
2022-04-04 05:54:59 +00:00
Robert
cabcc22d5f ci: disable numeric underscore hlint warning
This suggests to e.g. reformat a port number as 8_001 which is
a bad idea.

See e.g. here: https://github.com/hasura/graphql-engine-mono/pull/4082/files

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4140
GitOrigin-RevId: 655d09bd439847e3a5021af787183f95b0b84975
2022-04-01 15:42:08 +00:00
Vijay Prasanna
5e050d2db6 console: add RS-to-DB form widget [CON-110]
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4085
Co-authored-by: Varun Choudhary <68095256+Varun-Choudhary@users.noreply.github.com>
GitOrigin-RevId: d2c4ae15e539e71eba13b3cc4098638c2c98dcae
2022-04-01 12:17:04 +00:00
Tirumarai Selvan
4b9cbe9cc5 docs: add examples to depth limits
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4098
GitOrigin-RevId: 92f0e1565d1720442bcf8b930f9033e5d515549f
2022-04-01 10:44:04 +00:00
Karthikeyan Chinnakonda
330f9b6e26 server: drop the dropping trigger logic while creating/recreating an event trigger
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4101
GitOrigin-RevId: 12a2736e4d88dfb8379cd54f4beaedac32795d7d
2022-04-01 10:39:35 +00:00
jkachmar
4189122a3d server: Remove unused server tests
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4032
Co-authored-by: Vishnu Bharathi <4211715+scriptnull@users.noreply.github.com>
GitOrigin-RevId: 7d482d258b16891418d6f48b0a0193dbbe4dfe4c
2022-04-01 09:38:54 +00:00
Rakesh Emmadi
546f4994b6 server/gardening: rename IR insert mutation types
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4116
GitOrigin-RevId: ca3dd951dff7ee840eb3787900fcc32ada7d8879
2022-04-01 06:44:08 +00:00
Sooraj
f6aa0216fd console: RS to RS widget UI changes
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4088
Co-authored-by: Matt Hardman <28978422+mattshardman@users.noreply.github.com>
Co-authored-by: Abhijeet Khangarot <26903230+abhi40308@users.noreply.github.com>
GitOrigin-RevId: 35f41ad826f5b5382aa60874502c1ec2556c9441
2022-04-01 05:41:55 +00:00
Daniel Chambers
a70e4979ee Moved GDW API types into their own internal lib
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4120
GitOrigin-RevId: e7688fdc5a5621c0b760c9169ebf61ce2aea4913
2022-04-01 01:21:29 +00:00
Aravind K P
e46777b7ea cli: fix formatting errors in query collection metadata
closes https://github.com/hasura/graphql-engine/issues/7616
closes https://github.com/hasura/graphql-engine/issues/8205

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/3955
GitOrigin-RevId: dc97e23e78d522cb7ac4d57ad825526eaa90a4de
2022-03-31 14:02:49 +00:00
Rikin Kachhia
127bdcdf5c console: enable mssql aggregation query permissions
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4125
GitOrigin-RevId: c57c1f6cff409033ec8e73297ddcc8235cf71d52
2022-03-31 12:39:19 +00:00
Vishnu Bharathi
7930dc048d ci: patch base images for security updates
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4121
GitOrigin-RevId: e021c22d0647440b5afefa65dbbedf6e201cd17f
2022-03-31 10:47:33 +00:00
Aravind K P
649ef41e3c cli: fix remote schema formatting errors in metadata
closes https://github.com/hasura/graphql-engine/issues/7608
closes https://github.com/hasura/graphql-engine/issues/7459

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/3951
GitOrigin-RevId: bad3505c79fab10453580a6a43ad7e71bc2d3753
2022-03-31 08:28:30 +00:00
Divi
0baef156df ci: create a server test mode for PR builds
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/3812
Co-authored-by: Vishnu Bharathi <4211715+scriptnull@users.noreply.github.com>
GitOrigin-RevId: 5ea09770984c20af5e443f7be127ca89df513456
2022-03-31 05:48:54 +00:00
David Overton
44577dab1b Add ToSchema instances to GDW API types
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4006
Co-authored-by: Daniel Chambers <1214352+daniel-chambers@users.noreply.github.com>
GitOrigin-RevId: 756ca0ed60865d0eb675562e8959f0d1839f9abe
2022-03-31 04:46:08 +00:00
Sai Krishna Prasad Kandula
c9d791bfd1 docs: Docusaurus after live changes/updates/fixes
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4093
GitOrigin-RevId: f7d57df2ed92cb3c7fcf1d6d6bebd5a1a07454d1
2022-03-30 16:38:17 +00:00
Evie Ciobanu
0572c072db server: document how to enable logging in hspec tests
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4115
GitOrigin-RevId: c43194976cf0d929b6e9160a6a4928eaf98d3a51
2022-03-30 15:50:27 +00:00
Rakesh Emmadi
22a5ebf287 server/bigquery: improve throwing upstream exceptions
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4095
GitOrigin-RevId: e19ffe058aaffa1cfa8d155f2e3a6ecafd6aab13
2022-03-30 13:54:18 +00:00
Vishnu Bharathi
a3c707b718 ci: tag release v2.4.0 and v2.5.0-beta.1
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4106
GitOrigin-RevId: 83594358cf511e7b5e1cd7d48a28e3e397a20682
2022-03-30 07:33:44 +00:00
Abhijeet Khangarot
c066fed060 console: add remote schema type selector component [CON-111]
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4090
GitOrigin-RevId: 97081d564933dc11ff4b71bd49e5f54af4511d73
2022-03-30 07:00:49 +00:00
Rikin Kachhia
cb75226cf1 update changelog for v2.5.0-beta
<!-- Thank you for ss in the Title above ^ -->

## Description ✍️
<!-- Please fill this se-->
<!-- Describe the changes from a user's perspective -->

update changelog

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4099
Co-authored-by: Tirumarai Selvan <8663570+tirumaraiselvan@users.noreply.github.com>
GitOrigin-RevId: 5ac6a6bd36f2d0ebf7bd6873a0ea1d297fb92fe1
2022-03-30 04:03:19 +00:00
Varun Choudhary
0730eca6d8 CON-74-add-a-remote-schema-remote-database-radio-card-picker
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4081
GitOrigin-RevId: 6f169707420504d35395bd2af7552d4b4d4b2d1a
2022-03-29 17:04:38 +00:00
Abhijeet Khangarot
5e014d051c console: fix css import for AntD Tree
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4084
GitOrigin-RevId: 16d57317b4b83713240c538249fae4f757f48405
2022-03-29 11:12:12 +00:00
Daniel Chambers
5873429e54 console: Improved computed field comment support [CON-94]
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/3946
Co-authored-by: Sooraj <8408875+soorajshankar@users.noreply.github.com>
Co-authored-by: Varun Choudhary <68095256+Varun-Choudhary@users.noreply.github.com>
Co-authored-by: Vishnu Bharathi <4211715+scriptnull@users.noreply.github.com>
GitOrigin-RevId: dfedf0f76c008b958630f66b58a59530e567a23d
2022-03-29 09:21:28 +00:00
hasura-bot
4bba04d0f6 docs: migrate to docusaurus
GITHUB_PR_NUMBER: 8048
GITHUB_PR_URL: https://github.com/hasura/graphql-engine/pull/8048

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/3395
Co-authored-by: Sai Krishna Prasad Kandula <22497932+KRRISH96@users.noreply.github.com>
Co-authored-by: Vishnu Bharathi <4211715+scriptnull@users.noreply.github.com>
Co-authored-by: Rikin Kachhia <54616969+rikinsk@users.noreply.github.com>
GitOrigin-RevId: 43019ef28a72561ba78a3cac9c783ccaa125e3f6
2022-03-28 09:13:31 +00:00
Matt Hardman
7d8a794821 CON-104-add-a-remote-database-widget
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4053
Co-authored-by: Alberto Francesco Motta <36401353+afmotta@users.noreply.github.com>
Co-authored-by: Abhijeet Khangarot <26903230+abhi40308@users.noreply.github.com>
Co-authored-by: Vijay Prasanna <11921040+vijayprasanna13@users.noreply.github.com>
GitOrigin-RevId: 62137ef7350f7234ace4391ad724b5860f753100
2022-03-25 12:26:11 +00:00
Vijay Prasanna
9ba1e3993e console: Fix REST live preview malformed request
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4005
GitOrigin-RevId: 0c16c3804a047061f3a798f48024161c07323c48
2022-03-25 09:56:06 +00:00
Abhijeet Khangarot
628af0db19 console: handle console crash on action relationships with scalar output type
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4028
GitOrigin-RevId: 33eb02569cd1258495ae7703c67fa2183a082af1
2022-03-25 06:25:30 +00:00
Varun Choudhary
3879e65e7d console: add relationships tab on remote schema [CON-58]
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/3852
Co-authored-by: Vijay Prasanna <11921040+vijayprasanna13@users.noreply.github.com>
GitOrigin-RevId: 275df81b75cf3db255b25a8adf2c1e7df9e31ded
2022-03-24 22:16:01 +00:00
Divya Bhushan
4f2fb51fbc docs: add console/cli workflows on remote source relationships page
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/3670
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Rikin Kachhia <54616969+rikinsk@users.noreply.github.com>
GitOrigin-RevId: 3c2315fb90896e3780476d14e224ed868e572d04
2022-03-24 15:05:53 +00:00
Divya Bhushan
d4d5e3d50a docs: REST connectors for Event Triggers
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/3606
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Rikin Kachhia <54616969+rikinsk@users.noreply.github.com>
GitOrigin-RevId: e95567a316e088245d55044194260784136e3b6d
2022-03-24 12:34:19 +00:00
Puru Gupta
6ad050a29c multitenant: fix concurrent metadata init (closes #3819)
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/3983
GitOrigin-RevId: 6fa30a68b1f3d450e9da7b722b9e4938c71e7091
2022-03-24 11:51:59 +00:00
Sooraj
df23bdb5f0 console: redirect to metadata status page on conflicting inherited role [CON-95]
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4063
Co-authored-by: Vijay Prasanna <11921040+vijayprasanna13@users.noreply.github.com>
GitOrigin-RevId: cdf5f835f9bf641f2f8d8e356403e3bfd2352f5a
2022-03-24 08:15:10 +00:00
Daniel Chambers
cb1722694e console: Support custom comments for root fields
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/3930
Co-authored-by: Martin Mark <74692114+martin-hasura@users.noreply.github.com>
GitOrigin-RevId: 91c71d8ab2c4886b395f5237ca71cace9ec61d1a
2022-03-24 00:30:52 +00:00
jkachmar
adb648b429 server: Rework internal webhook request transform components
## Description

Some of the documentation/organizational changes I was putting into the suggestions for #3624 were a bit too convoluted for GitHub's suggestion interface, so I'm putting them here instead.

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/3910
Co-authored-by: Solomon <24038+solomon-b@users.noreply.github.com>
GitOrigin-RevId: 06e0cb08bd18e7f8b21452df0697cfd80bc56fde
2022-03-23 20:24:44 +00:00
Matt Hardman
69da592c3e CON-32-add-a-remote-schema-relationship-widget
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/3998
Co-authored-by: Alberto Francesco Motta <36401353+afmotta@users.noreply.github.com>
GitOrigin-RevId: 097b6659d2e67bd553209fa7821c45e4dfebf1f0
2022-03-23 19:12:34 +00:00
Vishnu Bharathi
1a60d4f7f4 ci: tag release v2.4.0-beta.3 and v2.4.0-beta.3-pro.1
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4052
Co-authored-by: Tirumarai Selvan <8663570+tirumaraiselvan@users.noreply.github.com>
GitOrigin-RevId: 99c03ed16d624f50bc71cd47417f024c1c7586d9
2022-03-23 11:18:22 +00:00
Alberto Francesco Motta
121f183231 Add Feature Flags section in Settings
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4018
GitOrigin-RevId: 418fe0c10b5f1ce17a984399a3f773a9a76f83ea
2022-03-23 10:57:17 +00:00
Sooraj
e79aa185f9 console: document console development tooling [CON-90]
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/3994
GitOrigin-RevId: 2b4219048c62b480c78ce1547facb2b6da7bf0dc
2022-03-23 05:39:29 +00:00
Vaishnavi
739b1d5223 docs: update cloud heroku integration page
`no-changelog-required`

### Affected components

- [x] Docs

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/2326
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Rishichandra Wawhal <27274869+wawhal@users.noreply.github.com>
Co-authored-by: Rikin Kachhia <54616969+rikinsk@users.noreply.github.com>
GitOrigin-RevId: 7b9308456a74e95e333fd64f137a97428e30ceba
2022-03-22 12:07:59 +00:00
Vishnu Bharathi
fac5e0b2c3 ci: produce ubuntu and centos flavoured graphql-engine images
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/3597
GitOrigin-RevId: f1fded72524f28f41433eea6819276932ee0b5cb
2022-03-22 12:03:25 +00:00
Antoine Leblanc
5920134dcb Decouple Analyse and OpenAPI from remote schema introspection and internal execution details.
### Motivation

#2338 introduced a way to validate REST queries against the metadata after a change, to properly report any inconsistency that would emerge from a change in the underlying structure of our schema. However, the way this was done was quite complex and error-prone. Namely: we would use the generated schema parsers to statically execute an introspection query, similar to the one we use for remote schemas, then parse the resulting bytestring as it were coming from a remote schema.

This led to several issues: the code was using remote schema primitives, and was associated with remote schema code, despite being unrelated, which led to absurd situations like creating fake `Variable`s whose type was also their name. A lot of the code had to deal with the fact that we might fail to re-parse our own schema. Additionally, some of it was dead code, that for some reason GHC did not warn about? But more fundamentally, this architecture decision creates a dependency between unrelated pieces of the engine: modifying the internal processing of root fields or the introspection of remote schemas now risks impacting the unrelated `OpenAPI` feature.

### Description

This PR decouples that process from the remote schema introspection logic and from the execution engine by making `Analyse` and `OpenAPI` work on the generic `G.SchemaIntrospection` instead. To accomplish this, it:
- adds `GraphQL.Parser.Schema.Convert`, to convert from our "live" schema back to a flat `SchemaIntrospection`
- persists in the schema cache the `admin` introspection generated when building the schema, and uses it both for validation and for generating the `OpenAPI`.

### Known issues and limitations

This adds a bit of memory pressure to the engine, as we persist the entire schema in the schema cache. This might be acceptable in the short-term, but we have several potential ideas going forward should this be a problem:
- cache the result of `Analyze`: when it becomes possible to build the `OpenAPI` purely with the result of `Analyze` without any additional schema information, then we could cache that instead, reducing the footprint
- caching the `OpenAPI`: if it doesn't need to change every time the endpoint is queried, then it should be possible to cache the entire `OpenAPI` object instead of the schema
- cache a copy of the `FieldParsers` used to generate the schema: as those are persisted through the GraphQL `Context`, and are the only input required to generate the `Schema`, making them accessible in the schema cache would allow us to have the exact same feature with no additional memory cost, at the price of a slightly slower and more complicated process (need to rebuild the `Schema` every time we query the OpenAPI endpoint)
- cache nothing at all, and rebuild the admin schema from scratch every time.

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/3962
Co-authored-by: paritosh-08 <85472423+paritosh-08@users.noreply.github.com>
GitOrigin-RevId: a8b9808170b231fdf6787983b4a9ed286cde27e0
2022-03-22 07:37:49 +00:00
Philip Lykke Carlsen
23520f67d0 (Fix #8267) Handle subscriptions in MSSQL when results exceed 2048 characters
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/3959
GitOrigin-RevId: ea037c9dc4392d1b98ee086f6c87f79ce8ea5c8f
2022-03-21 12:16:14 +00:00
Karthikeyan Chinnakonda
a13ed140e8 server: refactor the term "live query" to "subscription"
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4001
GitOrigin-RevId: 78a7ff5c88ac3751baa5e2b3ac6ee73b94c50051
2022-03-21 10:40:49 +00:00
Solomon
c81d9f6962 Ignore Use <$> hlint rule
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/3999
GitOrigin-RevId: 07e6653893c6dc146035af947d7a78be7cee6fc1
2022-03-19 00:30:54 +00:00
Nicolas Beaussart
f5fa832d24 Add the hook layer for the feature flags
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4014
Co-authored-by: Abhijeet Khangarot <26903230+abhi40308@users.noreply.github.com>
GitOrigin-RevId: 2acd2d638f0126e6d7dd12a92e086da32caf71a7
2022-03-18 14:43:22 +00:00