You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
⚠️ This issue is generated, it means the examples and the namings do not necessarily correspond to the language of this repository.
Also, if you are a maintainer, please add any clarification and instructions about this issue.
Sorry if this is already wholly/partially implemented. Feel free to let me know about the state of this issue in the repo.
All the errors > 400 without message should be sent as MeilisearchCommunicationError
Know errors like index is not found, or mistakes in the request like not-allowed params should be sent as MeilisearchApiError
Any other error should be a MeilisearchError
Essentially all the error should extend from MeilisearchError, the consumers should have a way to catch all the errors.
Let us know if this is not clear, or you have better idea!
TODO:
Create a base error called MeilisearchError which will extend the standard error if it does not exist (when the language supports)
Make all the other errors extend this error.
Move all errors without message to MeilisearchCommunicationError since it is not a Meilisearch error anyway.
The text was updated successfully, but these errors were encountered:
[ ] Create a base error called MeilisearchError which will extend the standard error if it does not exist (when the language supports)
[ ] Make all the other errors extend this error.
Hey, I’m just adding a little clarification on these two lines. In rust we don’t extend things since we're not using inheritance but composition.
However, for error handling, we usually don’t use oop and use our algebraic data type, the enums.
Since we're already using thiserror the pattern we should follow is:
#[derive(thiserror::Error)]pubenumMeilisearchError{MeilisearchCommunicationError,MeilisearchApiError(#[from] ...),// here you should create a type that receives the meilisearch errorsMeilisearchError(Box<dynError>),// shove everything else in here if it implements the error trait.}
Or sometimes, instead of having a generic Box<dyn Error> that can break easily and is hard to pattern match, people return the error received. That's what we're currently doing, I believe.
This let our final user pattern match on the error we returned and react accordingly. (i.e.: If you see a serde error saying it can't deserialize your type, then you know it's an internal error on your side and not on meilisearch because it just uses serde).
Also, if you are a maintainer, please add any clarification and instructions about this issue.
Sorry if this is already wholly/partially implemented. Feel free to let me know about the state of this issue in the repo.
Related to meilisearch/integration-guides#267
Ensure this SDK follows the following guidelines:
MeilisearchCommunicationError
MeilisearchApiError
MeilisearchError
Essentially all the error should extend from
MeilisearchError
, the consumers should have a way to catch all the errors.Let us know if this is not clear, or you have better idea!
TODO:
MeilisearchError
which will extend the standard error if it does not exist (when the language supports)MeilisearchCommunicationError
since it is not a Meilisearch error anyway.The text was updated successfully, but these errors were encountered: