edgedb / edgedb-rust

The official Rust binding for EdgeDB
https://edgedb.com
Apache License 2.0
209 stars 26 forks source link

Error messages should provide better context #282

Open XAMPPRocky opened 9 months ago

XAMPPRocky commented 9 months ago

Edgedb's error messages can be quite unintuitive about what is needed to fix the error, what the error is, and it should include more information about the invalid query, and the errors should provide more actionable information for the user.

Some generic information that would be useful for all errors.

Examples of unituitive errors:

This error is something to do with not referencing any inner property in a link property.

index out of bounds: the len is 1 but the index is 1

This error is caused when you're missing a field OR the field list in the query doesn't match the order of the Queryable struct, which is incredibly user-hostile, because you're only going to realise that's the problem through trial and error.

DescriptorMismatch

Caused by:
    unexpected field id, expected name

References the query instead of the code.

InvalidReferenceError: object type 'default::PendingSaga' has no link or property 'name' (on line 1, column 26)
MrFoxPro commented 4 months ago

Yeah I found it's very hard to understand what's goind wrong. Just placing #[tracing::instrument(err, skip_all)] before fn encode(&self, buf: &mut BytesMut, val: &Value) helped tremendously understand what's going on. I can add PR with this annotations on most major functions, what do you think? @raddevon