feat: add UUID validation so errors are raised earlier #652
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Previously if a user submitted a query, passing an invalid UUID value such as
"undefined"
or"27"
, we would pass this through to Postgres as a string, and have Postgres cast it to UUID, which fails at runtime, causing the entire SQL query to fail within the database. This may cause GraphQL clients to make invalid assumptions about the data since the error occurs at the root field rather than the nested field, potentially triggering a client to update their cache to say that root field is invalid.This PR solves this by making sure that we'd expect PostgreSQL to be able to coerce the value to UUID before actually passing it to PostgreSQL, throwing a scalar coercion error otherwise and not allowing the query to reach the database.
Fixes #644